建筑物之间的距离
Distance between buildings
我想计算建筑物之间的距离。首先我得到graph_from_place,然后我得到geometries_from_place。对于所有几何图形,我都以点或 polygon.centroid 为中心。到中心我要get_nearest_node。不幸的是,所有最近的节点都很远并且是同一个节点。我做错了什么或如何计算建筑物之间的距离?我尝试了一些不同的小城镇,但它总是导致同样的问题。非常感谢!
import osmnx as ox
from IPython.display import IFrame
%matplotlib inline
ox.config(log_console=True, use_cache=True)
ox.\__version__
place = "Neuenburg am Rhein, Landkreis Breisgau-Hochschwarzwald, Baden-Württemberg, 79395, Germany"
G = ox.graph_from_place(place)
tags = {'building': True, 'amenity': True, 'addr:housenumber': True}
buildings = ox.geometries_from_place(place, tags)
buildings['center'] = buildings['geometry']
count_buildings_point = 0
count_buildings_poly = 0
for i in range(len(buildings)):
if(buildings.loc[i, 'geometry'].type == 'Polygon'):
buildings.loc[i, 'center'] = buildings.loc[i, 'geometry'].centroid
count_buildings_poly += 1
else:
buildings.loc[i, 'center'] = buildings.loc[i, 'geometry']
count_buildings_point += 1
print('#polygon', count_buildings_poly)
print('#point ', count_buildings_point)
buildings['nearestnode'] = buildings['geometry']
p = buildings.loc[0, 'center'].x, buildings.loc[0, 'center'].y
p
>(7.5589873, 47.8144135)
nn_node1 = ox.get_nearest_node(G, p)
nn_node1
>256970665
p2 = buildings.loc[1, 'center'].x, buildings.loc[1, 'center'].y
p2
>(7.565093, 47.814843)
nn_node2 = ox.get_nearest_node(G, p2)
nn_node2
>256970665
大声笑,我明白了。我不得不更改经度和纬度:
p = buildings.loc[0, 'center'].x, buildings.loc[0, 'center'].y
p
>(7.5589873, 47.8144135)
nn_node1 = ox.get_nearest_node(G, p)
nn_node1
>256970665
p2 = buildings.loc[1, 'center'].x, buildings.loc[1, 'center'].y
p2
>(7.565093, 47.814843)
nn_node2 = ox.get_nearest_node(G, p2)
nn_node2
>256970665
至:
p1 = [buildings.loc[0, 'center'].y, buildings.loc[0, 'center'].x]
p1
>[47.873246, 7.5688247]
nn1 = ox.get_nearest_node(G, p1)
nn1
>90875045
p2 = [buildings.loc[1, 'center'].y, buildings.loc[1, 'center'].x]
p2
>[47.7893012, 7.5377884]
nn2 = ox.get_nearest_node(G, p2)
nn2
>456275
我想计算建筑物之间的距离。首先我得到graph_from_place,然后我得到geometries_from_place。对于所有几何图形,我都以点或 polygon.centroid 为中心。到中心我要get_nearest_node。不幸的是,所有最近的节点都很远并且是同一个节点。我做错了什么或如何计算建筑物之间的距离?我尝试了一些不同的小城镇,但它总是导致同样的问题。非常感谢!
import osmnx as ox
from IPython.display import IFrame
%matplotlib inline
ox.config(log_console=True, use_cache=True)
ox.\__version__
place = "Neuenburg am Rhein, Landkreis Breisgau-Hochschwarzwald, Baden-Württemberg, 79395, Germany"
G = ox.graph_from_place(place)
tags = {'building': True, 'amenity': True, 'addr:housenumber': True}
buildings = ox.geometries_from_place(place, tags)
buildings['center'] = buildings['geometry']
count_buildings_point = 0
count_buildings_poly = 0
for i in range(len(buildings)):
if(buildings.loc[i, 'geometry'].type == 'Polygon'):
buildings.loc[i, 'center'] = buildings.loc[i, 'geometry'].centroid
count_buildings_poly += 1
else:
buildings.loc[i, 'center'] = buildings.loc[i, 'geometry']
count_buildings_point += 1
print('#polygon', count_buildings_poly)
print('#point ', count_buildings_point)
buildings['nearestnode'] = buildings['geometry']
p = buildings.loc[0, 'center'].x, buildings.loc[0, 'center'].y
p
>(7.5589873, 47.8144135)
nn_node1 = ox.get_nearest_node(G, p)
nn_node1
>256970665
p2 = buildings.loc[1, 'center'].x, buildings.loc[1, 'center'].y
p2
>(7.565093, 47.814843)
nn_node2 = ox.get_nearest_node(G, p2)
nn_node2
>256970665
大声笑,我明白了。我不得不更改经度和纬度:
p = buildings.loc[0, 'center'].x, buildings.loc[0, 'center'].y
p
>(7.5589873, 47.8144135)
nn_node1 = ox.get_nearest_node(G, p)
nn_node1
>256970665
p2 = buildings.loc[1, 'center'].x, buildings.loc[1, 'center'].y
p2
>(7.565093, 47.814843)
nn_node2 = ox.get_nearest_node(G, p2)
nn_node2
>256970665
至:
p1 = [buildings.loc[0, 'center'].y, buildings.loc[0, 'center'].x]
p1
>[47.873246, 7.5688247]
nn1 = ox.get_nearest_node(G, p1)
nn1
>90875045
p2 = [buildings.loc[1, 'center'].y, buildings.loc[1, 'center'].x]
p2
>[47.7893012, 7.5377884]
nn2 = ox.get_nearest_node(G, p2)
nn2
>456275