|
7 | 7 | import pytest |
8 | 8 |
|
9 | 9 | from shapely.errors import ShapelyDeprecationWarning |
10 | | -from shapely.geometry import Point, Polygon |
| 10 | +from shapely.geometry import Point, Polygon, box |
11 | 11 | from shapely.geos import geos_version |
12 | 12 | from shapely import strtree |
13 | 13 | from shapely.strtree import STRtree |
| 14 | +from shapely import wkt |
14 | 15 |
|
15 | 16 | from .conftest import requires_geos_342 |
16 | 17 |
|
17 | 18 |
|
| 19 | +point = Point(2, 3) |
| 20 | +empty = wkt.loads("GEOMETRYCOLLECTION EMPTY") |
| 21 | + |
| 22 | + |
18 | 23 | @requires_geos_342 |
19 | 24 | @pytest.mark.parametrize("geoms", [[Point(i, i) for i in range(10)]]) |
20 | 25 | @pytest.mark.parametrize( |
@@ -42,6 +47,37 @@ def test_query_enumeration_idx(geoms, query_geom, expected): |
42 | 47 | assert sorted(results) == sorted(expected) |
43 | 48 |
|
44 | 49 |
|
| 50 | +@requires_geos_342 |
| 51 | +@pytest.mark.parametrize("geoms", [[Point(i, i) for i in range(5)]]) |
| 52 | +@pytest.mark.parametrize("items", [None, list(range(1, 6)), list("abcde")]) |
| 53 | +@pytest.mark.parametrize( |
| 54 | + "query_geom,expected", |
| 55 | + [(Point(2, 2).buffer(0.99), [2]), (Point(2, 2).buffer(1.0), [1, 2, 3])], |
| 56 | +) |
| 57 | +def test_query_items(geoms, items, query_geom, expected): |
| 58 | + """Store enumeration idx""" |
| 59 | + with pytest.warns(ShapelyDeprecationWarning): |
| 60 | + tree = STRtree(geoms, items) |
| 61 | + results = tree.query_items(query_geom) |
| 62 | + expected = [items[idx] for idx in expected] if items is not None else expected |
| 63 | + assert sorted(results) == sorted(expected) |
| 64 | + |
| 65 | + |
| 66 | +@pytest.mark.parametrize( |
| 67 | + "tree_geometry, geometry,expected", |
| 68 | + [ |
| 69 | + ([point], box(0, 0, 10, 10), [0]), |
| 70 | + # None/empty is ignored in the tree, but the index of the valid geometry |
| 71 | + # should be retained. |
| 72 | + ([None, point], box(0, 0, 10, 10), [1]), |
| 73 | + ([None, empty, point], box(0, 0, 10, 10), [2]), |
| 74 | + ], |
| 75 | +) |
| 76 | +def test_query_items_with_empty(tree_geometry, geometry, expected): |
| 77 | + with pytest.warns(ShapelyDeprecationWarning): |
| 78 | + tree = STRtree(tree_geometry) |
| 79 | + assert tree.query_items(geometry) == expected |
| 80 | + |
45 | 81 | @requires_geos_342 |
46 | 82 | def test_insert_empty_geometry(): |
47 | 83 | """ |
|
0 commit comments