every blog every motto: You can do more than you think.
shapely 自相交问题,,,
shapely中的polygon,存在自相交的情况,后续执行intersection时报错。因为会先检查is_valid的属性。

查看polygon可用geopandas查看
import geopandas as gpd
a = gpd.GeoSeries(ele_polygon)
a.plot()

但是看不出自相交问题,所以,我们用matplotib查看
plt.plot(*ele_polygon.exterior.xy)
plt.show()

放大特写

网上大多出解决办法是添加buffer,但在这里得不出我们想要的结果。我们这里采用另一种方法
说明: 下图展示部分使用geopandas
先将点转成线,而不是直接转成polygon,这里的polygon_xy形式为,[(0, 0), (w, 0), (w, h), (0, h)],类似这种。
lines = LineString(polygon_xy)

局部特写

封闭线
lr = LineString(lines.coords[:] + lines.coords[:1])

局部特写

使用unary_union,作用:
mls = unary_union(lr)
由于我们的polyline,所以会被分解
结果:

使用polygonize在线段中查找可能组成的polygon
polygon_list = [ele for ele in polygonize(mls)]

合并
ele_polygon = polygon_list[0].union(polygon_list[1])


仿佛看到了胜利的曙光,,,,
然而,上面的图形只有外圈有点,内圈是没点的,不符合我们的要求,猝,,,,
[1] https://blog.csdn.net/qq_35729003/article/details/115579046
[2] https://www.heywhale.com/mw/project/62754e8fd0bd1f00173f1cee
[3] https://www.cnpython.com/qa/204541
[4] https://www.osgeo.cn/pygis/shapely-geometry.html#id4
[5] https://www.likecs.com/ask-1161738.html
[6] https://www.likecs.com/ask-5773397.html
[7] http://www.chenxm.cc/article/1185.html.html
[8] https://www.likecs.com/ask-1161738.html