pub fn buffer_multi_polygon(
    input_multi_polygon: &MultiPolygon,
    distance: f64
) -> MultiPolygon
Expand description

This function returns the buffered (multi-)polygon of the given multi-polygon.

Arguments

  • input_multi_polygon: MultiPolygon to buffer
  • distance: determine how distant from each edge of original polygon to each edge of the result polygon. The sign will be:
    • + for to enlarge (to add paddings, make bigger) the given polygon, and,
    • - for to deflate (to add margins, make smaller) the given polygon

Example

use geo_buffer::buffer_multi_polygon;
use geo::{Polygon, MultiPolygon, LineString};

let p1 = Polygon::new(
    LineString::from(vec![(0., 0.), (2., 0.), (2., 2.), (0., 2.)]), vec![],
);
let p2 = Polygon::new(
    LineString::from(vec![(3., 3.), (5., 3.), (5., 5.), (3., 5.)]), vec![],
);
let mp1 = MultiPolygon::new(vec![p1, p2]);
let mp2 = buffer_multi_polygon(&mp1, 1.);
let expected_exterior = LineString::from(vec![(-1., -1.), (3., -1.), (3., 2.), (6., 2.), (6., 6.), (2., 6.), (2., 3.), (-1., 3.), (-1., -1.)]);
assert_eq!(&expected_exterior, mp2.0[0].exterior())