Areas of interest#

easysnowdata.aoi#

Area of interest (AOI) parsing — the one spatial input of every loader.

Design contract §2.1: a loader accepts aoi as a (west, south, east, north) tuple in EPSG:4326, a shapely geometry (EPSG:4326), a GeoJSON-like mapping, a geopandas.GeoDataFrame / geopandas.GeoSeries in any CRS, an odc.geo.geobox.GeoBox, or None for the whole globe. parse_aoi() turns each of these into an AOI: a footprint (single-row GeoDataFrame in EPSG:4326) plus, on request, a target grid (GeoBox) in a UTM zone or any other CRS.

Antimeridian#

A bounding box whose west is greater than east ((170, -20, -170, -10)) crosses the antimeridian. The footprint is stored as a MultiPolygon split at ±180° (what STAC intersects and GDAL expect); AOI.bounds keeps the STAC convention (west > east); grids are built on the unwrapped geometry (longitudes 170 → 190) so a UTM or geographic GeoBox is one contiguous raster.

AOI

A parsed area of interest: footprint in EPSG:4326 plus an optional grid.

parse_aoi

Parse any supported spatial input into an AOI.

estimate_utm_crs

Return the UTM CRS for the centroid of a geometry in EPSG:4326.

split_antimeridian

Split a geometry given in unwrapped longitudes (0…360) at 180°.