如何获得复杂形状多边形的中心线

Adi*_*ora 11 python geometry

给定多边形的坐标,我想编写一个函数来返回该多边形的中心线坐标。中心线实际上是一条折线。

这张图更清楚地解释了我的问题

小智 8

您可以尝试使用中心线库。它支持多重多边形复杂多边形作为输入(基本上是shapely支持的任何输入),并输出sCenterline对象。MultiLineString

根据您的描述,您应该使用给定的点作为输入来创建一个Polygon或一个MultiPolygon对象shapely,并将(多)多边形对象作为输入传递给该类Centerline。拥有Centerline对象后,您就可以执行对对象执行的任何操作MultiLineStringREADME.md文件中提供了一个示例:

>>> from shapely.geometry import Polygon
>>> from centerline.geometry import Centerline

>>> polygon = Polygon([[0, 0], [0, 4], [4, 4], [4, 0]])
>>> attributes = {"id": 1, "name": "polygon", "valid": True}

>>> centerline = Centerline(polygon, **attributes)
>>> centerline.id == 1
True
>>> centerline.name
'polygon'
>>> centerline.geoms
<shapely.geometry.base.GeometrySequence object at 0x7f7d24116210>
Run Code Online (Sandbox Code Playgroud)

还有一个用于转换文件的命令行脚本。如果GDAL/OGR支持该文件,则脚本应该能够对其进行转换。