Skip to content

Commit c75aa5f

Browse files
cardernefrandorr
authored andcommitted
Make tile IDs globally unique
1 parent 7a08213 commit c75aa5f

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def read(*names, **kwargs):
3333

3434
setup(
3535
name="satextractor",
36-
version="0.1.0",
36+
version="0.2.0",
3737
license="BSD-2-Clause",
3838
description="SatExtractor. Extract everything from everywhere.",
3939
url="https://github.com/FrontierDevelopmentLab/sat-extractor",

src/satextractor/tiler/tiler.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import shapely
66
from satextractor.models import Tile
77
from sentinelhub import CRS
8-
from sentinelhub import UtmZoneSplitter
8+
from sentinelhub import UtmGridSplitter
99

1010

1111
def split_region_in_utm_tiles(
@@ -24,19 +24,27 @@ def split_region_in_utm_tiles(
2424
Returns:
2525
[List[Tile]]: The Tiles representing each of the boxes
2626
"""
27-
utm_zone_splitter = UtmZoneSplitter([region], crs, bbox_size)
28-
crs_bboxes = utm_zone_splitter.get_bbox_list()
29-
info_bboxes = utm_zone_splitter.get_info_list()
30-
31-
tiles = [
32-
Tile(
33-
id="_".join(
34-
[str(box.crs.epsg), str(info["index_x"]), str(info["index_y"])],
27+
utm_splitter = UtmGridSplitter([region], crs, bbox_size)
28+
crs_bboxes = utm_splitter.get_bbox_list()
29+
info_bboxes = utm_splitter.get_info_list()
30+
31+
assert (
32+
bbox_size[0] == bbox_size[1]
33+
), "bbox_size sides should be equal size, i.e. square"
34+
size = bbox_size[0]
35+
36+
tiles = []
37+
for info, box in zip(info_bboxes, crs_bboxes):
38+
# tile ids are globally unique and take the format shown below
39+
zone = info["utm_zone"]
40+
row = info["utm_row"]
41+
x, y = (int(v / size) for v in box.lower_left)
42+
tiles.append(
43+
Tile(
44+
id=f"{zone}_{row}_{size}_{x}_{y}",
45+
epsg=box.crs.epsg,
46+
bbox=(box.min_x, box.min_y, box.max_x, box.max_y),
3547
),
36-
epsg=box.crs.epsg,
37-
bbox=(box.min_x, box.min_y, box.max_x, box.max_y),
3848
)
39-
for info, box in zip(info_bboxes, crs_bboxes)
40-
]
4149

4250
return tiles

0 commit comments

Comments
 (0)