From 2439adafa8592995d9acead47ef2802d5d95c373 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Fri, 29 Mar 2024 10:25:02 +0100 Subject: Add "the tartan universe" (#2782) --- lib/utils/geometry.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'lib/utils/geometry.py') 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. -- cgit v1.2.3