another invalid geometry fuckery fix
This commit is contained in:
parent
5eb75591dd
commit
34b5ad58bf
3 changed files with 7 additions and 3 deletions
|
@ -240,7 +240,8 @@ class SingleLevelGeometries(BaseLevelGeometries):
|
|||
# add altitudegroup geometries and split ground colors into them
|
||||
altitudearea_geoms: list[AltitudeAreaGeometries] = []
|
||||
for altitudearea in level.altitudeareas.all(): # noqa
|
||||
altitudearea_prep = prepared.prep(unwrap_geom(altitudearea.geometry).buffer(0))
|
||||
altitudearea.geometry = unwrap_geom(altitudearea.geometry).buffer(0)
|
||||
altitudearea_prep = prepared.prep(unwrap_geom(altitudearea.geometry))
|
||||
altitudearea_colors = {color: {access_restriction: area.intersection(unwrap_geom(altitudearea.geometry))
|
||||
for access_restriction, area in areas.items()
|
||||
if altitudearea_prep.intersects(area)}
|
||||
|
@ -253,8 +254,9 @@ class SingleLevelGeometries(BaseLevelGeometries):
|
|||
for color, color_obstacles in height_obstacles.items():
|
||||
new_color_obstacles = []
|
||||
for obstacle in color_obstacles:
|
||||
if altitudearea_prep.intersects(obstacle.buffer(0)):
|
||||
new_color_obstacles.append(obstacle.buffer(0).intersection(unwrap_geom(altitudearea.geometry)))
|
||||
obstacle = obstacle.buffer(0)
|
||||
if altitudearea_prep.intersects(obstacle):
|
||||
new_color_obstacles.append(obstacle.intersection(unwrap_geom(altitudearea.geometry)))
|
||||
if new_color_obstacles:
|
||||
new_height_obstacles[color] = new_color_obstacles
|
||||
if new_height_obstacles:
|
||||
|
|
|
@ -259,6 +259,7 @@ class LevelRenderData:
|
|||
for color, color_obstacles in height_obstacles.items():
|
||||
new_color_obstacles = []
|
||||
for obstacle in color_obstacles:
|
||||
obstacle = obstacle.buffer(0)
|
||||
if new_geometry_prep.intersects(obstacle):
|
||||
new_color_obstacles.append(
|
||||
obstacle.intersection(unwrap_geom(altitudearea.geometry))
|
||||
|
|
|
@ -140,6 +140,7 @@ class Router:
|
|||
space.areas.add(area.pk)
|
||||
|
||||
for area in level.altitudeareas.all():
|
||||
area.geometry = unwrap_geom(area.geometry).buffer(0)
|
||||
if not space.geometry_prep.intersects(unwrap_geom(area.geometry)):
|
||||
continue
|
||||
for subgeom in assert_multipolygon(accessible_geom.intersection(unwrap_geom(area.geometry))):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue