给定一个多边形的坐标,我想编写一个函数来返回该多边形的中心线坐标。中心线实际上是一个折线。
给定一个多边形的坐标,我想编写一个函数来返回该多边形的中心线坐标。中心线实际上是一个折线。
Centerline
对象,这些对象是MultiLineString
。shapely
的Polygon
或MultiPolygon
对象,并将(multi)polygon对象作为输入传递给Centerline
类。一旦您拥有了Centerline
对象,您可以执行任何操作,就像在MultiLineString
对象上执行的操作一样。示例可在README.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>
还有一个命令行脚本用于转换文件。如果文件受GDAL/OGR支持,该脚本应该能够将其转换。
centerline
库使用 Voronoi 图 来构建中心线。多边形的边界被加密,点被用作图的基线。所有完全位于多边形内部的图顶点都会被添加到中心线中。然而,如果您想要实现第一个问题中显示的精确结果,即中心线的点数是多边形点数的一半,那么 centerline
库就不适合了。在这种情况下,您需要使用不同的算法。 - Filip Todic