geopandas.GeoDataFrame.overlay#
- GeoDataFrame.overlay(right, how='intersection', keep_geom_type=None, make_valid=True)#
在GeoDataFrame之间执行空间覆盖。
当前仅支持具有统一几何图形类型的数据GeoDataFrame,即仅包含(多个)多边形、仅包含(多个)点或(多个)线串和线环形状的组合。实现几个方法,这些方法都是联合的有效子集。
请参阅用户指南页面 集合-覆盖操作 有关详细信息,请参阅。
- 参数
- rightGeoDataFrame
- how字符串
空间叠加方法:“交集”、“并集”、“同一性”、“对称差异”或“差异”。
- keep_geom_type布尔尔
如果为True,则仅返回GeoDataFrame具有的相同几何图形类型的几何图形;如果为False,则返回所有生成的几何图形。默认设置为None,这会将KEEP_GEOM_TYPE设置为True,但会在删除几何图形时发出警告。
- make_valid布尔值,默认为True
如果为True,则通过调用 buffer(0) ,如果为False,则为 ValueError 如果任何输入几何图形无效,则引发。
- 退货
- dfGeoDataFrame
包含叠加生成的新面集和属性的GeoDataFrame
参见
GeoDataFrame.sjoin
空间连接
overlay
等价顶层函数
注意事项
GeoPandas中的每个操作都是平面的,即没有考虑潜在的第三维。
示例
>>> from shapely.geometry import Polygon >>> polys1 = geopandas.GeoSeries([Polygon([(0,0), (2,0), (2,2), (0,2)]), ... Polygon([(2,2), (4,2), (4,4), (2,4)])]) >>> polys2 = geopandas.GeoSeries([Polygon([(1,1), (3,1), (3,3), (1,3)]), ... Polygon([(3,3), (5,3), (5,5), (3,5)])]) >>> df1 = geopandas.GeoDataFrame({'geometry': polys1, 'df1_data':[1,2]}) >>> df2 = geopandas.GeoDataFrame({'geometry': polys2, 'df2_data':[1,2]})
>>> df1.overlay(df2, how='union') df1_data df2_data geometry 0 1.0 1.0 POLYGON ((2.00000 2.00000, 2.00000 1.00000, 1.... 1 2.0 1.0 POLYGON ((2.00000 2.00000, 2.00000 3.00000, 3.... 2 2.0 2.0 POLYGON ((4.00000 4.00000, 4.00000 3.00000, 3.... 3 1.0 NaN POLYGON ((2.00000 0.00000, 0.00000 0.00000, 0.... 4 2.0 NaN MULTIPOLYGON (((3.00000 3.00000, 4.00000 3.000... 5 NaN 1.0 MULTIPOLYGON (((2.00000 2.00000, 3.00000 2.000... 6 NaN 2.0 POLYGON ((3.00000 5.00000, 5.00000 5.00000, 5....
>>> df1.overlay(df2, how='intersection') df1_data df2_data geometry 0 1 1 POLYGON ((2.00000 2.00000, 2.00000 1.00000, 1.... 1 2 1 POLYGON ((2.00000 2.00000, 2.00000 3.00000, 3.... 2 2 2 POLYGON ((4.00000 4.00000, 4.00000 3.00000, 3....
>>> df1.overlay(df2, how='symmetric_difference') df1_data df2_data geometry 0 1.0 NaN POLYGON ((2.00000 0.00000, 0.00000 0.00000, 0.... 1 2.0 NaN MULTIPOLYGON (((3.00000 3.00000, 4.00000 3.000... 2 NaN 1.0 MULTIPOLYGON (((2.00000 2.00000, 3.00000 2.000... 3 NaN 2.0 POLYGON ((3.00000 5.00000, 5.00000 5.00000, 5....
>>> df1.overlay(df2, how='difference') geometry df1_data 0 POLYGON ((2.00000 0.00000, 0.00000 0.00000, 0.... 1 1 MULTIPOLYGON (((3.00000 3.00000, 4.00000 3.000... 2
>>> df1.overlay(df2, how='identity') df1_data df2_data geometry 0 1.0 1.0 POLYGON ((2.00000 2.00000, 2.00000 1.00000, 1.... 1 2.0 1.0 POLYGON ((2.00000 2.00000, 2.00000 3.00000, 3.... 2 2.0 2.0 POLYGON ((4.00000 4.00000, 4.00000 3.00000, 3.... 3 1.0 NaN POLYGON ((2.00000 0.00000, 0.00000 0.00000, 0.... 4 2.0 NaN MULTIPOLYGON (((3.00000 3.00000, 4.00000 3.000...