avoid duplicate points in new ramp altitudeareas → no crashes! \o/

This commit is contained in:
Laura Klünder 2024-08-22 13:12:12 +02:00
parent 4979c137e4
commit f7d1f6736d

View file

@ -493,15 +493,22 @@ class AltitudeArea(LevelGeometryMixin, models.Model):
ramp.altitude = ramp.connected_to[0].area.altitude ramp.altitude = ramp.connected_to[0].area.altitude
continue continue
points = [] # collecting this as a dict to ensure that there are no duplicate coordinates
points = {}
for connected_to in ramp.connected_to: for connected_to in ramp.connected_to:
for intersection in connected_to.intersections: for intersection in connected_to.intersections:
for linestring in assert_multilinestring(intersection): for linestring in assert_multilinestring(intersection):
points.extend([AltitudeAreaPoint(coordinates=coords, altitude=float(connected_to.area.altitude)) points.update({
for coords in linestring.coords]) coords: AltitudeAreaPoint(coordinates=coords,
points.extend([AltitudeAreaPoint(coordinates=marker.geometry.coords, altitude=float(marker.altitude)) altitude=float(connected_to.area.altitude))
for marker in ramp.markers]) for coords in linestring.coords
ramp.points = points })
points.update({
marker.geometry.coords: AltitudeAreaPoint(coordinates=marker.geometry.coords,
altitude=float(marker.altitude))
for marker in ramp.markers
})
ramp.points = list(points.values())
ramp.tmpid = len(areas) ramp.tmpid = len(areas)
areas.append(ramp) areas.append(ramp)