Example #1
0
 public static double ConvertElevation(double elevation, UomElevation to, UomElevation from)
 {
     if (to != from)
     {
         return((to == UomElevation.Meters) ? 1200d / 3937d : 3937d / 1200d);
     }
     return(elevation);
 }
Example #2
0
        public static string ToStringAbv(this UomElevation uomElevation)
        {
            switch (uomElevation)
            {
            case UomElevation.Feet: return("Ft");

            case UomElevation.Meters: return("M");
            }

            return(String.Empty);
        }
        public override bool Parse(String nmea)
        {
            if (base.Parse(nmea))
            {
                IsValid = false;
                String[] tokens = nmea.Substring(0, nmea.IndexOf("*")).Split(',');

                if (tokens.Length > 14 && tokens[1].Length > 0)
                {
                    try
                    {
                        FixTime = DateTime.ParseExact(tokens[1], GGATimeFormatters, CultureInfo.InvariantCulture, DateTimeStyles.None);

                        Latitude = Latitude.fromDecimalDMS(
                            Double.Parse(tokens[2]),
                            GeoSpatialTypes.ParseNorthSouth(tokens[3])
                            );

                        Longitude = Longitude.fromDecimalDMS(
                            Double.Parse(tokens[4]),
                            GeoSpatialTypes.ParseEastWest(tokens[5])
                            );

                        FixQuality = GpsFixTypeExtensions.Parse(tokens[6]);

                        TrackedSatellitesCount = Int32.Parse(tokens[7]);

                        HorizDilution = Double.Parse(tokens[8]);

                        Elevation    = Double.Parse(tokens[9]);
                        UomElevation = GeoSpatialTypes.ParseUomElevation(tokens[10]);

                        GeoidHeight = Double.Parse(tokens[11]);
                        GeoUom      = GeoSpatialTypes.ParseUomElevation(tokens[12]);

                        IsValid = true;
                    }
                    catch
                    {
                        //
                    }
                }
            }

            return(IsValid);
        }
Example #4
0
        public static GeoPosition getMidPioint(List <Double> lats, List <Double> lons, List <Double> elevations, UomElevation uomElevation)
        {
            if (lats == null || lats.Count < 1)
            {
                throw new Exception("No positions to average.");
            }

            if (lats.Count != lons.Count && lats.Count != elevations.Count)
            {
                throw new Exception("Array size Mismatch");
            }

            Double x, y, z, q;

            x = y = z = q = 0.0;

            int size = lats.Count;

            Double lat, lon;

            for (int i = 0; i < size; i++)
            {
                lat = lats[i] * Math.PI / 180.0;
                lon = lons[i] * Math.PI / 180.0;

                x += Math.Cos(lat) * Math.Cos(lon);
                y += Math.Cos(lat) * Math.Sin(lon);
                q += Math.Sin(lat);
                z += elevations[i];
            }

            x /= size;
            y /= size;
            z /= size;
            q /= size;

            lon = Math.Atan2(y, x);
            Double hyp = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2));

            lat = Math.Atan2(q, hyp);

            return(new GeoPosition(lat * 180.0 / Math.PI, lon * 180.0 / Math.PI, z, uomElevation));
        }
 public void SetAndConvertElevation(UomElevation uomElevation)
 {
     Elevation    = GeoTools.ConvertElevation(Elevation, uomElevation, UomElevation);
     UomElevation = uomElevation;
 }
 public void SetUomElevation(UomElevation uomElevation)
 {
     UomElevation = uomElevation;
 }
 public GeoPosition(Latitude latitude, Longitude longitude, double elevation, UomElevation uomElevation)
     : base(latitude, longitude)
 {
     this.Elevation    = elevation;
     this.UomElevation = uomElevation;
 }
 public GeoPosition(double latitude, NorthSouth latDir, double longitude, EastWest lonDir, double elevation, UomElevation uomElevation)
     : base(latitude, latDir, longitude, lonDir)
 {
     this.Elevation    = elevation;
     this.UomElevation = uomElevation;
 }
 public GeoPosition(GeoPosition position) : base(position)
 {
     Elevation    = position.Elevation;
     UomElevation = position.UomElevation;
 }
 public GeoPosition(Position position, double elevation, UomElevation uomElevation) : base(position)
 {
     this.Elevation    = elevation;
     this.UomElevation = uomElevation;
 }