计算gps点之间的步行距离

时间:2016-10-05 12:44:28

标签: gis

我有成对的gps坐标(经度纬度),我想计算它们之间的步行距离。即,使用道路数据(来自谷歌地图或其他开源)计算两个GPS点之间的最短路线的km。我可以使用谷歌地图,但我有成千上万的对,所以我想找到一种更自动化的方式。

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

我不太确定你在寻找什么。请在这里分享一些想法:

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找到免费数据。