假设我有一条从一个城镇到另一个城镇的路线。从 Google Maps API 我可以恢复两者之间的路线。但是,从谷歌返回的路线是一条仅在一条腿有另一步的地方(例如,我必须从一条高速公路转到另一条高速公路的地方)包含地理坐标的驾驶路线。
我需要的是沿整个路线的地理位置(纬度/经度),以特定的间隔(例如,每 1/4 英里或 100m)。
有没有办法通过谷歌地图 API/网络服务来实现这一点?
或者 OpenStreetMap 数据库会是实现它的方法吗?
亲切的问候,玛德琳。
假设我有一条从一个城镇到另一个城镇的路线。从 Google Maps API 我可以恢复两者之间的路线。但是,从谷歌返回的路线是一条仅在一条腿有另一步的地方(例如,我必须从一条高速公路转到另一条高速公路的地方)包含地理坐标的驾驶路线。
我需要的是沿整个路线的地理位置(纬度/经度),以特定的间隔(例如,每 1/4 英里或 100m)。
有没有办法通过谷歌地图 API/网络服务来实现这一点?
或者 OpenStreetMap 数据库会是实现它的方法吗?
亲切的问候,玛德琳。
OSRM为您提供具有道路几何形状的路线,就像它们在 OpenStreetMap 数据库中一样。例如,您可以将路由作为 GPX 获取(如果需要,可以对该文件进行后处理)。这将如下所示:
GET http://router.project-osrm.org/viaroute?hl=en&loc=47.064970,15.458470&loc=47.071100,15.476760&output=gpx
阅读更多:OSRM API 文档。
由于接受的答案已过时并且不再起作用,因此可以使用Project OSRM中的路线服务来查询道路沿线的所有节点。
给定任意数量的 lon,lat 对。例如以下三个(在柏林):
路线服务计算这些点之间的最快路线,并使用以下查询返回沿路的所有节点:
http://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.397634,52.529407;13.428555,52.523219?alternatives=false&annotations=nodes
这将返回一个 json 响应,其中包含沿途所有节点的节点 ID。结果应如下所示:
{
"routes": [
{
...
"legs": [
{
"annotation": {
"nodes": [
2264199819,
2045820592,
21487242,
...
]
}
可以使用OverpassAPI接收节点的纬度、经度坐标。
[out:json];
(
node(264199819);
node(...);
node(...);
...
);
(._;>;);
out;
这是使用 overpass-turbo 的示例请求:http: //overpass-turbo.eu/s/toe
这只是 google.maps.DirectionsService().route() 方法。您需要传递服务请求,然后在服务请求完成时执行回调。
https://developers.google.com/maps/documentation/javascript/directions
虽然不用作 API,但在这里:https ://www.nmeagen.org/可以创建“多点线”,设置点之间的距离和下载路线(坐标)为 CSV。
添加到马里奥的答案。
您可以使用 Google Maps Directions API 本身。对于给定的起点和终点,在 JSON 输出中查找以下内容:
"polyline" : {
"points" : ""
}
您可以使用解码器从折线获取坐标。: https ://github.com/emcconville/google-map-polyline-encoding-tool 或。您可以使用 R 中的 googleway 包对其进行解码。 https://cran.r-project.org/web/packages/googleway/googleway.pdf
我不确定如何将分辨率设置为您想要的级别。但是 API 输出中的分辨率非常好。