[英]Converting GeoDataFrame to NetworkX graph with Momepy returns error
我正在使用OSMnx
生成一个 GeoDataFrame,它代表一个地方的结构(在我的例子中是柏林)。 为此,我从OSMnx
调用函数geometries_from_place
来生成它。 然后,我想使用具有gdf_to_nx
函数的库momepy
,该函数用于将 GeoDataFrame ( GeoPandas
) 转换为图形 ( NetworkX
)。
import momepy
import osmnx as ox
location = 'Berlin'
landmarks = ox.geometries.geometries_from_place(location, tags={'tourism':'attraction'}, buffer_dist=1500)
landmarks_graph = momepy.gdf_to_nx(namedAttractionsDf)
不幸的是,我从最后一行代码中得到以下错误: NotImplementedError: Component rings have coordinate sequences, but the polygon does not
我的最终目标是应用OSMnx
函数ego_graph
来生成生成图的每个节点的邻域,但要做到这一点,我必须有一个图。
我知道我可以使用OSMnx
函数graph_from_place
来生成图形,但是调用这两个函数( graph_from_place
和geometries_from_place
)太重了,从技术上讲,它们携带相同的信息但表示方式不同。 因此,同时调用它们将是对同一请求的重复。
我应该如何着手避免我得到的错误?
我遇到了类似的问题,这是由我的数据框将几何存储为Polygons
而不是LineStrings
引起的。 我通过提取多边形的边界来解决它,可以如下实现:
your_gdf.geometry = your_gdf.geometry.boundaries
然后,您可能会遇到您的Polygons
(在某些情况下可能是MultiPolygons
)转换为MultiLineStrings
,将整个数据帧转换为LineStrings
,将your_gdf.explode()
传递给momepy.gdf_to_nx()
,如下所示
G = momepy.gdf_to_nx(your_gdf.explode())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.