当前位置: 首页 > 面试题库 >

OSMNx:使用OSM ID获取节点的坐标

白迪
2023-03-14
问题内容

我使用Python库OSMNx在城市旅行的多个步骤之间绘制了一条最佳路线。最后一个变量是OSM
id的列表

现在,我正在尝试将此路由另存为shp或json文件。问题是我需要每个节点的纬度/经度,但是我没有找到OSMNx函数来做到这一点。

我尝试了get_route_edge_attributes(但是坐标不是此函数的有效属性)。有没有办法用这个单一的id获得OSM节点的坐标?

提前致谢。


问题答案:

您在图中具有每个节点和边的所有属性。您可以使用以下方法获取节点属性:

G.node[38862848]
#out: {'highway': nan,
# 'lat': 45.3210533,
# 'lon': -122.9790558,
# 'osmid': '38862848',
# 'ref': nan,
# 'x': 501641.47862882155,
# 'y': 5018616.5723966481}

G.node[38862848]['lat']
# out: 45.3210533

并获取边缘属性,您可以使用G[u][v]

G[5035130880][4963510289]
# out: 
#{0: {'bridge': 'yes',
#  'geometry': <shapely.geometry.linestring.LineString at 0x7f90ad7d5860>,
#  'highway': 'secondary',
#  'length': 671.332597496,
#  'name': 'Northwest 185th Avenue',
#  'oneway': False,
#  'osmid': [124454683, 24446714, 124454682]}}

所有属性也都在图形的GeoDataFrame中。如果具有节点列表,则获取所有节点的几何形状的最简单方法是:

import osmnx as ox
import networkx as nx

gdf_nodes, gdf_edges = ox.graph_to_gdfs()
path = nx.shortest_path(G, G.nodes()[0], G.nodes()[1])
gdf_nodes.loc[path]
#out: 
#        highway    lat lon    osmid    ref x   y   geometry    traffic_signals
#5035130880 NaN 45.5637 -122.868    5035130880  NaN 510334  5.04558e+06 POINT (510334.0390091945 5045583.999886028) 0
#4963510289 NaN 45.5698 -122.868    4963510289  NaN 510329  5.04625e+06 POINT (510329.3114555664 5046254.728223645) 0
# ...

输出是一个GeoDataFrame。



 类似资料:
  • 我的代码: 打印: 我的问题是:当我得到btn1的坐标时,MinX和MinY是0,我能理解。但对于btn2,MinY不应为0;MaxX和MaxY也不应该是0。那么,如何在VBox中获取按钮左角的真实坐标呢。为了清楚起见,我需要节点相对于VBox的坐标。谢谢

  • 一个节点就象征着一个数据,现在的或者未来的,它是一种预期,所以我们也对应的有获取即时值和获取未来值两种方式。 获取即时值 对于一个节点来说,访问T value属性是最简单有效的形式,但是由于空值,我们可能需要特殊注意一下: EZRMutableNode<NSNumber *> *node = [EZRMutableNode new]; NSNumber *value = node.value;

  • 我想得到Cooja模拟器中每个节点的位置(x和y坐标)。共有30个节点,类型为“sky mote”。目标是为每个节点构建一个由(ID\u node x\u coordinate y\u coordinate)组成的表。 首先,我试图通过在脚本模拟编辑器中编写以下代码来获取每个节点的x坐标: 但我得到了这样的结果: 所有这些数字都是ID为2的特定节点的x坐标。请问,你能帮我得到库亚所有节点的x和y坐

  • 本文向大家介绍使用js获取鼠标坐标相关面试题,主要包含被问及使用js获取鼠标坐标时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我的html元素具有以下事件处理程序 单击时,我需要在#seek-bar上找到鼠标的位置。我以为上面的代码应该可以工作,但是结果不正确 问题答案: 您是否要简单地将鼠标指针定位到元素(或)的位置, 编辑: 1),给你鼠标位置的相关文件! 2):给出元素的偏移位置 3):它为您提供元素的相对位置,即 考虑一个元素嵌入另一个元素内 例如 : HTML JavaScript

  • 本文向大家介绍python点击鼠标获取坐标(Graphics),包括了python点击鼠标获取坐标(Graphics)的使用技巧和注意事项,需要的朋友参考一下 使用Python进行图像编程,要使用到Graphics库。下面列举出较常用的代码 接下来使用Graphics库进行编写 出现下面问题:name '_name_'is not defined.出现原因是下划线应该是两个(__'name'__)

  • 在JavaFX中,如何从鼠标单击的事件中获取鼠标指针下的字符(在JavaFX.scene.text.text对象中)的索引?或者更一般地说,如何获取位于javafx.scene.text.text节点中(x,y)坐标处的字符的索引? 我已经使用node.queryAccessibleAttribute()找到了索引,但这感觉有点像是一个黑客攻击,不是JavaFX API的正确使用: