在 Python 中合并多边形形状文件

我的 python3 脚本创建了一个变量,其值是形状文件列表,每个形状文件都是一个表示地理区域的多边形geometries_list


[<shapefile.Shape at 0x7f060abfae48>,

 <shapefile.Shape at 0x7f05dcaf1cc0>,

 <shapefile.Shape at 0x7f060a86b278>,

 <shapefile.Shape at 0x7f05da470668>]

我想“合并”多边形。我尝试了以下代码


from functools import reduce

from shapely.geometry import Polygon

union = reduce(lambda x,y: x.union(y), geometries_list) 

但它给出了结果:属性错误:“Shape”对象没有属性“并集”


我看到另一种方法,它涉及创建一个形状文件编写器对象并连续覆盖列表上的每个多边形 https://gis.stackexchange.com/questions/103033/using-pyshp-to-merge-two-shapefiles 此方法可能有效,但每个覆盖都保存到磁盘


繁星淼淼
浏览 322回答 1
1回答

智慧大石

也许值得一提的是,shapely.ops.unary_union是合并形状的更有效方法。您可以通过对象的 GeoJSON 表示形式将对象转换为对象,并按如下方式合并它们。shapefile.Shapeshapely.Polygonfrom shapely.geometry import shapefrom shapely.geometry.ops import unary_unionunion = unary_union([shape(s.__geo_interface__) for s in geometries_list])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python