繁体   English   中英

使用 Momepy 将 GeoDataFrame 转换为 NetworkX 图会返回错误

[英]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_placegeometries_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM