Parent epic : #104
Objectif
Exposer 3 fonctions géométriques pures dans le DSL set_field, exécutées via DuckDB en push-down, sans run_sql.
Scope
Whitelist :
geom_area_m2() → ST_Area(ST_Transform(geom, 'EPSG:source', 'EPSG:lambert_local'))
geom_perimeter_m() → ST_Perimeter(...) projeté
geom_length_m() → ST_Length(...) projeté (pour lignes)
CRS handling :
- Auto-pick projection métrique locale (Lambert 93 si en France, sinon Web Mercator)
- Override
geom_area_m2(epsg='EPSG:2154') possible
Parsing :
- Entrée DSL :
set_field: surface = geom_area_m2() ou set_field: surface_ha = geom_area_m2() / 10000
- Output → SQL DuckDB compilé + write-back via adapter natif
Acceptance criteria
Estimation
M (3j)
Parent epic : #104
Objectif
Exposer 3 fonctions géométriques pures dans le DSL
set_field, exécutées via DuckDB en push-down, sansrun_sql.Scope
Whitelist :
geom_area_m2()→ST_Area(ST_Transform(geom, 'EPSG:source', 'EPSG:lambert_local'))geom_perimeter_m()→ST_Perimeter(...)projetégeom_length_m()→ST_Length(...)projeté (pour lignes)CRS handling :
geom_area_m2(epsg='EPSG:2154')possibleParsing :
set_field: surface = geom_area_m2()ouset_field: surface_ha = geom_area_m2() / 10000Acceptance criteria
surface_ha = geom_area_m2() / 10000sur GPKG 100 featuresEstimation
M (3j)