feat: embed gf3 water extraction workflow

This commit is contained in:
2026-06-15 11:45:11 +08:00
parent a0388de9d4
commit f726367cbb
23 changed files with 2037 additions and 14 deletions
+25
View File
@@ -0,0 +1,25 @@
"""Small geospatial math helpers for lon/lat products."""
from __future__ import annotations
import math
def meters_to_degrees(meters: float, lat: float) -> tuple[float, float]:
deg_lat = meters / 111_320.0
deg_lon = meters / max(111_320.0 * math.cos(math.radians(lat)), 1.0)
return deg_lon, deg_lat
def pixel_area_m2(info) -> float:
center_lat = info.y0 - info.lines * info.dy * 0.5
meters_per_deg_lat = 111_320.0
meters_per_deg_lon = 111_320.0 * math.cos(math.radians(center_lat))
return abs(info.dx * meters_per_deg_lon * info.dy * meters_per_deg_lat)
def polygon_area_m2(geom, center_lat: float) -> float:
meters_per_deg_lat = 111_320.0
meters_per_deg_lon = 111_320.0 * math.cos(math.radians(center_lat))
return float(abs(geom.area) * meters_per_deg_lon * meters_per_deg_lat)