diff options
Diffstat (limited to 'lib/utils/geometry.py')
| -rw-r--r-- | lib/utils/geometry.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/utils/geometry.py b/lib/utils/geometry.py index 739f9660..24cf8459 100644 --- a/lib/utils/geometry.py +++ b/lib/utils/geometry.py @@ -8,7 +8,7 @@ import typing import numpy from shapely.geometry import (GeometryCollection, LinearRing, LineString, - MultiLineString, MultiPolygon) + MultiLineString, MultiPoint, MultiPolygon) from shapely.geometry import Point as ShapelyPoint @@ -159,6 +159,26 @@ def ensure_multi_polygon(thing, min_size=0): return multi_polygon +def ensure_multi_point(thing): + """Given a shapely geometry, return a MultiPoint""" + multi_point = MultiPoint() + if thing.is_empty: + return multi_point + if thing.geom_type == "MultiPoint": + return thing + elif thing.geom_type == "Point": + return MultiPoint([thing]) + elif thing.geom_type == "GeometryCollection": + points = [] + for shape in thing.geoms: + if shape.geom_type == "Point": + points.append(shape) + elif shape.geom_type == "MultiPoint": + points.extend(shape.geoms) + return MultiPoint(points) + return multi_point + + def cut_path(points, length): """Return a subsection of at the start of the path that is length units long. |
