def test_binary_prepared(a, func): with ignore_invalid(shapely.is_empty(a)): # Empty geometries give 'invalid value encountered' in all predicates # (see https://github.com/libgeos/geos/issues/515) actual = func(a, point) result = func(_prepare_with_copy(a), point) assert actual == result
def test_binary_array(a, func): with ignore_invalid(shapely.is_empty(a)): # Empty geometries give 'invalid value encountered' in all predicates # (see https://github.com/libgeos/geos/issues/515) actual = func([a, a], point) assert actual.shape == (2, ) assert actual.dtype == np.bool_
def test_from_wkb_point_empty(wkb, expected_type, expected_dim): geom = shapely.from_wkb(wkb) # POINT (nan nan) transforms to an empty point assert shapely.is_empty(geom) assert shapely.get_type_id(geom) == expected_type # The dimensionality (2D/3D) is only read correctly for GEOS >= 3.9.0 if shapely.geos_version >= (3, 9, 0): assert shapely.get_coordinate_dimension(geom) == expected_dim
def test_get_rings(geom): if (shapely.get_type_id(geom) != shapely.GeometryType.POLYGON) or shapely.is_empty(geom): rings = shapely.get_rings(geom) assert len(rings) == 0 else: rings = shapely.get_rings(geom) assert len(rings) == 1 assert rings[0] == shapely.get_exterior_ring(geom)
def test_get_rings_return_index(): geom = np.array([polygon, None, empty_polygon, polygon_with_hole]) expected_parts = [] expected_index = [] for i, g in enumerate(geom): if g is None or shapely.is_empty(g): continue expected_parts.append(shapely.get_exterior_ring(g)) expected_index.append(i) for j in range(0, shapely.get_num_interior_rings(g)): expected_parts.append(shapely.get_interior_ring(g, j)) expected_index.append(i) parts, index = shapely.get_rings(geom, return_index=True) assert len(parts) == len(expected_parts) assert_geometries_equal(parts, expected_parts) assert np.array_equal(index, expected_index)
def test_from_wkb_empty(wkt): wkb = shapely.to_wkb(shapely.Geometry(wkt)) geom = shapely.from_wkb(wkb) assert shapely.is_geometry(geom).all() assert shapely.is_empty(geom).all() assert shapely.to_wkb(geom) == wkb
def test_from_wkt_empty(wkt): geom = shapely.from_wkt(wkt) assert shapely.is_geometry(geom).all() assert shapely.is_empty(geom).all() assert shapely.to_wkt(geom) == wkt
def is_empty(self): return shapely.is_empty(self.g)
def test_offset_curve_empty(): with ignore_invalid(): # Empty geometries emit an "invalid" warning # (see https://github.com/libgeos/geos/issues/515) actual = shapely.offset_curve(empty_line_string, 2.0) assert shapely.is_empty(actual)
def is_empty(self): """True if the set of points in this geometry is empty, else False""" return bool(shapely.is_empty(self))
# shapely.coverage_union_all, shapely.coverage_union) is tested seperately ) # operations that support fixed precision REDUCE_SET_OPERATIONS_PREC = ((shapely.union_all, shapely.union), ) reduce_test_data = [ shapely.box(0, 0, 5, 5), shapely.box(2, 2, 7, 7), shapely.box(4, 4, 9, 9), shapely.box(5, 5, 10, 10), ] non_polygon_types = [ geom for geom in all_types if (not shapely.is_empty(geom) and geom not in (polygon, multi_polygon)) ] @pytest.mark.parametrize("a", all_types) @pytest.mark.parametrize("func", SET_OPERATIONS) def test_set_operation_array(a, func): actual = func([a, a], point) assert actual.shape == (2, ) assert isinstance(actual[0], Geometry) @pytest.mark.skipif(shapely.geos_version >= (3, 9, 0), reason="GEOS >= 3.9") @pytest.mark.parametrize("func", SET_OPERATIONS) @pytest.mark.parametrize("grid_size", [0, 1]) def test_set_operations_prec_not_supported(func, grid_size):
def test_empty(geom_type): actual = shapely.empty((2, ), geom_type=geom_type) assert (~shapely.is_missing(actual)).all() assert shapely.is_empty(actual).all() assert (shapely.get_type_id(actual) == geom_type).all()