79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
from contextlib import contextmanager
|
|
|
|
import numpy as np
|
|
import pytest
|
|
|
|
import shapely
|
|
|
|
shapely20_todo = pytest.mark.xfail(
|
|
strict=False, reason="Not yet implemented for Shapely 2.0"
|
|
)
|
|
|
|
point_polygon_testdata = (
|
|
shapely.points(np.arange(6), np.arange(6)),
|
|
shapely.box(2, 2, 4, 4),
|
|
)
|
|
point = shapely.Point(2, 3)
|
|
line_string = shapely.LineString([(0, 0), (1, 0), (1, 1)])
|
|
linear_ring = shapely.LinearRing([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)])
|
|
polygon = shapely.Polygon([(0, 0), (2, 0), (2, 2), (0, 2), (0, 0)])
|
|
multi_point = shapely.MultiPoint([(0, 0), (1, 2)])
|
|
multi_line_string = shapely.MultiLineString([[(0, 0), (1, 2)]])
|
|
multi_polygon = shapely.multipolygons(
|
|
[
|
|
[(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)],
|
|
[(2.1, 2.1), (2.2, 2.1), (2.2, 2.2), (2.1, 2.2), (2.1, 2.1)],
|
|
]
|
|
)
|
|
geometry_collection = shapely.GeometryCollection(
|
|
[shapely.Point(51, -1), shapely.LineString([(52, -1), (49, 2)])]
|
|
)
|
|
point_z = shapely.Point(2, 3, 4)
|
|
line_string_z = shapely.LineString([(0, 0, 4), (1, 0, 4), (1, 1, 4)])
|
|
polygon_z = shapely.Polygon([(0, 0, 4), (2, 0, 4), (2, 2, 4), (0, 2, 4), (0, 0, 4)])
|
|
geometry_collection_z = shapely.GeometryCollection([point_z, line_string_z])
|
|
polygon_with_hole = shapely.Polygon(
|
|
[(0, 0), (0, 10), (10, 10), (10, 0), (0, 0)],
|
|
holes=[[(2, 2), (2, 4), (4, 4), (4, 2), (2, 2)]],
|
|
)
|
|
empty_point = shapely.from_wkt("POINT EMPTY")
|
|
empty_point_z = shapely.from_wkt("POINT Z EMPTY")
|
|
empty_line_string = shapely.from_wkt("LINESTRING EMPTY")
|
|
empty_line_string_z = shapely.from_wkt("LINESTRING Z EMPTY")
|
|
empty_polygon = shapely.from_wkt("POLYGON EMPTY")
|
|
empty = shapely.from_wkt("GEOMETRYCOLLECTION EMPTY")
|
|
line_string_nan = shapely.LineString([(np.nan, np.nan), (np.nan, np.nan)])
|
|
multi_point_z = shapely.MultiPoint([(0, 0, 4), (1, 2, 4)])
|
|
multi_line_string_z = shapely.MultiLineString([[(0, 0, 4), (1, 2, 4)]])
|
|
multi_polygon_z = shapely.multipolygons(
|
|
[
|
|
[(0, 0, 4), (1, 0, 4), (1, 1, 4), (0, 1, 4), (0, 0, 4)],
|
|
[(2.1, 2.1, 4), (2.2, 2.1, 4), (2.2, 2.2, 4), (2.1, 2.2, 4), (2.1, 2.1, 4)],
|
|
]
|
|
)
|
|
polygon_with_hole_z = shapely.Polygon(
|
|
[(0, 0, 4), (0, 10, 4), (10, 10, 4), (10, 0, 4), (0, 0, 4)],
|
|
holes=[[(2, 2, 4), (2, 4, 4), (4, 4, 4), (4, 2, 4), (2, 2, 4)]],
|
|
)
|
|
|
|
all_types = (
|
|
point,
|
|
line_string,
|
|
linear_ring,
|
|
polygon,
|
|
multi_point,
|
|
multi_line_string,
|
|
multi_polygon,
|
|
geometry_collection,
|
|
empty,
|
|
)
|
|
|
|
|
|
@contextmanager
|
|
def ignore_invalid(condition=True):
|
|
if condition:
|
|
with np.errstate(invalid="ignore"):
|
|
yield
|
|
else:
|
|
yield
|