如何解决用地图计算行驶距离
| 是否可以仅使用经度和纬度来计算行驶距离而无需使用地图? 我正在编写服务器端应用程序的代码,并尝试避免使用Web服务,API和第三方工具。 您能帮我实现这个目标吗?解决方法
有了数据
您可以进行简单的乌鸦飞行计算:
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
这些对于某些目的足够准确,并且可能对于您的目的足够准确,但是并不完全准确。
为了完全准确,您将需要更多数据点。路线图数据或已知路线信息。
使用路线图数据,您还必须实现寻路算法。路径查找算法的一些示例是A-star和Dijikstra。
, “ haversine”公式可计算两点之间的大圆距离-即地球表面上的最短距离-给出两点之间的“乌鸦飞”距离,而忽略任何山丘,弯道,道路,障碍物等
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
您可能还会研究余弦球定律
, 在计算行驶距离时,您的应用程序不需要“乌鸦飞过距离”,因为它是最小距离,但绝对不是行驶距离。
您在这里有两个选择。首先,使用网络服务(Google Directions API)并创建自己的图形表示。
您已经切断了第一个选项,因此需要研究第二个选项。第二种选择是,创建具有精确步骤的图形(一个步骤是方向路线上的一个明显转弯),并建立一个庞大的本地图形数据库以进行查询(也许使用OLAP)。这将需要一个非常健壮的数据库,我的建议仍然是使用第一个选项,但是您也要打开第二个选项。
, 在美国,您可以随时下载联邦TIGER人口普查地图数据并进行自己的计算。如果要行驶距离,就无法避开某种地图数据。
http://arcdata.esri.com/data/tiger2000/tiger_statelayer.cfm?sfips=19
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。