コード例 #1
0
//        /// <summary>
//        /// Returns an estimate of the distance between the given sequence of coordinates.
//        /// </summary>
//        public static double DistanceEstimateInMeter(System.Collections.Generic.List<Coordinate> coordinates)
//        {
//            var length = 0.0;
//            for(var i = 1; i < coordinates.Count; i++)
//            {
//                length += Coordinate.DistanceEstimateInMeter(coordinates[i - 1].Latitude, coordinates[i - 1].Longitude,
//                    coordinates[i].Latitude, coordinates[i].Longitude);
//            }
//            return length;
//        }

        /// <summary>
        /// Offsets this coordinate with a given distance.
        /// </summary>
        public Coordinate OffsetWithDistances(double meter)
        {
            var offsetLat   = new Coordinate(this.Longitude, this.Latitude + 0.1);
            var offsetLon   = new Coordinate(this.Longitude + 0.1, this.Latitude);
            var latDistance = Coordinate.DistanceEstimateInMeter(offsetLat, this);
            var lonDistance = Coordinate.DistanceEstimateInMeter(offsetLon, this);

            return(new Coordinate(this.Longitude + (meter / lonDistance) * 0.1,
                                  this.Latitude + (meter / latDistance) * 0.1));
        }
コード例 #2
0
ファイル: Coordinate.cs プロジェクト: amseet/Orion
        /// <summary>
        /// Returns an estimate of the distance between the given sequence of coordinates.
        /// </summary>
        public static float DistanceEstimateInMeter(System.Collections.Generic.List <Coordinate> coordinates)
        {
            var length = 0f;

            for (var i = 1; i < coordinates.Count; i++)
            {
                length += Coordinate.DistanceEstimateInMeter(coordinates[i - 1].Latitude, coordinates[i - 1].Longitude,
                                                             coordinates[i].Latitude, coordinates[i].Longitude);
            }
            return(length);
        }
コード例 #3
0
        /// <summary>
        /// Creates a box around this coordinate with width/height approximately the given size in meter.
        /// </summary>
        /// <param name="size">The size in meter.</param>
        /// <returns>The size in meter.</returns>
        public Box BoxAround(double size)
        {
            var offsetLat   = new Coordinate(this.Longitude, this.Latitude + 0.1);
            var offsetLon   = new Coordinate(this.Longitude + 0.1, this.Latitude);
            var latDistance = Coordinate.DistanceEstimateInMeter(offsetLat, this);
            var lonDistance = Coordinate.DistanceEstimateInMeter(offsetLon, this);

            return(new Box(this.Longitude - (size / lonDistance) * 0.1,
                           this.Latitude - (size / latDistance) * 0.1,
                           this.Longitude + (size / lonDistance) * 0.1,
                           this.Latitude + (size / latDistance) * 0.1));
        }
コード例 #4
0
ファイル: Coordinate.cs プロジェクト: amseet/Orion
 /// <summary>
 /// Returns an estimate of the distance between the two given coordinates.
 /// </summary>
 /// <remarks>Accuraccy decreases with distance.</remarks>
 public static float DistanceEstimateInMeter(Coordinate coordinate1, Coordinate coordinate2)
 {
     return(Coordinate.DistanceEstimateInMeter(coordinate1.Latitude, coordinate1.Longitude,
                                               coordinate2.Latitude, coordinate2.Longitude));
 }
コード例 #5
0
ファイル: Extensions.cs プロジェクト: amseet/Orion
 /// <summary>
 /// Returns the location between the two coordinates at the given offset distance in meter.
 /// </summary>
 /// <param name="coordinate1">The first coordinate.</param>
 /// <param name="coordinate2">The second coordinate.</param>
 /// <param name="offset">The offset in meter starting at coordinate1.</param>
 /// <returns></returns>
 public static Coordinate LocationAfterDistance(Coordinate coordinate1, Coordinate coordinate2, float offset)
 {
     return(LocationAfterDistance(coordinate1, coordinate2, Coordinate.DistanceEstimateInMeter(coordinate1, coordinate2),
                                  offset));
 }