fix collect_arealocation_points

This commit is contained in:
Laura Klünder 2016-12-19 19:56:04 +01:00
parent 43efda06e9
commit d5d2bcad56
2 changed files with 16 additions and 6 deletions

View file

@ -127,16 +127,16 @@ class GraphLevel():
self._built_arealocations = {}
self._built_excludables = {}
for arealocation in self.level.arealocations.all():
self._built_arealocations[arealocation.name] = shapely_to_mpl(arealocation.geometry)
self._built_arealocations[arealocation.name] = arealocation.geometry
if arealocation.routing_inclusion != 'default' or arealocation.package not in public_packages:
self._built_excludables[arealocation.name] = arealocation.geometry
public_area, private_area = get_public_private_area(self.level)
self._built_arealocations[':public'] = shapely_to_mpl(public_area)
self._built_arealocations[':public'] = public_area
self._built_excludables[':public'] = public_area
self._built_arealocations[':private'] = shapely_to_mpl(private_area)
self._built_arealocations[':private'] = private_area
self._built_excludables[':private'] = private_area
def create_doors(self):
@ -269,12 +269,14 @@ class GraphLevel():
def collect_arealocation_points(self):
self.arealocation_points = {}
for name, mpl_arealocation in self._built_arealocations.items():
for name, arealocation in self._built_arealocations.items():
mpl_area = shapely_to_mpl(arealocation)
rooms = [room for room in self.rooms
if room.mpl_clear.intersects_path(mpl_arealocation.exterior, filled=True)]
if any(room.mpl_clear.intersects_path(exterior, filled=True) for exterior in mpl_area.exteriors)]
possible_points = tuple(point for point in sum((room._built_points for room in rooms), []) if point.room)
self.arealocation_points[name] = tuple(point.i for point in possible_points
if mpl_arealocation.contains_point(point.xy))
if mpl_area.contains_point(point.xy))
# Drawing
ctype_colors = {

View file

@ -20,6 +20,10 @@ class MplMultipolygonPath(MplPathProxy):
def __init__(self, polygon):
self.polygons = [MplPolygonPath(polygon) for polygon in assert_multipolygon(polygon)]
@property
def exteriors(self):
return tuple(polygon.exterior for polygon in self.polygons)
def intersects_path(self, path, filled=False):
for polygon in self.polygons:
if polygon.intersects_path(path, filled=filled):
@ -38,6 +42,10 @@ class MplPolygonPath(MplPathProxy):
self.exterior = linearring_to_mpl_path(polygon.exterior)
self.interiors = [linearring_to_mpl_path(interior) for interior in polygon.interiors]
@property
def exteriors(self):
return (self.exterior, )
def intersects_path(self, path, filled=False):
if filled:
if not self.exterior.intersects_path(path, filled=True):