use geo::{Simplify, SimplifyVw};
use geo_types::Geometry;
pub fn simplify_geometry(
geom: Geometry<f64>,
tolerance: f64,
preserve_topology: bool,
) -> Geometry<f64> {
match geom {
Geometry::Polygon(p) => {
if preserve_topology {
Geometry::Polygon(p.simplify_vw(tolerance))
} else {
Geometry::Polygon(p.simplify(tolerance))
}
}
Geometry::MultiPolygon(mp) => {
if preserve_topology {
Geometry::MultiPolygon(mp.simplify_vw(tolerance))
} else {
Geometry::MultiPolygon(mp.simplify(tolerance))
}
}
Geometry::LineString(ls) => {
if preserve_topology {
Geometry::LineString(ls.simplify_vw(tolerance))
} else {
Geometry::LineString(ls.simplify(tolerance))
}
}
other => other,
}
}