/// <summary> /// 経緯度の位置 a と b の緯度方向の距離を計算する /// </summary> /// <param name="a">経緯度の位置1つめ</param> /// <param name="b">経緯度の位置2つめ</param> /// <param name="llda">経緯度の距離を計算するアルゴリズム</param> /// <param name="planet">楕円体近似した惑星の形状定義; null の場合は <see cref="GeometricalSpecification.Earth_WGS84"/> が採用されます </param> /// <returns>緯度方向の距離</returns> public static Length LatitudeDistanceTo (this ILonLatGettable a , ILonLatGettable b , LonLatDistanceAlgorithm llda = LonLatDistanceAlgorithm.Haversine , IGeometricalSpecificationGettable planet = null ) { var aa = new LonLat(PlaneAngle.Zero, a.Latitude); var bb = new LonLat(PlaneAngle.Zero, b.Latitude); return(aa.DistanceTo(bb, llda, planet)); }
/// <summary> /// 経緯度の位置 a と b の中間の緯度における経度方向の距離を計算する /// </summary> /// <param name="a">経緯度の位置1つめ</param> /// <param name="b">経緯度の位置2つめ</param> /// <param name="llda">経緯度の距離を計算するアルゴリズム</param> /// <param name="planet">楕円体近似した惑星の形状定義; null の場合は <see cref="GeometricalSpecification.Earth_WGS84"/> が採用されます </param> /// <returns>経度方向の距離</returns> public static Length LongitudeDistanceTo (this ILonLatGettable a , ILonLatGettable b , LonLatDistanceAlgorithm llda = LonLatDistanceAlgorithm.Haversine , IGeometricalSpecificationGettable planet = null ) { var alat = (a.Latitude + b.Latitude) / 2.0; var aa = new LonLat(a.Longitude, alat); var bb = new LonLat(b.Longitude, alat); return(aa.DistanceTo(bb, llda, planet)); }