diff --git a/app/schemas/tiles.py b/app/schemas/tiles.py index cc7efdb..c1f114b 100644 --- a/app/schemas/tiles.py +++ b/app/schemas/tiles.py @@ -5,6 +5,7 @@ class GridTypeEnum(str, Enum): KM_20 = "20x20km" + KM_250 = "250x250km" class TileRequest(BaseModel): diff --git a/app/services/tiles/grids/km_grids.py b/app/services/tiles/grids/km_grids.py index 96b88b4..81ae6ba 100644 --- a/app/services/tiles/grids/km_grids.py +++ b/app/services/tiles/grids/km_grids.py @@ -27,6 +27,21 @@ def split_by_20x20_km_grid(polygon: Polygon) -> GeometryCollection: ) +@register_grid(GridTypeEnum.KM_250) +def split_by_250x250_km_grid(polygon: Polygon) -> GeometryCollection: + """ + Split polygon into 250x250 km tiles. + + :param polygon: The GeoJSON Polygon to split. + :return: A list of GeoJSON Polygons. + """ + logger.debug("Splitting polygon in a 250x250km grid") + + return GeometryCollection( + type="GeometryCollection", geometries=_split_by_km_grid(polygon, 250.0) + ) + + def _split_by_km_grid(aoi: Polygon, cell_size_km: float) -> List[Geometry]: """ Splits a polygon into a list of smaller polygons based on a square grid of given size in km.