/// <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));
        }