add outside areas and rename former areas to rooms
This commit is contained in:
parent
1ce0e41bb9
commit
218c9a1884
7 changed files with 86 additions and 14 deletions
|
@ -154,7 +154,8 @@ editor = {
|
|||
},
|
||||
_geometry_colors: {
|
||||
'building': '#333333',
|
||||
'area': '#FFFFFF',
|
||||
'room': '#FFFFFF',
|
||||
'outside': '#EEFFEE',
|
||||
'obstacle': '#999999',
|
||||
'door': '#FF00FF'
|
||||
},
|
||||
|
|
36
src/c3nav/mapdata/migrations/0005_auto_20161128_1735.py
Normal file
36
src/c3nav/mapdata/migrations/0005_auto_20161128_1735.py
Normal 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'},
|
||||
),
|
||||
]
|
16
src/c3nav/mapdata/migrations/0006_auto_20161128_1809.py
Normal file
16
src/c3nav/mapdata/migrations/0006_auto_20161128_1809.py
Normal 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')
|
||||
]
|
|
@ -92,16 +92,28 @@ class Building(GeometryMapItem):
|
|||
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'
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Area')
|
||||
verbose_name_plural = _('Areas')
|
||||
default_related_name = 'areas'
|
||||
verbose_name = _('Room')
|
||||
verbose_name_plural = _('Rooms')
|
||||
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):
|
||||
|
|
|
@ -56,12 +56,16 @@ class LevelGeometries():
|
|||
return cascaded_union([building.geometry for building in self.level.buildings.all()])
|
||||
|
||||
@cached_property
|
||||
def areas(self):
|
||||
return cascaded_union([area.geometry for area in self.level.areas.all()])
|
||||
def rooms(self):
|
||||
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
|
||||
def mapped(self):
|
||||
return cascaded_union([self.buildings, self.areas])
|
||||
return cascaded_union([self.buildings, self.outsides])
|
||||
|
||||
@cached_property
|
||||
def obstacles(self):
|
||||
|
@ -73,11 +77,11 @@ class LevelGeometries():
|
|||
|
||||
@cached_property
|
||||
def areas_and_doors(self):
|
||||
return cascaded_union([self.areas, self.raw_doors])
|
||||
return cascaded_union([self.rooms, self.raw_doors])
|
||||
|
||||
@cached_property
|
||||
def walls(self):
|
||||
return self.buildings.difference(self.areas)
|
||||
return self.buildings.difference(self.rooms)
|
||||
|
||||
@cached_property
|
||||
def walls_without_doors(self):
|
||||
|
@ -89,4 +93,4 @@ class LevelGeometries():
|
|||
|
||||
@cached_property
|
||||
def doors(self):
|
||||
return self.raw_doors.difference(self.areas)
|
||||
return self.raw_doors.difference(self.rooms).difference(self.outsides)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
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)
|
||||
|
|
|
@ -67,6 +67,9 @@ class LevelRenderer():
|
|||
contents.append(self.polygon_svg(self.level.geometries.buildings,
|
||||
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,
|
||||
fill_color='#CCCCCC'))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue