是否有用于测地拉/长坐标计算的库或框架?

时间:2011-12-25 01:05:31

标签: math geolocation geocoding core-location geography

我正在制作一个核心位置驱动的应用,我必须为给定的纬度/经度对计算很多东西,例如:

  • 与另一个纬度/经度坐标的距离

  • 距离x到y方向时的目标纬度/经度坐标

是否有可以使用的开源软件?

3 个答案:

答案 0 :(得分:4)

由于您使用的是CoreLocation,因此可以使用CoreLocation's distanceFromLocation作为@progrmr指出。

另一方面,由于您指定了开源,并且未开源,您可以按照@MikeT的建议查看GeographicLib实现。

(我的原始答案,暗示了Haversine公式,存在缺陷。正如@MikeT指出的那样,Haversine公式只适用于球体。而且地球不是一个完美的球体。)

原创,有缺陷的答案:

听起来你想要Haversine公式。

Wikipedia page for the Haversine formula解释它是什么,(at the bottom, under "External links")包含许多实现的链接。我没有检查过,但我必须想象至少其中一些是开源项目

答案 1 :(得分:1)

github上有一些C函数从坐标对开始,或者给定开始和标题的目标坐标。您可以使用CLLocation在坐标之间Distance

这些基于余弦球面定律,并源自算法herehere

答案 2 :(得分:1)

GeographicLib已使用多种编程语言实现,包括Java。该库计算旋转椭圆体(或椭球体)上测地线的长度和相关数学特性。计算误差通常在微米范围内。

找到两个坐标之间的距离:

GeodesicData g = Geodesic.WGS84.Inverse(lat1, lon1, lat2, lon2,
                                        GeodesicMask.DISTANCE);

然后得到g.s12两点之间的距离。

使用Direct方法找到问题的第二个示例,即投影给定距离和方向的位置。