当前位置: 首页 > 知识库问答 >
问题:

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

薛经纶
2023-03-14

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

[<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) 

但它给出的结果是:AttributeError:“Shape”对象没有属性“union”

我看到了另一种方法,它涉及创建一个shapefilewriter对象,然后依次覆盖列表https://gis.stackexchange.com/questions/103033/using-pyshp-to-merge-two-shapefiles上的每个多边形。这种方法可能有效,但每个覆盖都保存到磁盘中

共有1个答案

申屠英韶
2023-03-14

也许值得一提的是,shapely.ops.unary_union是一种更有效的合并形状的方法。

您可以通过shapefile.shape对象的GeoJSON表示形式将其转换为shapely.polygon对象,并将它们合并,如下所示。

from shapely.geometry import shape
from shapely.geometry.ops import unary_union

union = unary_union([shape(s.__geo_interface__) for s in geometries_list])
 类似资料:
  • 为什么这工作正常: 这会产生运行时错误 错误: 这没有任何意义。第一个代码工作正常,三角形画好了,但第二个代码不行。有人能解释一下我做错了什么吗...

  • 我目前正在使用JavaFX研究不同形状之间的边界相交。我想检测两个多边形在它们的点上的碰撞,而不是在它们的边界上(即2个多边形)。 请参阅图1:不期望的行为,以及图2:期望的行为。 是否有任何现有的算法可以帮助我或使用任何库?提前感谢:) 在这里找到我的解决方案: 输出: 它似乎工作正常,我将使用Path对象进行测试以替换多边形objets。

  • 有没有办法在python中合并两个重叠的GEOJSON多边形,返回一个合并的GEOJSON对象?

  • 我有一对(封闭的)多边形,每个多边形被定义为一个点序列(顶点)。每个多边形都代表一块土地,由一条小河分开,所以溪流在两个多边形之间形成一个狭窄的缝隙。 我正在寻找一种算法,通过将两个多边形连接成一个连接的多边形来识别和消除间隙。 下图显示了一个示例,其中原始多边形为绿色和红色,生成的多边形显示为黄色。 到目前为止,我已经能够做到以下几点: 对于多边形A中的每条边,找到多边形B中最近的顶点。 找到多

  • 我想创建一个多边形从形状点。

  • 返回顶点的输入数组,并且附有一些其他方法,如下面所描述 polygon.area() 返回此多边形的标定区域。如果顶点是逆时针顺序,面积为正,否则为负。 polygon.centroid() 返回一个表示此多边形的质心的两元素数组。 polygon.clip(subject) 对这个多边形剪切主题多边形。换句话说,返回一个多边形表示这个多边形和主题多边形的交集。假定剪切的多边形是逆时针方向以及凸多