删除子几何图形的 Geopandas 方法

Geopandas way of removing child geometries

我有大量的形状多边形对象列表,其中有很多可能的几何形状,它们可能会落在彼此之间。

我正在尝试找到仅保留 parent/containing 个形状的最有效方法,并且需要摆脱任何子形状。

我试过的方法有:

致所有 GeoPandas 人的问题:

问:必须有一种更好的方法来删除子多边形,方法是进行某种空间连接并轻松找到所有子多边形。请分享一些例子。

假设您的环境中有 pygeos 并且所有内容都是最新的,您可以使用带有 contains_properly 谓词的空间索引来完全过滤其他几何中的几何。查看玩具示例:

import numpy
import geopandas
import pandas

pts = geopandas.GeoSeries.from_xy(x=numpy.random.randint(0, 100, 50), y=numpy.random.randint(0, 100, 50))
# create polygons that are one within the other
geoms = pd.concat([pts.buffer(1), pts.buffer(2)])

parent_idx, children_idx = geoms.sindex.query_bulk(geoms, predicate="contains_properly")

结果为您提供所有 parents 和所有 children 的整数索引。不返回 parent/children 之外的几何图形。