in render_full immediate levels now cast shadows
This commit is contained in:
parent
a1ed7534d9
commit
a54a85da3b
8 changed files with 54 additions and 17 deletions
|
@ -1,10 +1,12 @@
|
|||
from django.db import models
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from shapely.geometry import CAP_STYLE
|
||||
from shapely.geometry import JOIN_STYLE
|
||||
from shapely.ops import cascaded_union
|
||||
|
||||
from c3nav.mapdata.models.base import MapItem
|
||||
from c3nav.mapdata.utils import assert_multipolygon
|
||||
|
||||
|
||||
class Level(MapItem):
|
||||
|
@ -136,3 +138,30 @@ class LevelGeometries():
|
|||
@cached_property
|
||||
def doors(self):
|
||||
return self.raw_doors.difference(self.areas)
|
||||
|
||||
def get_levelconnectors(self, to_level=None):
|
||||
queryset = self.level.levelconnectors.prefetch_related('levels')
|
||||
print(to_level)
|
||||
if to_level is not None:
|
||||
queryset = queryset.filter(levels=to_level)
|
||||
for item in queryset:
|
||||
print(item.levels)
|
||||
return cascaded_union([levelconnector.geometry for levelconnector in queryset])
|
||||
|
||||
@cached_property
|
||||
def levelconnectors(self):
|
||||
return self.get_levelconnectors()
|
||||
|
||||
def intermediate_shadows(self, to_level=None):
|
||||
rings = []
|
||||
for polygon in assert_multipolygon(self.buildings):
|
||||
rings.append(polygon.exterior)
|
||||
rings.extend(polygon.interiors)
|
||||
|
||||
objects = []
|
||||
levelconnectors = self.get_levelconnectors(to_level)
|
||||
for ring in rings:
|
||||
objects.append(ring.difference(levelconnectors))
|
||||
lines = cascaded_union(objects)
|
||||
|
||||
return lines.buffer(0.1, cap_style=CAP_STYLE.flat, join_style=JOIN_STYLE.mitre)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue