如何得到一个距离矩阵的计算正在离线上我的服务器


How to get a Distance Matrix with the computation being made offline on my server

我希望得到几个地点之间的旅行距离和时间的近似值。

理想情况下,我希望能够发送位置的GPS坐标,使用OpenStreetMap的数据,并获得给定位置的距离矩阵输出,所有这些都将在我的AWS服务器上离线完成。(使用PHP或c++最好)

我对使用OpenStreetMap真的很陌生。我刚下载了ile-de-france.osm。pbf,这是法国一个地区的地图。

我不知道从哪里开始。我甚至不确定这样做是否简单。有人能给我指个方向吗?如果OpenStreetMap不是离线获取距离矩阵的最佳解决方案,那么什么才是呢?

为了计算旅行距离,你还必须安装一个路由器。选择一个可用的在线路由器(其中许多可以安装在本地,也可以离线使用)或离线路由器。好的选择是OSRM、GraphHopper和gosmore。

OSRM有一个距离矩阵调用,但目前仅限于一定数量的位置。我已经构建了一个脚本,使大距离矩阵与本地 OSRM服务器(它真的很容易在Ubuntu上编译)。这是https://github.com/sabas/OSRMdistance我已经计算了300多个位置的方阵…

有简单的公式来计算两个GPS坐标之间的距离。例如(你可能需要注意单位)

double t1 = sin(y1) * sin(y2);
double t2 = cos(y1) * cos(y2);
double t3 = cos(x1 - x2);
double t4 = t2 * t3;
double t5 = t1 + t4;
double rad_dist = atan(-t5/sqrt(-t5 * t5 +1)) + 2 * atan(1.0f);
double mile = rad_dist * 3437.74677 * 1.1508;
double meter = mile * 1609.3470878864446;

要找到步行/车辆距离,您可以通过匹配数据库中最近的"路径"将路径划分为检查点。