geopandas 自交叉分组
geopandas self intersection grouping
我习惯了 R,正在切换到 python 进行一些地理转换。
对于一项任务,我需要按交集对 geopandas 数据框中的多边形进行分组。
但是,我只能找到可以在两个数据帧之间执行此操作的 geopandas 参数。
例如,数据框中的这两个多边形:
应该得到相同的组id。
希望有人能帮忙!
如果您对严格的成对关系不感兴趣,可以使用 libpysal
来获取 group 标签。
从虚拟数据开始:
import geopandas as gpd
geom = gpd.points_from_xy([0, 1, 3, 4, 6, 7], [0, 1, 3, 4, 6, 7]).buffer(1.2)
gdf = gpd.GeoDataFrame(geometry=geom)
您可以基于交集创建模糊邻接权重矩阵并获取连通分量的标签:
W = libpysal.weights.fuzzy_contiguity(gdf)
W.component_labels
其中returns一个数组:
array([0, 0, 1, 1, 2, 2], dtype=int32)
绘制:
gdf.plot(W.component_labels, alpha=.5, categorical=True)
我习惯了 R,正在切换到 python 进行一些地理转换。 对于一项任务,我需要按交集对 geopandas 数据框中的多边形进行分组。
但是,我只能找到可以在两个数据帧之间执行此操作的 geopandas 参数。 例如,数据框中的这两个多边形:
应该得到相同的组id。
希望有人能帮忙!
如果您对严格的成对关系不感兴趣,可以使用 libpysal
来获取 group 标签。
从虚拟数据开始:
import geopandas as gpd
geom = gpd.points_from_xy([0, 1, 3, 4, 6, 7], [0, 1, 3, 4, 6, 7]).buffer(1.2)
gdf = gpd.GeoDataFrame(geometry=geom)
您可以基于交集创建模糊邻接权重矩阵并获取连通分量的标签:
W = libpysal.weights.fuzzy_contiguity(gdf)
W.component_labels
其中returns一个数组:
array([0, 0, 1, 1, 2, 2], dtype=int32)
绘制:
gdf.plot(W.component_labels, alpha=.5, categorical=True)