如何将在一行中触摸自己的多边形转换为有效的多边形?

安东

我正在使用shapely和python将多边形分成较小的部分:梯形,边与x轴平行的平行四边形和边与x轴平行的三角形。初始数据来自.gds文件,并以元组x,y坐标列表的形式显示。为了我的目的,我使用了这里描述的差异方法但是当多边形有孔时我会得到堆栈,例如:

from shapely.geometry import Polygon
points = [(0.0, -1.0), (0.0, 2.0), (3.0, 2.0), (3.0, 1.0), (1.0, 1.0), (1.0, 0.0), (2.0, 0.0), (2.0, 1.0), (3.0, 1.0), (3.0,-1.0)]
poly = Polygon(points)
print(poly.is_valid)
#Self-intersection at or near point 2 1
#False

因此,问题是如何将此点列表转换为船体和孔以正确创建多边形的最简单方法是什么?

谢谢!

jdmcbr

为此的标准技巧是使用poly.buffer(0)(请参阅标准手册)。

polyb = poly.buffer(0)
print(shapely.geometry.mapping(polyb))
# {'type': 'Polygon', 'coordinates': (((0.0, -1.0), (0.0, 2.0), (3.0, 2.0), (3.0, 1.0), (3.0, -1.0), (0.0, -1.0)), ((2.0, 1.0), (1.0, 1.0), (1.0, 0.0), (2.0, 0.0), (2.0, 1.0)))}
print(polyb.is_valid)
# True

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将 wkt 形式的多边形列表转换为多多边形?

来自分类Dev

Topojson:如何在GIS软件中设计有效的多边形,线,点?

来自分类Dev

有效的多边形碰撞检测

来自分类Dev

将多边形转换为路径

来自分类Dev

如何从多多边形中删除同一多边形的多个条目?

来自分类Dev

如何有效地确定3D空间中多边形的法线?

来自分类Dev

OpenCV在多边形中查找点的最有效方法

来自分类Dev

在SVG中“扩展”多边形的最有效方法是什么?

来自分类Dev

如何在C#中的凸多边形算法中实现对点的有效测试?

来自分类Dev

多边形的行排序

来自分类Dev

如何将凸包顶点转换为Geopandas多边形

来自分类Dev

如何将React多边形元素转换为google.maps.Polygon元素

来自分类Dev

如何将坐标对从字符串转换为谷歌地图多边形的数组?

来自分类Dev

如何连接多边形?

来自分类Dev

如何拖动多边形?

来自分类Dev

如何旋转多边形?

来自分类Dev

多边形剪裁中的多边形

来自分类Dev

多边形中的点,多个多边形

来自分类Dev

如何在Leaflet中将具有权重的折线转换为多边形?

来自分类Dev

应当触摸的匀称多边形

来自分类Dev

如何将某些区域均匀地调整为多边形(扩展多边形)?

来自分类Dev

如何将多边形划分为子多边形并为其分配 id

来自分类Dev

溶解除形状文件中的所有多边形外的所有多边形

来自分类Dev

圆角多边形

来自分类Dev

多边形图

来自分类Dev

滚动多边形

来自分类Dev

圆角多边形

来自分类Dev

标记多边形

来自分类Dev

多边形遏制