计算gps点之间的步行距离
Posted
技术标签:
【中文标题】计算gps点之间的步行距离【英文标题】:calculate walking distance between gps points 【发布时间】:2016-10-05 12:44:27 【问题描述】:我有一对 gps 坐标(经纬度),我想计算它们之间的步行距离。即使用道路数据(来自谷歌地图或其他开源)计算两个 GPS 点之间最短路线的公里数。我可以使用谷歌地图来做到这一点,但我有数千对,所以我想找到一种更自动化的方式。
有人知道怎么做吗?
【问题讨论】:
请看这篇文章:- movable-type.co.uk/scripts/latlong.html 这可能更有用:- ***.com/questions/27928/… 感谢@BharatNakum 的回答。不幸的是,这不是我所追求的。我已经稍微编辑了这个问题以澄清这一点。 【参考方案1】:我不太确定您在寻找什么。在这里分享一些想法:
1) 如果要计算纬度/经度两点之间的大圆距离,可以使用半正弦公式距离。 JS 中的示例:
function Haversine_distance(lat1,lon1,lat2,lon2)
var R = 6371; // in km
var x1 = lat2 - lat1;
var dLat = x1.toRad();
var x2 = lon2 - lon1;
var dLon = x2.toRad();
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
return d*1.0;
;
2) 如果您需要更准确的距离计算,您需要一些校正因子,因为地球不是一个完美的球体。将您拥有的位置投影到适当的投影并在那里计算距离总是更容易。例如,使用 proj4js 投影到 UTM 区域,然后计算距离以减少不准确。
3) 如果你说的是城市的步行距离,那就是网络距离。需要先建立您的道路网络,然后从那里进行计算。如果没有道路网络,仅给出点位置将不足以计算步行距离。道路网络的商业数据可从 TeleAtlas 等处获得。也可以通过 OpenStreetMap 找到免费数据。
【讨论】:
感谢您的回复。不幸的是,这不是我想要的。我试图澄清这个问题。 退出不幸的是我没有明白你的想法。如果您可以通过谷歌手动完成,并且您正在寻找一些现有的工作/工具来做同样的事情,我很抱歉我没有快速的答案。但是如果你可以做一些编码,最好看看这个developers.google.com/maps/documentation/distance-matrix/intro的google api文档@ 谷歌地图使用的是我提到的 TeleAtlas 道路网络数据,它不是“免费的”。请在将其与您的密钥一起使用之前阅读该术语。以上是关于计算gps点之间的步行距离的主要内容,如果未能解决你的问题,请参考以下文章