python的开放高度api

问题描述

我们可以在 python 中使用 open-elevation 吗? 我尝试使用请求获取 API,但没有成功

#overpass api url
elevation_request = "https://api.open-elevation.com/api/v1/lookup\?locations\=10,10\|20,20\|41.161758,-8.583933"
elevation = requests.get(elevation_request)
data_json = elevation.json()

我们如何将这个 API 与 python 集成?

解决方法

端点是有效的,但它们很慢或有时无响应。下面的代码是对 this answer 的改编,用于处理响应状态代码和超时:

from requests import get
from pandas import json_normalize

def get_elevation(lat = None,long = None):
    '''
        script for returning elevation in m from lat,long
    '''
    if lat is None or long is None: return None
    
    query = ('https://api.open-elevation.com/api/v1/lookup'
             f'?locations={_lat},{_long}')
    
    # Request with a timeout for slow responses
    r = get(query,timeout = 20)

    # Only get the json response in case of 200 or 201
    if r.status_code == 200 or r.status_code == 201:
        elevation = json_normalize(r.json(),'results')['elevation'].values[0]
    else: 
        elevation = None
    return elevation
,

我是 https://open-elevation.com 的作者。

服务现在应该更可靠地工作了。

遗憾的是,该服务广泛免费使用,但捐赠方式很少,所以我一直无法正确升级以应对负载。下个月的迁移(每个月从我口袋里掏出更多的钱)已经缓解了这种情况,但我不能告诉你它会持续多久。