faster serialization for graphedges

This commit is contained in:
Laura Klünder 2017-11-25 18:04:26 +01:00
parent 6288a1304f
commit f7d5c3cdaf

View file

@ -2,13 +2,11 @@ from collections import OrderedDict
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from shapely.geometry import LineString, mapping
from c3nav.mapdata.fields import GeometryField from c3nav.mapdata.fields import GeometryField
from c3nav.mapdata.models.access import AccessRestrictionMixin from c3nav.mapdata.models.access import AccessRestrictionMixin
from c3nav.mapdata.models.base import TitledMixin from c3nav.mapdata.models.base import TitledMixin
from c3nav.mapdata.models.geometry.space import SpaceGeometryMixin from c3nav.mapdata.models.geometry.space import SpaceGeometryMixin
from c3nav.mapdata.utils.json import format_geojson
class GraphNode(SpaceGeometryMixin, models.Model): class GraphNode(SpaceGeometryMixin, models.Model):
@ -56,7 +54,6 @@ class GraphEdge(AccessRestrictionMixin, models.Model):
unique_together = (('from_node', 'to_node'), ) unique_together = (('from_node', 'to_node'), )
def to_geojson(self, instance=None) -> dict: def to_geojson(self, instance=None) -> dict:
geometry = LineString([self.from_node.geometry, self.to_node.geometry])
result = OrderedDict(( result = OrderedDict((
('type', 'Feature'), ('type', 'Feature'),
('properties', OrderedDict(( ('properties', OrderedDict((
@ -65,7 +62,10 @@ class GraphEdge(AccessRestrictionMixin, models.Model):
('from_node', self.from_node_id), ('from_node', self.from_node_id),
('to_node', self.to_node_id), ('to_node', self.to_node_id),
))), ))),
('geometry', format_geojson(mapping(geometry), round=False)), ('geometry', {
'type': 'LineString',
'coordinates': (self.from_node.geometry.coords[0], self.to_node.geometry.coords[0]),
}),
)) ))
if self.waytype_id is not None: if self.waytype_id is not None:
result['properties']['color'] = self.waytype.color result['properties']['color'] = self.waytype.color