diff --git a/backend/src/auto_boundaries.rs b/backend/src/auto_boundaries.rs index 9fa8332..772e16f 100644 --- a/backend/src/auto_boundaries.rs +++ b/backend/src/auto_boundaries.rs @@ -144,13 +144,16 @@ fn split_polygon(polygon: Polygon, linestrings: &Vec) -> Vec = linestrings.iter().map(to_i_overlay_contour).collect(); let shapes = shape.slice_by(&splitters, FillRule::NonZero); - shapes.into_iter().map(to_geo_polygon).collect() -} -fn to_geo_polygon(rings: Vec>) -> Polygon { - let mut interiors: Vec = rings.into_iter().map(to_geo_linestring).collect(); - let exterior = interiors.remove(0); - Polygon::new(exterior, interiors) + shapes + .into_iter() + .map(|rings| { + let exterior = rings.into_iter().next().expect("shapes must be non-empty"); + let exterior_line_string = to_geo_linestring(exterior); + // We ignore any interiors + Polygon::new(exterior_line_string, vec![]) + }) + .collect() } fn to_geo_linestring(pts: Vec<[f64; 2]>) -> LineString {