Trait geoarrow::algorithm::geo::Area

source ·
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.);

Required Associated Types§

Required Methods§

source

fn signed_area(&self) -> Self::Output

source

fn unsigned_area(&self) -> Self::Output

Implementors§