import requests
import pandas as pd
# script for returning elevation from lat, long, based on open elevation data
# which in turn is based on SRTM
def get_elevation(lat, long):
query = ('https://api.open-elevation.com/api/v1/lookup'
f'?locations={lat},{long}')
r = requests.get(query).json() # json object, various ways you can extract value
# one approach is to use pandas json functionality:
elevation = pd.io.json.json_normalize(r, 'results')['elevation'].values[0]
return elevation
请注意,使用geocoder,您将需要一个Google elevation API密钥,该密钥现在需要一个启用计费的项目(截至2018年7月)。
作为替代方案,您可以使用open elevation公共API。下面是一个返回高程的示例函数(请注意,python 3.6用于字符串格式设置):
注意,API在未来可能会发生变化,我不能对数据的准确性发表评论,但目前它是Google的一个不错的替代品,抽查显示它运行良好。
使用地理编码器而不是geopy是可能的:
如果geopy知道地球上每一个点的高度,我会吃我的袜子。这是不可能的(afaik)没有做一些奇特的谷歌地球/其他数据库搜索,以找出海拔高度。
之所以
lat, lon, altitude = p
有效,是因为Point
具有高度属性。根据source,构造器中唯一改变高度的时间是在altitude = float(altitude or 0)
行中,该行没有得到高度。相关问题 更多 >
编程相关推荐