rendermap: improve shadows
This commit is contained in:
parent
6e1c33e59a
commit
eb6ee16f2a
2 changed files with 15 additions and 10 deletions
|
@ -168,20 +168,24 @@ class LevelGeometries():
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def levelconnectors(self):
|
def levelconnectors(self):
|
||||||
return self.get_levelconnectors()
|
return cascaded_union([levelconnector.geometry for levelconnector in self.level.levelconnectors])
|
||||||
|
|
||||||
def intermediate_shadows(self, to_level=None):
|
@cached_property
|
||||||
shadows = self.buildings.buffer(0.3, join_style=JOIN_STYLE.mitre)
|
def intermediate_shadows(self):
|
||||||
shadows = shadows.difference(self.get_levelconnectors(to_level).buffer(0.5, join_style=JOIN_STYLE.mitre))
|
qs = self.level.levelconnectors.prefetch_related('levels').filter(levels__altitude__lt=self.level.altitude)
|
||||||
if to_level is not None:
|
connectors = cascaded_union([levelconnector.geometry for levelconnector in qs])
|
||||||
shadows = shadows.intersection(to_level.geometries.accessible)
|
|
||||||
|
shadows = self.buildings.difference(connectors.buffer(0.3, join_style=JOIN_STYLE.mitre))
|
||||||
|
shadows = shadows.buffer(0.3, join_style=JOIN_STYLE.mitre)
|
||||||
return shadows
|
return shadows
|
||||||
|
|
||||||
|
@cached_property
|
||||||
def hole_shadows(self):
|
def hole_shadows(self):
|
||||||
holes = self.holes.buffer(0.1, join_style=JOIN_STYLE.mitre)
|
holes = self.holes.buffer(0.1, join_style=JOIN_STYLE.mitre)
|
||||||
shadows = holes.difference(self.holes.buffer(-0.3, join_style=JOIN_STYLE.mitre))
|
shadows = holes.difference(self.holes.buffer(-0.3, join_style=JOIN_STYLE.mitre))
|
||||||
|
|
||||||
qs = self.level.levelconnectors.prefetch_related('levels').filter(levels__altitude__lt=self.level.altitude)
|
qs = self.level.levelconnectors.prefetch_related('levels').filter(levels__altitude__lt=self.level.altitude)
|
||||||
print(self.level.name, qs)
|
|
||||||
connectors = cascaded_union([levelconnector.geometry for levelconnector in qs])
|
connectors = cascaded_union([levelconnector.geometry for levelconnector in qs])
|
||||||
|
|
||||||
shadows = shadows.difference(connectors.buffer(0.3, join_style=JOIN_STYLE.mitre))
|
shadows = shadows.difference(connectors.buffer(0.3, join_style=JOIN_STYLE.mitre))
|
||||||
return shadows
|
return shadows
|
||||||
|
|
|
@ -173,7 +173,7 @@ class LevelRenderer():
|
||||||
self.add_svg_image(svg, 'file://'+get_render_path('level-%s.base.png' % level.name))
|
self.add_svg_image(svg, 'file://'+get_render_path('level-%s.base.png' % level.name))
|
||||||
|
|
||||||
contents = self.add_svg_content(svg)
|
contents = self.add_svg_content(svg)
|
||||||
contents.append(self.polygon_svg(self.level.geometries.hole_shadows(),
|
contents.append(self.polygon_svg(self.level.geometries.hole_shadows,
|
||||||
fill_color='#000000',
|
fill_color='#000000',
|
||||||
fill_opacity=0.1))
|
fill_opacity=0.1))
|
||||||
|
|
||||||
|
@ -197,10 +197,11 @@ class LevelRenderer():
|
||||||
higher.append(level)
|
higher.append(level)
|
||||||
|
|
||||||
contents = self.add_svg_content(svg)
|
contents = self.add_svg_content(svg)
|
||||||
|
accessible = self.level.geometries.accessible
|
||||||
for level in higher:
|
for level in higher:
|
||||||
contents.append(self.polygon_svg(level.geometries.intermediate_shadows(to_level=self.level),
|
contents.append(self.polygon_svg(level.geometries.intermediate_shadows.intersection(accessible),
|
||||||
fill_color='#000000',
|
fill_color='#000000',
|
||||||
fill_opacity=0.1))
|
fill_opacity=0.05))
|
||||||
|
|
||||||
for level in higher:
|
for level in higher:
|
||||||
self.add_svg_image(svg, 'file://'+get_render_path('level-%s.base.png' % level.name))
|
self.add_svg_image(svg, 'file://'+get_render_path('level-%s.base.png' % level.name))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue