geopandas.GeoSeries.voronoi_polygons#
- GeoSeries.voronoi_polygons(tolerance=0.0, extend_to=None, only_edges=False)[来源]#
返回一个
GeoSeries,它由表示输入几何体的顶点周围计算得到的Voronoi图的对象组成。GeoSeries 中的所有几何图形将在一个 Voronoi 图中共同考虑。因此,结果几何图形不一定与输入几何图形一一对应。请注意,每个几何图形的顶点都被视为 Voronoi 图的一个站点,因此图将围绕每个几何图形的顶点构建。
- Parameters:
- tolerancefloat, default 0.0
如果输入顶点之间的距离小于此值,则将它们合并在一起。
- extend_toshapely.Geometry, default None
如果设置,Voronoi 图将扩展以覆盖该几何图形的包络(除非该包络小于输入几何图形)。
- only_edgesbool (optional, default False)
如果设置为 True,图形将返回 LineStrings 而不是 Polygons。
另请参阅
GeoSeries.delaunay_triangles围绕顶点的德劳内三角剖分
笔记
输出中的多边形顺序当前与输入顶点的顺序不对应。
如果您想为每个几何体单独生成Voronoi图,请使用
shapely.voronoi_polygons()。示例
最常见的用例是生成表示一组点周围的Voronoi图的多边形:
>>> from shapely import LineString, MultiPoint, Point, Polygon >>> s = geopandas.GeoSeries( ... [ ... Point(1, 1), ... Point(2, 2), ... Point(1, 3), ... Point(0, 2), ... ] ... ) >>> s 0 POINT (1 1) 1 POINT (2 2) 2 POINT (1 3) 3 POINT (0 2) dtype: geometry
默认情况下,您将获得一个多边形的GeoSeries:
>>> s.voronoi_polygons() 0 POLYGON ((-2 5, 1 2, -2 -1, -2 5)) 1 POLYGON ((4 5, 1 2, -2 5, 4 5)) 2 POLYGON ((-2 -1, 1 2, 4 -1, -2 -1)) 3 POLYGON ((4 -1, 4 -1, 1 2, 4 5, 4 -1)) dtype: geometry
如果将only_edges设置为True,您将获得代表Voronoi图边缘的LineStrings:
>>> s.voronoi_polygons(only_edges=True) 0 LINESTRING (-2 5, 1 2) 1 LINESTRING (1 2, -2 -1) 2 LINESTRING (4 5, 1 2) 3 LINESTRING (1 2, 4 -1) dtype: geometry
您还可以将每个图表扩展到给定的几何形状:
>>> limit = Polygon([(-10, -10), (0, 15), (15, 15), (15, 0)]) >>> s.voronoi_polygons(extend_to=limit) 0 POLYGON ((-10 13, 1 2, -10 -9, -10 13)) 1 POLYGON ((15 15, 15 -10, 13 -10, 1 2, 14 15, 1... 2 POLYGON ((-10 -10, -10 -9, 1 2, 13 -10, -10 -10)) 3 POLYGON ((-10 15, 14 15, 1 2, -10 13, -10 15)) dtype: geometry
该方法支持任何几何类型,但请记住,底层算法仅基于输入几何的顶点,不考虑顶点之间的边段。
>>> s2 = geopandas.GeoSeries( ... [ ... Polygon([(0, 0), (1, 1), (0, 1)]), ... LineString([(1, 0), (2, 1), (1, 2)]), ... MultiPoint([(2, 3), (2, 0), (3, 1)]), ... ] ... ) >>> s2 0 POLYGON ((0 0, 1 1, 0 1, 0 0)) 1 LINESTRING (1 0, 2 1, 1 2) 2 MULTIPOINT ((2 3), (2 0), (3 1)) dtype: geometry
>>> s2.voronoi_polygons() 0 POLYGON ((1.5 1.5, 1.5 0.5, 0.5 0.5, 0.5 1.5, ... 1 POLYGON ((1.5 0.5, 1.5 1.5, 2 2, 2.5 2, 2.5 0.... 2 POLYGON ((-3 -3, -3 0.5, 0.5 0.5, 0.5 -3, -3 -3)) 3 POLYGON ((0.5 -3, 0.5 0.5, 1.5 0.5, 1.5 -3, 0.... 4 POLYGON ((-3 5, 0.5 1.5, 0.5 0.5, -3 0.5, -3 5)) 5 POLYGON ((-3 6, -2 6, 2 2, 1.5 1.5, 0.5 1.5, -... 6 POLYGON ((1.5 -3, 1.5 0.5, 2.5 0.5, 6 -3, 1.5 ... 7 POLYGON ((6 6, 6 3.75, 2.5 2, 2 2, -2 6, 6 6)) 8 POLYGON ((6 -3, 2.5 0.5, 2.5 2, 6 3.75, 6 -3)) dtype: geometry