55import shapely
66from satextractor .models import Tile
77from sentinelhub import CRS
8- from sentinelhub import UtmZoneSplitter
8+ from sentinelhub import UtmGridSplitter
99
1010
1111def 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