3

我需要生成一个包含最小和最大纬度和经度值的边界框,以便我可以返回给定半径内的地址。

我在下面有两个 func<> 来返回我需要 +/- 到 lon lat 坐标的范围,以建立边界框。但是我不认为数学是100%

我正在使用 Haversine 公式来生成我的距离计算,这似乎工作正常。我也研究了 Vincenty 的距离公式,但出于我的需要,这太过分了。

我的问题是我希望我的搜索结果与Haversine 一样准确,因为I +/- 到经纬度坐标的范围考虑了椭球曲率或地球。

好的,这是我的 func<> 的...请注意我不是数学教授 :o)

static Func<double, int, double> GetLatitudeRange = (latitude, distance) => (180.0 / Math.PI) * (distance / EARTH_RADIUS_IN_KM);


static Func<double, double, int, double> GetLongitudeRange = (longitude, latitude, distance) =>
            (
                Math.Asin(
                    Math.Sin(distance / EARTH_RADIUS_IN_KM) / Math.Cos(latitude)
                    )
            );
4

1 回答 1

-1

看看邮政编码世界

于 2011-02-08T02:40:35.990 回答