pub trait Area {
type Output;
// Required methods
fn signed_area(&self) -> Self::Output;
fn unsigned_area(&self) -> Self::Output;
}
Expand description
Signed and unsigned planar area of a geometry.
Examples
use geo::polygon;
use geoarrow::algorithm::geo::Area;
use geoarrow::array::PolygonArray;
let polygon = polygon![
(x: 0., y: 0.),
(x: 5., y: 0.),
(x: 5., y: 6.),
(x: 0., y: 6.),
(x: 0., y: 0.),
];
let mut reversed_polygon = polygon.clone();
reversed_polygon.exterior_mut(|line_string| {
line_string.0.reverse();
});
let polygon_array: PolygonArray<i32> = vec![polygon].as_slice().into();
let reversed_polygon_array: PolygonArray<i32> = vec![reversed_polygon].as_slice().into();
assert_eq!(polygon_array.signed_area().value(0), 30.);
assert_eq!(polygon_array.unsigned_area().value(0), 30.);
assert_eq!(reversed_polygon_array.signed_area().value(0), -30.);
assert_eq!(reversed_polygon_array.unsigned_area().value(0), 30.);