use geo::GeodesicArea;
use geo_types::Polygon;
use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
pub struct AreaResult {
pub area_m2: f64,
pub area_km2: f64,
pub area_ha: f64,
pub area_acres: f64,
pub perimeter_m: f64,
}
pub fn compute_area(polygons: &[Polygon<f64>]) -> AreaResult {
let mut area_m2 = 0.0_f64;
let mut perimeter_m = 0.0_f64;
for poly in polygons {
area_m2 += poly.geodesic_area_unsigned();
perimeter_m += poly.geodesic_perimeter();
}
AreaResult {
area_m2,
area_km2: area_m2 / 1_000_000.0,
area_ha: area_m2 / 10_000.0,
area_acres: area_m2 / 4_046.8564224,
perimeter_m,
}
}