OSMNx: obtener coordenadas de nodos utilizando la ID de OSM

Usé la biblioteca OSMNx de Python para dibujar una ruta óptima entre varios pasos de un viaje a la ciudad. La variable final es una lista de identificadores de OSM .

Ahora, estoy tratando de guardar esta ruta como archivos shp o json. El problema es que necesito para eso la latitud / longitud de cada nodo, pero no encontré una función OSMNx para hacer eso.

Intenté get_route_edge_attributes (pero las coordenadas no son un atributo válido para esta función). ¿Hay alguna forma de obtener las coordenadas de un nodo OSM con este ID único?

Gracias por adelantado.

tienes todos los atributos de cada nodo y borde en el gráfico. puede obtener atributos de nodo usando:

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 

y para obtener atributos perimetrales puede usar G[u][v] :

 G[5035130880][4963510289] # out: #{0: {'bridge': 'yes', # 'geometry': , # 'highway': 'secondary', # 'length': 671.332597496, # 'name': 'Northwest 185th Avenue', # 'oneway': False, # 'osmid': [124454683, 24446714, 124454682]}} 

Todos los atributos están también en GeoDataFrame del gráfico. Si tiene una lista de nodos, la forma más fácil de obtener la geometría de todos los nodos es:

 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 xy 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 # ... 

La salida es un GeoDataFrame.

G.nodo [38862848] [‘y’] para latitud y G.nodo [38862848] [‘x’] para longitud