Skip to main content

difference_polygons_pooled

Function difference_polygons_pooled 

Source
pub fn difference_polygons_pooled(
    base: &[Polygon],
    subtract: &[Polygon],
) -> Result<PoolGuard<'static, Polygon>>
Expand description

Computes difference of base polygons with subtract polygons using object pooling

Subtracts subtract polygons from base polygons. Returns the first result polygon from the pool.

§Arguments

  • base - Base polygons
  • subtract - Polygons to subtract

§Returns

A pooled polygon guard representing the difference

§Errors

Returns error if any polygon is invalid

§Example

use oxigdal_algorithms::vector::{difference_polygons_pooled, Coordinate, LineString, Polygon};

let coords = vec![
    Coordinate::new_2d(0.0, 0.0),
    Coordinate::new_2d(10.0, 0.0),
    Coordinate::new_2d(10.0, 10.0),
    Coordinate::new_2d(0.0, 10.0),
    Coordinate::new_2d(0.0, 0.0),
];
let ext = LineString::new(coords)?;
let base_poly = Polygon::new(ext, vec![])?;
let base = vec![base_poly];
let subtract: Vec<Polygon> = vec![]; // Empty for example
let result = difference_polygons_pooled(&base, &subtract)?;