public static double ConvertElevation(double elevation, UomElevation to, UomElevation from) { if (to != from) { return((to == UomElevation.Meters) ? 1200d / 3937d : 3937d / 1200d); } return(elevation); }
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); }
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; }