[FeatureServer] Vectorformats Django foreign key fields
Vincent Hussey
vincent.hussey at opw.ie
Wed Jun 25 08:45:50 PDT 2014
Hi,
Vectorformats Django Format does not currently support foreign key
fields in models:
>>> from vectorformats.Formats import Django, GeoJSON
>>> from realtime.models import *
>>> qs =
CurrentReading.objects.exclude(station__geometry__isnull=True).select_related()
>>> fields=['value','err_code', 'station.ref', 'sensor.ref']
>>> djf = Django.Django(geodjango="station.geometry", properties=fields)
>>> geoj = GeoJSON.GeoJSON(crs=4326)
>>> geojson = geoj.encode(djf.decode(qs))
Traceback (most recent call last):
File "<console>", line 1, in <module>
File
"/opt/realtime/env/lib/python2.6/site-packages/vectorformats/Formats/Django.py",
line 55, in decode
geom = getattr(res, self.geodjango)
AttributeError: 'CurrentReading' object has no attribute 'station.geometry'
>>>
The following patch addresses this issue:
--- Django.py 2014-06-25 16:41:41.878772339 +0100
+++ Django_revised.py 2014-06-25 16:41:55.262771936 +0100
@@ -20,7 +20,10 @@
geodjango = False
"""
If you have GeoDjango geometry columns, set this to the name of the
-geometry column.
+geometry column e.g.
+ geodjango = 'the_geom'
+This can be in a model linked with a foreign key, e.g.
+ geodjango = 'other_model.the_geom'
"""
pickled_geometry = False
@@ -51,7 +54,10 @@
elif self.geodjango:
geometry = None
- geom = getattr(res, self.geodjango)
+ gd = self.geodjango.split('.')
+ geom = res
+ for g in gd:
+ geom = getattr(geom, g)
if geom:
geometry = {}
geometry['type'] = geom.geom_type
@@ -64,6 +70,10 @@
if self.properties:
for p in self.properties:
- feature.properties[p] = getattr(res, p)
+ pp = p.split('.')
+ prop = res
+ for q in pp:
+ prop = getattr(prop, q)
+ feature.properties[p] = prop
results.append(feature)
return results
Vincent
**********************************************************************
Email Disclaimer: http://www.opw.ie/en/disclaimer/
**********************************************************************
More information about the FeatureServer
mailing list