我有一套很大的纬度/经度坐标,我想得到每个坐标的高度。我想使用OpenElevation API。根据他们的API,我可以通过网址:https://api.open-elevation.com/api/v1/lookup?locations=10,10|20,20|41.161758,-8.583933获得海拔数据。正如您可以从示例URL中看到的那样,可以在一个请求中获得多个高度(前提是您使用POST)。但是,当我尝试实现他们使用的示例时:
elevation = requests.post('https://api.open-elevation.com/api/v1/lookup', params={"locations": "10,10"}).content
print(elevation)
这就是结果:b'{"error": "Invalid JSON."}'
提交的网址是:https://api.open-elevation.com/api/v1/lookup?locations=10%2C10,它的格式肯定不正确。
发布于 2022-07-08 16:13:08
在快速查看文档之后。POST端点要求将参数以JSON格式以JSON格式以适当的标头在请求体中发送
下面是一个有用的例子:
import requests
import json
response = requests.post(
url="https://api.open-elevation.com/api/v1/lookup",
headers={
"Accept": "application/json",
"Content-Type": "application/json; charset=utf-8",
},
data=json.dumps({
"locations": [
{
"longitude": 10,
"latitude": 10
},
{
"longitude": 20,
"latitude": 20
}
]
})
)
print('Response HTTP Status Code: {status_code}'.format(status_code=response.status_code))
print('Response HTTP Response Body: {content}'.format(content=response.content))
响应:
Response HTTP Status Code: 200
Response HTTP Response Body: b'{"results": [{"latitude": 10, "longitude": 10, "elevation": 515}, {"latitude": 20, "longitude": 20, "elevation": 545}]}'
https://stackoverflow.com/questions/72913976
复制相似问题