geopandas.GeoDataFrame.dissolve#
- GeoDataFrame.dissolve(by=None, aggfunc='first', as_index=True, level=None, sort=True, observed=False, dropna=True, method='unary', grid_size=None, **kwargs)[来源]#
将groupby中的几何图形合并为单个观察值。这是通过将union_all方法应用于组内的所有几何图形来实现的。
与每个 groupby 组相关的观察将使用 aggfunc 进行汇总。
- Parameters:
- bystr or list-like, default None
定义要解散的组的值的列。如果为 None,整个 GeoDataFrame 被视为一个单一组。如果提供了一个类列表对象,则列表中的值被视为分类标签,基于这些分类标签的相等性,多个多边形将被合并。
- aggfuncfunction or string, default “first”
用于操作与每个组相关的数据的聚合函数。传递给pandas groupby.agg 方法。接受的组合包括:
函数
字符串函数名称
函数和/或函数名称的列表,例如 [np.sum, ‘mean’]
轴标签的字典 -> 函数、函数名称或此类的列表。
- as_indexboolean, default True
如果为真,groupby 列将成为结果的索引。
- levelint or str or sequence of int or sequence of str, default None
如果轴是一个MultiIndex(层次),按特定级别或级别进行分组。
- sortbool, default True
对组键进行排序。关闭此功能可以获得更好的性能。 请注意,这不会影响每个组内部观察值的顺序。 Groupby 保持每个组内行的顺序。
- observedbool, default False
这仅适用于任何分组器是分类变量的情况。
如果为 True:仅显示分类分组器的观察值。
如果为 False:显示所有分类分组器的值。- dropnabool, default True
如果为True,并且如果分组键包含NA值,NA值将与行/列一起被丢弃。如果为False,NA值也将被视为分组中的键。
- methodstr (default
"unary"
) 用于并集的方式。选项包括:
"unary"
: 使用一元联合算法。这个选项是最稳健的,但对于大量几何图形来说可能会很慢(默认)。"coverage"
:使用覆盖联合算法。此选项针对 不重叠的多边形进行了优化,可能比 一元联合算法快得多。然而,如果多边形重叠,它可能会产生无效的几何图形。
- grid_sizefloat, default None
当指定网格大小时,使用固定精度空间来执行联合操作。这在联合那些不完全对齐的几何体或者避免因为鲁棒性问题而没有被联合的几何体时可能很有用。输入首先被对齐到给定大小的网格上。当几何体的线段在容差范围内靠近另一个几何体的一个顶点时,该顶点将被插入到线段中。最后,结果顶点将在相同的网格上计算。仅支持
method
"unary"
。如果为None,将使用输入的最高精度。默认为None。在版本 1.1.0 中新增。
- **kwargs
要传递给 pandas DataFrameGroupby.agg 方法的关键字参数,该方法被 dissolve 使用。特别地,可以提供 numeric_only,这将在 pandas 2.0 中对于某些 aggfunc 必须提供。
在版本 0.13.0 中新增。
- Returns
- ——-
- GeoDataFrame
另请参阅
GeoDataFrame.explode
将多部分几何图形拆分为单一几何图形
示例
>>> from shapely.geometry import Point >>> d = { ... "col1": ["name1", "name2", "name1"], ... "geometry": [Point(1, 2), Point(2, 1), Point(0, 1)], ... } >>> gdf = geopandas.GeoDataFrame(d, crs=4326) >>> gdf col1 geometry 0 name1 POINT (1 2) 1 name2 POINT (2 1) 2 name1 POINT (0 1)
>>> dissolved = gdf.dissolve('col1') >>> dissolved geometry col1 name1 MULTIPOINT ((0 1), (1 2)) name2 POINT (2 1)