diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2024-02-01 19:23:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-01 19:23:29 +0100 |
| commit | 39a825d82388d38db2910aea84543cec6e76edf6 (patch) | |
| tree | e3143f1e5ae3952ac898134cfcc68491022f1cc2 /lib/utils/geometry.py | |
| parent | 78beb13ef0eedda1912f2179b42e27a2a844b186 (diff) | |
Do not omit "multi_shapes" in geometry collections (#2708)
Diffstat (limited to 'lib/utils/geometry.py')
| -rw-r--r-- | lib/utils/geometry.py | 16 |
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]) |
