add outside areas and rename former areas to rooms

This commit is contained in:
Laura Klünder 2016-11-28 19:15:36 +01:00
parent 1ce0e41bb9
commit 218c9a1884
7 changed files with 86 additions and 14 deletions

View file

@ -154,7 +154,8 @@ editor = {
}, },
_geometry_colors: { _geometry_colors: {
'building': '#333333', 'building': '#333333',
'area': '#FFFFFF', 'room': '#FFFFFF',
'outside': '#EEFFEE',
'obstacle': '#999999', 'obstacle': '#999999',
'door': '#FF00FF' 'door': '#FF00FF'
}, },

View file

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-11-28 17:35
from __future__ import unicode_literals
import c3nav.mapdata.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0004_auto_20161128_1536'),
]
operations = [
migrations.CreateModel(
name='Outside',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.SlugField(unique=True, verbose_name='Name')),
('geometry', c3nav.mapdata.fields.GeometryField()),
('level', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='outsides', to='mapdata.Level', verbose_name='level')),
('package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='outsides', to='mapdata.Package', verbose_name='map package')),
],
options={
'verbose_name_plural': 'Outside Areas',
'default_related_name': 'outsides',
'verbose_name': 'Outside Area',
},
),
migrations.AlterModelOptions(
name='area',
options={'verbose_name': 'Inside Area', 'verbose_name_plural': 'Inside Areas'},
),
]

View file

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-11-28 18:09
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('mapdata', '0005_auto_20161128_1735'),
]
operations = [
migrations.RenameModel('Area', 'Room')
]

View file

@ -92,16 +92,28 @@ class Building(GeometryMapItem):
default_related_name = 'buildings' default_related_name = 'buildings'
class Area(GeometryMapItem): class Room(GeometryMapItem):
""" """
An accessible area like a room. Can also be outside. Can overlap. An accessible area like a room. Can overlap.
""" """
geomtype = 'polygon' geomtype = 'polygon'
class Meta: class Meta:
verbose_name = _('Area') verbose_name = _('Room')
verbose_name_plural = _('Areas') verbose_name_plural = _('Rooms')
default_related_name = 'areas' default_related_name = 'rooms'
class Outside(GeometryMapItem):
"""
An accessible outdoor area like a court. Can overlap.
"""
geomtype = 'polygon'
class Meta:
verbose_name = _('Outside Area')
verbose_name_plural = _('Outside Areas')
default_related_name = 'outsides'
class Obstacle(GeometryMapItem): class Obstacle(GeometryMapItem):

View file

@ -56,12 +56,16 @@ class LevelGeometries():
return cascaded_union([building.geometry for building in self.level.buildings.all()]) return cascaded_union([building.geometry for building in self.level.buildings.all()])
@cached_property @cached_property
def areas(self): def rooms(self):
return cascaded_union([area.geometry for area in self.level.areas.all()]) return cascaded_union([room.geometry for room in self.level.rooms.all()]).intersection(self.buildings)
@cached_property
def outsides(self):
return cascaded_union([outside.geometry for outside in self.level.outsides.all()]).difference(self.buildings)
@cached_property @cached_property
def mapped(self): def mapped(self):
return cascaded_union([self.buildings, self.areas]) return cascaded_union([self.buildings, self.outsides])
@cached_property @cached_property
def obstacles(self): def obstacles(self):
@ -73,11 +77,11 @@ class LevelGeometries():
@cached_property @cached_property
def areas_and_doors(self): def areas_and_doors(self):
return cascaded_union([self.areas, self.raw_doors]) return cascaded_union([self.rooms, self.raw_doors])
@cached_property @cached_property
def walls(self): def walls(self):
return self.buildings.difference(self.areas) return self.buildings.difference(self.rooms)
@cached_property @cached_property
def walls_without_doors(self): def walls_without_doors(self):
@ -89,4 +93,4 @@ class LevelGeometries():
@cached_property @cached_property
def doors(self): def doors(self):
return self.raw_doors.difference(self.areas) return self.raw_doors.difference(self.rooms).difference(self.outsides)

View file

@ -1,4 +1,4 @@
from c3nav.mapdata.models import Level, Package, Source from c3nav.mapdata.models import Level, Package, Source
from c3nav.mapdata.models.geometry import Area, Building, Door, Obstacle from c3nav.mapdata.models.geometry import Building, Door, Obstacle, Outside, Room
ordered_models = (Package, Level, Source, Building, Area, Door, Obstacle) ordered_models = (Package, Level, Source, Building, Room, Outside, Door, Obstacle)

View file

@ -67,6 +67,9 @@ class LevelRenderer():
contents.append(self.polygon_svg(self.level.geometries.buildings, contents.append(self.polygon_svg(self.level.geometries.buildings,
fill_color='#D5D5D5')) fill_color='#D5D5D5'))
contents.append(self.polygon_svg(self.level.geometries.outsides,
fill_color='#DCE6DC'))
contents.append(self.polygon_svg(self.level.geometries.walls_shadow, contents.append(self.polygon_svg(self.level.geometries.walls_shadow,
fill_color='#CCCCCC')) fill_color='#CCCCCC'))