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: {
|
_geometry_colors: {
|
||||||
'building': '#333333',
|
'building': '#333333',
|
||||||
'area': '#FFFFFF',
|
'room': '#FFFFFF',
|
||||||
|
'outside': '#EEFFEE',
|
||||||
'obstacle': '#999999',
|
'obstacle': '#999999',
|
||||||
'door': '#FF00FF'
|
'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'
|
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):
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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'))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue