使用 python 导出 gpx 文件?
export gpx file with python?
我想从 https://routing.openstreetmap.de 导出(下载)gpx 文件
当你问路时 url 是这样的:
https://routing.openstreetmap.de/?z=17¢er=51.515199%2C-0.092772&loc=51.514739%2C-0.089800&loc=51.516214%2C-0.096656&hl=en&alt=0&srv=1
使用 python 我想在将新的 loc=lat-lon&loc=lat-lon 插入 url 后导出 gpx 文件。
在检查站点后,要下载的跨度 class。
请大家。至少一个提示
EDITED 这部分是在回答后添加的
并且在 json 请求下,我使用此代码仅获得两分:
import requests
import json
lat_start = 36.5924
lon_start = 2.9898
lat_dist = 36.6429
lon_dist = 2.9929
url = 'https://routing.openstreetmap.de/routed-car/route/v1/driving/'+ str(lat_start)+','+str(lon_start)+';'+str(lat_dist)+','+str(lon_dist)+'?overview=false&alternatives=true&steps=true'
#url = 'https://routing.openstreetmap.de/routed-car/route/v1/driving/-0.0898,51.514739;-0.096656,51.516214?overview=false&alternatives=true&steps=true'
response = requests.get(url)
data = response.json()
print('DATA ___________________________________________________')
print(data)
mrks = []
for elements in data['routes']:
#print('ROUTES___________________________________________________')
#print(elements)
for legs in elements['legs']:
#print('legs___________________________________________________')
#print(legs)
for steps in legs['steps']:
#print('steps___________________________________________________')
#print(steps)
for intersections in steps['intersections']:
#print('intersections___________________________________________________')
#print(intersections)
for location in intersections['location']:
#print(location)
mrks.append(location)
#print(mrks)
twin = []
for i in range(0, len(mrks),2):
twin.append(str(mrks[i])+'___'+str(mrks[i+1]))
print('points ___________________________________________________')
for points in twin:
print(points)
它似乎使用 JavaScript
从 API 获取数据作为 JSON 并在内存中创建数据(blob
和 gpx
数据),当您单击它时,它会直接从内存中发送数据 (blob
) - 因此没有 URL 可以获取它。当我使用 click()
时,它会询问文件夹,这需要手动单击。
看起来 JSON
比 gpx
更简单
url
到 JSON
数据也使用 -0.0898,51.514739;-0.096656,51.516214
编辑: Link 到网页使用 lat,lon
但 link 到 JSON 需要 lon,lat
import requests
start_lon = -0.0898 # can be also as text
start_lat = 51.514739 # can be also as text
end_lon = -0.096656 # can be also as text
end_lat = 51.516214 # can be also as text
data = f"{start_lon},{start_lat};{end_lon},{end_lat}"
transport = 'bike' # 'car', 'foot'
url = f'https://routing.openstreetmap.de/routed-{transport}/route/v1/driving/{data}'
payload = {
'overview': 'false', # can't be True/False
'alternatives': 'true', # can't be True/False
'steps': 'true', # can't be True/False
}
response = requests.get(url, params=payload)
print(response.url)
#print(response.text)
print('---')
data = response.json()
for point in data['waypoints']:
print('name:', point['name'])
print('distance:', point['distance'])
print('location:', point['location'])
print('---')
结果:
url: https://routing.openstreetmap.de/routed-bike/route/v1/driving/-0.0898,51.514739;-0.096656,51.516214?overview=false&alternatives=true&steps=true
---
name: Princes Street
distance: 4.955845
location: [-0.089734, 51.514722]
---
name: Gresham Street
distance: 8.8597
location: [-0.096605, 51.516287]
---
编辑:
Routing and python modules PyrouteLib, SimpleOsmRouter
的一些文档
我想从 https://routing.openstreetmap.de 导出(下载)gpx 文件 当你问路时 url 是这样的: https://routing.openstreetmap.de/?z=17¢er=51.515199%2C-0.092772&loc=51.514739%2C-0.089800&loc=51.516214%2C-0.096656&hl=en&alt=0&srv=1
使用 python 我想在将新的 loc=lat-lon&loc=lat-lon 插入 url 后导出 gpx 文件。 在检查站点后,要下载的跨度 class。
请大家。至少一个提示
EDITED 这部分是在回答后添加的
并且在 json 请求下,我使用此代码仅获得两分:
import requests
import json
lat_start = 36.5924
lon_start = 2.9898
lat_dist = 36.6429
lon_dist = 2.9929
url = 'https://routing.openstreetmap.de/routed-car/route/v1/driving/'+ str(lat_start)+','+str(lon_start)+';'+str(lat_dist)+','+str(lon_dist)+'?overview=false&alternatives=true&steps=true'
#url = 'https://routing.openstreetmap.de/routed-car/route/v1/driving/-0.0898,51.514739;-0.096656,51.516214?overview=false&alternatives=true&steps=true'
response = requests.get(url)
data = response.json()
print('DATA ___________________________________________________')
print(data)
mrks = []
for elements in data['routes']:
#print('ROUTES___________________________________________________')
#print(elements)
for legs in elements['legs']:
#print('legs___________________________________________________')
#print(legs)
for steps in legs['steps']:
#print('steps___________________________________________________')
#print(steps)
for intersections in steps['intersections']:
#print('intersections___________________________________________________')
#print(intersections)
for location in intersections['location']:
#print(location)
mrks.append(location)
#print(mrks)
twin = []
for i in range(0, len(mrks),2):
twin.append(str(mrks[i])+'___'+str(mrks[i+1]))
print('points ___________________________________________________')
for points in twin:
print(points)
它似乎使用 JavaScript
从 API 获取数据作为 JSON 并在内存中创建数据(blob
和 gpx
数据),当您单击它时,它会直接从内存中发送数据 (blob
) - 因此没有 URL 可以获取它。当我使用 click()
时,它会询问文件夹,这需要手动单击。
看起来 JSON
比 gpx
更简单
url
到 JSON
数据也使用 -0.0898,51.514739;-0.096656,51.516214
编辑: Link 到网页使用 lat,lon
但 link 到 JSON 需要 lon,lat
import requests
start_lon = -0.0898 # can be also as text
start_lat = 51.514739 # can be also as text
end_lon = -0.096656 # can be also as text
end_lat = 51.516214 # can be also as text
data = f"{start_lon},{start_lat};{end_lon},{end_lat}"
transport = 'bike' # 'car', 'foot'
url = f'https://routing.openstreetmap.de/routed-{transport}/route/v1/driving/{data}'
payload = {
'overview': 'false', # can't be True/False
'alternatives': 'true', # can't be True/False
'steps': 'true', # can't be True/False
}
response = requests.get(url, params=payload)
print(response.url)
#print(response.text)
print('---')
data = response.json()
for point in data['waypoints']:
print('name:', point['name'])
print('distance:', point['distance'])
print('location:', point['location'])
print('---')
结果:
url: https://routing.openstreetmap.de/routed-bike/route/v1/driving/-0.0898,51.514739;-0.096656,51.516214?overview=false&alternatives=true&steps=true
---
name: Princes Street
distance: 4.955845
location: [-0.089734, 51.514722]
---
name: Gresham Street
distance: 8.8597
location: [-0.096605, 51.516287]
---
编辑:
Routing and python modules PyrouteLib, SimpleOsmRouter
的一些文档