计算没有地图的行驶距离

时间:2011-05-28 07:06:03

标签: distance routes

是否可以在不使用地图的情况下计算行驶距离,仅使用经度和纬度?

我正在编写服务器端应用程序,并尝试避免使用Web服务,API和第三方工具。

你能帮助我实现这个目标吗?

4 个答案:

答案 0 :(得分:1)

使用您拥有的数据

这些对于某些目的来说足够准确,并且可能足够准确,但不完全准确。

要完全准确,您需要更多数据点。路线图数据或已知路线信息。

使用道路地图数据,您还必须实施路径查找算法。路径查找算法的一些示例是A-starDijikstra

答案 1 :(得分:1)

'hasrsine'公式计算两点之间的大圆距离 - 也就是地球表面的最短距离 - 给出了“ as-the-crow-fly”距离点忽略任何山丘!,曲线,道路,障碍等。

Haversine公式:

R = earth’s radius (mean radius = 6,371km)
Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c 

你也可以研究余弦球面定律

答案 2 :(得分:0)

当您计算行驶距离时,您的应用程序不需要“像乌鸦飞行距离”,因为它是最小距离,但绝对不是驾驶距离。

这里有两种选择。首先,使用网络服务(Google Directions API)并创建自己的图表表示。

您已经切断了第一个选项,因此您需要查看第二个选项。第二个选项是,创建一个具有确切步骤的图形(步骤是方向路线中的一个明显的转弯)并创建一个巨大的本地图形数据库来查询(可能使用OLAP)。这将需要一个非常强大的数据库,我的建议仍然是使用第一个选项,但你也可以打开第二个选项。

答案 3 :(得分:0)

对于美国,您可以随时下载联邦TIGER人口普查地图数据并进行自己的计算。如果你想要驾驶距离,你就无法绕过某种类型的地图数据。

http://arcdata.esri.com/data/tiger2000/tiger_statelayer.cfm?sfips=19