예제 #1
0
        private double QueryEarthtoolsElevation(AXPoint point)
        {
            var altitude = 0.0;
            var template = "http://www.earthtools.org/height/{0}/{1}";

            var llPos = new UtmCoordinates(Datum.WGS84, Engine.Settings.UtmZone, point.Easting, point.Northing, 0).ToLatLon(Datum.WGS84);
            var url   = string.Format(NumberFormatInfo.InvariantInfo, template, llPos.Latitude.Degrees, llPos.Longitude.Degrees);

            try
            {
                var wCli = new WebClient()
                {
                    Encoding = Encoding.UTF8,
                };
                var XMLstr = wCli.DownloadString(url);
                var xml    = XElement.Parse(XMLstr);
                altitude = double.Parse(xml.Descendants(XName.Get("meters")).First().Value, NumberFormatInfo.InvariantInfo);
            }
            catch
            {
                AddNote(string.Format("could not retrieve ground elevation, using 0m MSL"), true);
            }

            return(altitude);
        }
예제 #2
0
        private double QueryGoogleElevation(AXPoint point)
        {
            var altitude = 0.0;
            var template = "http://maps.googleapis.com/maps/api/elevation/xml?locations={0},{1}&sensor=true";

            var llPos = new UtmCoordinates(Datum.WGS84, Engine.Settings.UtmZone, point.Easting, point.Northing, 0).ToLatLon(Datum.WGS84);
            var url   = string.Format(NumberFormatInfo.InvariantInfo, template, llPos.Latitude.Degrees, llPos.Longitude.Degrees);

            try
            {
                var wCli = new WebClient()
                {
                    Encoding = Encoding.UTF8,
                };
                var XMLstr = wCli.DownloadString(url);
                var xml    = XElement.Parse(XMLstr);
                altitude = double.Parse(xml.Descendants(XName.Get("elevation")).First().Value, NumberFormatInfo.InvariantInfo);
            }
            catch
            {
                AddNote(string.Format("could not retrieve ground elevation, using 0m MSL"), true);
            }

            return(altitude);
        }
예제 #3
0
        private void buttonCoords_Click(object sender, RoutedEventArgs e)
        {
            var wgs84  = Datum.GetInstance("WGS84");
            var ed50   = Datum.GetInstance("European 1950");
            var osgb36 = Datum.GetInstance("OSGB36");

            Coordinates p1, p2, p3;


            Print("From latlon WGS84 to UTM ED50 and back");
            p1 = new LatLonCoordinates(wgs84, 41.973256, 2.780310, 87.0);
            p2 = p1.ToUtm(ed50);
            p3 = p2.ToLatLon(wgs84);
            Print(p1.ToString());
            Print(p2.ToString());
            Print(p3.ToString());
            Print("");

            Print("From UTM ED50 to UTM WGS84 and back");
            p1 = new UtmCoordinates(ed50, "31T", 365000, 4612000, 56);
            p2 = p1.ToUtm(wgs84);
            p3 = p2.ToUtm(ed50);
            Print(p1.ToString());
            Print(p2.ToString());
            Print(p3.ToString());
            Print("");

            Print("From UTM ED50 (default zone) to UTM ED50 (different zone) and back");
            p1 = new UtmCoordinates(ed50, "31T", 365000, 4612000, 56);
            p2 = p1.ToUtm(ed50, "30T");
            p3 = p2.ToUtm(ed50);
            Print(p1.ToString());
            Print(p2.ToString());
            Print(p3.ToString());
            Print("");
        }