remove DirectedLineGeometryMapItemWithLevel

This commit is contained in:
Laura Klünder 2017-05-04 12:28:17 +02:00
parent 5de423d5a0
commit c7cbe277a7
2 changed files with 29 additions and 34 deletions

View file

@ -1,8 +1,8 @@
import hashlib
import json import json
import mimetypes import mimetypes
from collections import OrderedDict
import hashlib
from collections import OrderedDict
from django.http import Http404, HttpResponse, HttpResponseNotModified from django.http import Http404, HttpResponse, HttpResponseNotModified
from rest_framework.decorators import detail_route, list_route from rest_framework.decorators import detail_route, list_route
from rest_framework.response import Response from rest_framework.response import Response
@ -11,7 +11,7 @@ from rest_framework.viewsets import ReadOnlyModelViewSet, ViewSet
from c3nav.access.apply import filter_arealocations_by_access, filter_queryset_by_access from c3nav.access.apply import filter_arealocations_by_access, filter_queryset_by_access
from c3nav.mapdata.lastupdate import get_last_mapdata_update from c3nav.mapdata.lastupdate import get_last_mapdata_update
from c3nav.mapdata.models import GEOMETRY_MAPITEM_TYPES, AreaLocation, Level, LocationGroup, Source from c3nav.mapdata.models import GEOMETRY_MAPITEM_TYPES, AreaLocation, Level, LocationGroup, Source
from c3nav.mapdata.models.geometry import DirectedLineGeometryMapItemWithLevel from c3nav.mapdata.models.geometry import Stair
from c3nav.mapdata.search import get_location from c3nav.mapdata.search import get_location
from c3nav.mapdata.serializers.main import LevelSerializer, SourceSerializer from c3nav.mapdata.serializers.main import LevelSerializer, SourceSerializer
from c3nav.mapdata.utils.cache import (CachedReadOnlyViewSetMixin, cache_mapdata_api_response, get_bssid_areas_cached, from c3nav.mapdata.utils.cache import (CachedReadOnlyViewSetMixin, cache_mapdata_api_response, get_bssid_areas_cached,
@ -91,7 +91,7 @@ class GeometryViewSet(ViewSet):
if issubclass(mapitemtype, AreaLocation): if issubclass(mapitemtype, AreaLocation):
queryset = sorted(queryset, key=AreaLocation.get_sort_key) queryset = sorted(queryset, key=AreaLocation.get_sort_key)
if issubclass(mapitemtype, DirectedLineGeometryMapItemWithLevel): if issubclass(mapitemtype, Stair):
results.extend(obj.to_shadow_geojson() for obj in queryset) results.extend(obj.to_shadow_geojson() for obj in queryset)
results.extend(obj.to_geojson() for obj in queryset) results.extend(obj.to_geojson() for obj in queryset)

View file

@ -68,35 +68,6 @@ class GeometryMapItemWithLevel(GeometryMapItem):
return result return result
class DirectedLineGeometryMapItemWithLevel(GeometryMapItemWithLevel):
geomtype = 'polyline'
class Meta:
abstract = True
def to_geojson(self):
result = super().to_geojson()
original_geometry = result['geometry']
draw = self.geometry.buffer(0.05, join_style=JOIN_STYLE.mitre, cap_style=CAP_STYLE.flat)
result['geometry'] = format_geojson(mapping(draw))
result['original_geometry'] = original_geometry
return result
def to_shadow_geojson(self):
shadow = self.geometry.parallel_offset(0.03, 'right', join_style=JOIN_STYLE.mitre)
shadow = shadow.buffer(0.019, join_style=JOIN_STYLE.mitre, cap_style=CAP_STYLE.flat)
return OrderedDict((
('type', 'Feature'),
('properties', OrderedDict((
('type', 'shadow'),
('original_type', self.__class__.__name__.lower()),
('original_name', self.name),
('level', self.level.name),
))),
('geometry', format_geojson(mapping(shadow), round=False)),
))
class Building(GeometryMapItemWithLevel): class Building(GeometryMapItemWithLevel):
""" """
The outline of a building on a specific level The outline of a building on a specific level
@ -177,15 +148,39 @@ class Escalator(GeometryMapItemWithLevel):
return result return result
class Stair(DirectedLineGeometryMapItemWithLevel): class Stair(GeometryMapItemWithLevel):
""" """
A stair A stair
""" """
geomtype = 'polyline'
class Meta: class Meta:
verbose_name = _('Stair') verbose_name = _('Stair')
verbose_name_plural = _('Stairs') verbose_name_plural = _('Stairs')
default_related_name = 'stairs' default_related_name = 'stairs'
def to_geojson(self):
result = super().to_geojson()
original_geometry = result['geometry']
draw = self.geometry.buffer(0.05, join_style=JOIN_STYLE.mitre, cap_style=CAP_STYLE.flat)
result['geometry'] = format_geojson(mapping(draw))
result['original_geometry'] = original_geometry
return result
def to_shadow_geojson(self):
shadow = self.geometry.parallel_offset(0.03, 'right', join_style=JOIN_STYLE.mitre)
shadow = shadow.buffer(0.019, join_style=JOIN_STYLE.mitre, cap_style=CAP_STYLE.flat)
return OrderedDict((
('type', 'Feature'),
('properties', OrderedDict((
('type', 'shadow'),
('original_type', self.__class__.__name__.lower()),
('original_name', self.name),
('level', self.level.name),
))),
('geometry', format_geojson(mapping(shadow), round=False)),
))
class Obstacle(GeometryMapItemWithLevel): class Obstacle(GeometryMapItemWithLevel):
""" """