From 7179039925da78c6ac79e3e5ff8e75ad2b87d31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sat, 5 Aug 2017 16:15:28 +0200 Subject: [PATCH] splitting areas does not imply splitting their connections --- src/c3nav/mapdata/models/geometry/level.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/c3nav/mapdata/models/geometry/level.py b/src/c3nav/mapdata/models/geometry/level.py index dc9ea340..697c1091 100644 --- a/src/c3nav/mapdata/models/geometry/level.py +++ b/src/c3nav/mapdata/models/geometry/level.py @@ -161,15 +161,20 @@ class AltitudeArea(LevelGeometryMixin, models.Model): # update area connections buffer_area = area.geometry.buffer(0.0005, join_style=JOIN_STYLE.mitre) - new_area_connected_to = [] + buffer_new_area = new_area.geometry.buffer(0.0005, join_style=JOIN_STYLE.mitre) + remove_area_connected_to = [] for other_area in area.connected_to: if not buffer_area.intersects(other_area.geometry): - new_area_connected_to.append(other_area) + new_area.connected_to.append(other_area) + remove_area_connected_to.append(other_area) other_area.connected_to.remove(area) other_area.connected_to.append(new_area) - for other_area in new_area_connected_to: + elif other_area != new_area and buffer_new_area.intersects(other_area.geometry): + new_area.connected_to.append(other_area) + other_area.connected_to.append(new_area) + + for other_area in remove_area_connected_to: area.connected_to.remove(other_area) - new_area.connected_to.extend(new_area_connected_to) break else: raise ValueError