avoid duplicate points in new ramp altitudeareas → no crashes! \o/
This commit is contained in:
parent
4979c137e4
commit
f7d1f6736d
1 changed files with 13 additions and 6 deletions
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue