Skip to content

Commit c23b45f

Browse files
authored
Merge pull request #993 from mapswipe/fix/tiles-processing
fix: requesting the same tile multiple times for multipolygon
2 parents e62d69b + 7ff2688 commit c23b45f

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

mapswipe_workers/mapswipe_workers/utils/process_mapillary.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ def create_tiles(polygon, level):
2626
if isinstance(polygon, Polygon):
2727
polygon = MultiPolygon([polygon])
2828

29-
tiles = []
29+
tiles = set()
3030
for i, poly in enumerate(polygon.geoms):
31-
tiles.extend(list(mercantile.tiles(*poly.bounds, level)))
31+
tiles.update(list(mercantile.tiles(*poly.bounds, level)))
3232

3333
bbox_list = [mercantile.bounds(tile.x, tile.y, tile.z) for tile in tiles]
3434
bbox_polygons = [box(*bbox) for bbox in bbox_list]

mapswipe_workers/tests/unittests/test_process_mapillary.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,6 @@ def setUpClass(cls):
4848
def setUp(self):
4949
self.level = 14
5050
self.test_polygon = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
51-
self.test_multipolygon = MultiPolygon(
52-
[self.test_polygon, Polygon([(2, 2), (3, 2), (3, 3), (2, 3)])]
53-
)
5451
self.empty_polygon = Polygon()
5552
self.empty_geometry = GeometryCollection()
5653

@@ -60,9 +57,19 @@ def test_create_tiles_with_valid_polygon(self):
6057
self.assertFalse(tiles.empty)
6158

6259
def test_create_tiles_with_multipolygon(self):
63-
tiles = create_tiles(self.test_multipolygon, self.level)
60+
polygon = Polygon(
61+
[
62+
(0.00000000, 0.00000000),
63+
(0.000000001, 0.00000000),
64+
(0.00000000, 0.000000001),
65+
(0.00000000, 0.000000001),
66+
]
67+
)
68+
multipolygon = MultiPolygon([polygon, polygon])
69+
tiles = create_tiles(multipolygon, self.level)
6470
self.assertIsInstance(tiles, pd.DataFrame)
6571
self.assertFalse(tiles.empty)
72+
self.assertEqual(len(tiles), 1)
6673

6774
def test_create_tiles_with_empty_polygon(self):
6875
tiles = create_tiles(self.empty_polygon, self.level)

0 commit comments

Comments
 (0)