Osmnx 错误:模块“osmnx.elevation”没有属性“add_node_elevations_raster”

Posted

技术标签:

【中文标题】Osmnx 错误:模块“osmnx.elevation”没有属性“add_node_elevations_raster”【英文标题】:Osmnx error: module 'osmnx.elevation' has no attribute 'add_node_elevations_raster' 【发布时间】:2022-01-18 06:47:39 【问题描述】:

我正在尝试从栅格文件中获取高程并添加到道路网络。我收到模块“osmnx.elevation”没有属性“add_node_elevations_raster”错误。

按照这个笔记本: https://github.com/gboeing/osmnx-examples/blob/main/notebooks/12-node-elevations-edge-grades.ipynb

我的 osmnx 版本是 '0.16.0' 并且所有其他功能都在工作。

我不想使用 add_node_elevations 函数,因为需要一个 google api 密钥,我正在寻找一个免费选项。

【问题讨论】:

【参考方案1】:

您可以通过查看免费的 Elevation API 将其包含在您的项目中:

Open Topo Data Elevation API Open Elevation (API, Example HttpGet Request) Elevation Point Query Service

据我研究,其中一些 API 可以在本地运行,而其他 API 则通过互联网提供服务。要在您的项目中使用这些 API 之一,您必须能够使用 Python 创建 HttpGet 请求。如果OSMNX 库让您无法完成此过程,您可以按照this link 学习如何用python 编程语言发出HttpGet 请求。

例如,我根据Open Topo Data API上的位置做出的HttpGet请求的返回如下:

import requests
import json

r = requests.get('https://api.opentopodata.org/v1/test-dataset?locations=56,123')

if r.status_code == 200:
   if r.headers['Content-Type'] == 'application/json':
      print(r.text)
      response = r.text.replace("'", '"')
      response = json.loads(response)
      for e in response['results']:
         print('Value of Elevation: ', e['elevation'])

【讨论】:

【参考方案2】:

您使用的是非常旧的 OSMnx 版本,早在该功能存在之前就发布了。只需升级到最新版本的软件包(在撰写本文时为 v1.1.2),您就可以开始使用了。

【讨论】:

以上是关于Osmnx 错误:模块“osmnx.elevation”没有属性“add_node_elevations_raster”的主要内容,如果未能解决你的问题,请参考以下文章

python 包介绍:osmnx

OSMnx:节点之间的角度

将本地 XML 或 Shapefile 加载到 OSMNX 以创建图形

OSMNX 操作与其他数据

查找 2 个节点之间的街道名称。 OSMnx

转换 osmnx 投影地图的经纬度坐标