首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用python导出gpx文件?

用python导出gpx文件?
EN

Stack Overflow用户
提问于 2022-03-07 01:29:26
回答 1查看 98关注 0票数 0

我想从https://routing.openstreetmap.de导出(下载)一个gpx文件,当你请求指示时,url如下所示: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=lon&loc=lon插入到url后导出gpx文件。在检查完站点后,这个span类要下载。

拜托伙计们。至少一点暗示

编辑本部分是在应答之后添加的。

下面是er=36.614839%2C3.014159&loc=36.600473%2C2.994676&loc=36.623863%2C3.002186&hl=en&alt=0&srv=2的gpx文件

对于json请求,我只得到以下代码的两点:

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 02:34:31

它似乎使用JavaScript作为JSON从API中获取数据,并在内存中创建数据(blobgpx数据),当您单击它时,它直接从内存发送数据(blob) --因此没有URL来获取它。当我使用click()时,它会请求文件夹,这需要手动单击。

似乎获得JSONgpx更简单

url to JSON数据也使用-0.0898,51.514739;-0.096656,51.516214

编辑:链接到网页使用lat,lon,但链接到需要lon,lat

代码语言:javascript
运行
复制
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('---')

结果:

代码语言:javascript
运行
复制
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]
---

编辑:

关于路由和python模块PyrouteLibSimpleOsmRouter的一些文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71375579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档