我的问题非常简单:我有一个由2个多边形组成的网络,而另一个仅包含前一个网络的两个多边形之一。如果检查网络中有2个多边形的一个多边形中有多少个节点,我将获得9735个节点。但是,如果我检查同一个多边形中但是只有一个多边形的网络中有多少个节点,我会得到9719。我不明白为什么会有所不同,它们应该相同。
以下是代码:
cities = ox.geocode_to_gdf(['Município de Lisboa', 'Município da Amadora'])
whole_polygon = cities.unary_union #unary union of both geometries
lisbon_pol = cities['geometry'].iloc[0] #geometry of just lisbon
amadora_pol = cities['geometry'].iloc[1]
G = ox.graph_from_polygon(whole_polygon, network_type='drive', simplify=True)
G_nx = nx.relabel.convert_node_labels_to_integers(G)
nodes_in_lx = nodes[nodes.within(lisbon_pol)]
print(len(nodes_in_lx)) # This gives 9735 nodes
G_lx = ox.graph_from_polygon(lisbon_pol, network_type='drive', simplify=True)
print(len(G_lx)) # This gives 9719 nodes
导致不一致的原因更多的事实是,如果我对各个多边形中的节点求和,则得到的节点要少于whole_polygon
中的节点:
print(len(G)) # gives 12812
G_am = ox.graph_from_polygon(amadora_pol, network_type='drive', simplify=True)
print(len(G_am)) # gives 3071 nodes
因此:3071 + 9719 =12790 and not 12812
我不知道哪里出了错误或有什么错误。
答案 0 :(得分:1)
我不知道哪里出了错误或有什么错误。
没有错误。这是描绘现实世界空间图的人工范围时的标准“边界”问题。查看nodes_in_lx
和G_lx
之间不同的节点。注意到它们都在哪里吗?就在您两个学习区域之间的边界上。
在查询/构造图形之前将两个多边形合并在一起时,您不必为将它们分隔开的内部边界处理任何此类“外围”问题。但是,当您直接直接下载这两个多边形之一的数据时,您要做必须处理这些问题。因此,由于存在或缺少该内部边界,可能会有细微的差异。