geopandas.GeoSeries.set_precision#

GeoSeries.set_precision(grid_size, mode='valid_output')[来源]#

返回一个 GeoSeries,其精度设置为精度网格大小。

默认情况下,几何体使用双精度坐标 (grid_size=0)。

如果精度网格的精度低于输入几何体,坐标将被四舍五入。在网格大小大于0的情况下,线段和多边形中的重复顶点将被删除。如果所有顶点之间的距离都比 grid_size 更近,线段和多边形几何体可能会合并为空几何体。在顶点四舍五入后,宽度小于 grid_size 的多边形中的尖峰或部分将被移除,这可能导致多重多边形或空几何体。如果存在Z值,将不会被修改。

Parameters:
grid_sizefloat

精度网格大小。如果为0,将使用双精度(如果之前未设置精度网格大小,将不会修改几何形状)。如果该值比输入几何形状更精确,则输入几何形状将不会被修改。

mode{‘valid_output’, ‘pointwise’, ‘keep_collapsed’}, default ‘valid_output’

该参数确定如何在几何上应用精度减少。共有三种模式:

  • 'valid_output' (默认): 输出始终有效。折叠的几何元素(包括多边形和线条)被移除。重复的顶点被移除。

  • 'pointwise': 精度降低是逐点进行的。输出几何形状可能由于折叠或自交而无效。重复的顶点不会被移除。

  • 'keep_collapsed': 像默认模式一样,只是保留了折叠的线性几何元素。折叠的多边形输入元素被移除。重复的顶点被移除。

笔记

后续操作将始终在具有更高精度(更小的 grid_size)的几何体精度下进行。相同的精度将附加到操作输出上。

输入几何体应该是几何有效的;如果输入几何体无效,可能会出现意外的结果。您可以使用 is_valid() 检查有效性,并使用 make_valid() 方法修复无效的几何体。

示例

>>> from shapely import LineString, Point
>>> s = geopandas.GeoSeries(
...     [
...        Point(0.9, 0.9),
...        Point(0.9, 0.9, 0.9),
...        LineString([(0, 0), (0, 0.1), (0, 1), (1, 1)]),
...        LineString([(0, 0), (0, 0.1), (0.1, 0.1)])
...     ],
... )
>>> s
0                      POINT (0.9 0.9)
1                POINT Z (0.9 0.9 0.9)
2    LINESTRING (0 0, 0 0.1, 0 1, 1 1)
3     LINESTRING (0 0, 0 0.1, 0.1 0.1)
dtype: geometry
>>> s.set_precision(1)
0                   POINT (1 1)
1             POINT Z (1 1 0.9)
2    LINESTRING (0 0, 0 1, 1 1)
3              LINESTRING EMPTY
dtype: geometry
>>> s.set_precision(1, mode="pointwise")
0                        POINT (1 1)
1                  POINT Z (1 1 0.9)
2    LINESTRING (0 0, 0 0, 0 1, 1 1)
3         LINESTRING (0 0, 0 0, 0 0)
dtype: geometry
>>> s.set_precision(1, mode="keep_collapsed")
0                   POINT (1 1)
1             POINT Z (1 1 0.9)
2    LINESTRING (0 0, 0 1, 1 1)
3         LINESTRING (0 0, 0 0)
dtype: geometry