是否可以在不使用地图的情况下计算行驶距离,仅使用经度和纬度?
我正在编写服务器端应用程序,并尝试避免使用Web服务,API和第三方工具。
你能帮助我实现这个目标吗?
答案 0 :(得分:1)
使用您拥有的数据
你可以做一个简单的蝇蛆计算:
sqrt((lat1 - lat2)^2 + (long1 - long2)^2) = distance
您可以进行简单的曼哈顿距离计算:
abs(lat1 - lat2) + abs(long1 - long2) = distance
您可以进行简单的全球距离计算。请参阅:http://www.ehow.com/how_6353104_calculate-between-two-points-globe.html
这些对于某些目的来说足够准确,并且可能足够准确,但不完全准确。
要完全准确,您需要更多数据点。路线图数据或已知路线信息。
答案 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