首页 > 解决方案 > 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 集成?

标签: pythonopenstreetmapelevation

解决方案


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

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

推荐阅读