summaryrefslogtreecommitdiff
path: root/lib/utils/geometry.py
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2024-02-01 19:23:29 +0100
committerGitHub <noreply@github.com>2024-02-01 19:23:29 +0100
commit39a825d82388d38db2910aea84543cec6e76edf6 (patch)
treee3143f1e5ae3952ac898134cfcc68491022f1cc2 /lib/utils/geometry.py
parent78beb13ef0eedda1912f2179b42e27a2a844b186 (diff)
Do not omit "multi_shapes" in geometry collections (#2708)
Diffstat (limited to 'lib/utils/geometry.py')
-rw-r--r--lib/utils/geometry.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/utils/geometry.py b/lib/utils/geometry.py
index 47347a02..739f9660 100644
--- a/lib/utils/geometry.py
+++ b/lib/utils/geometry.py
@@ -114,9 +114,11 @@ def ensure_multi_line_string(thing, min_size=0):
multi_line_string = MultiLineString([thing])
elif thing.geom_type == "GeometryCollection":
multilinestring = []
- for line in thing.geoms:
- if line.geom_type == "LineString":
- multilinestring.append(line)
+ for shape in thing.geoms:
+ if shape.geom_type == "MultiLineString":
+ multilinestring.extend(shape.geoms)
+ elif shape.geom_type == "LineString":
+ multilinestring.append(shape)
multi_line_string = MultiLineString(multilinestring)
if min_size > 0:
multi_line_string = MultiLineString([line for line in multi_line_string.geoms if line.length > min_size])
@@ -146,9 +148,11 @@ def ensure_multi_polygon(thing, min_size=0):
multi_polygon = MultiPolygon([thing])
elif thing.geom_type == "GeometryCollection":
multipolygon = []
- for polygon in thing.geoms:
- if polygon.geom_type == "Polygon":
- multipolygon.append(polygon)
+ for shape in thing.geoms:
+ if shape.geom_type == "MultiPolygon":
+ multipolygon.extend(shape.geoms)
+ elif shape.geom_type == "Polygon":
+ multipolygon.append(shape)
multi_polygon = MultiPolygon(multipolygon)
if min_size > 0:
multi_polygon = MultiPolygon([polygon for polygon in multi_polygon.geoms if polygon.area > min_size])