Ejemplo n.º 1
0
 def __str__(self):
     geom = self['geometry'] or '{}'
     if isinstance(geom, dict):
         return json.dumps(self, cls=JSONEncoder)
     keys = self.viewkeys() - {'geometry'}
     props = json.dumps({k: self[k] for k in keys}, cls=JSONEncoder)[1:-1]
     feature = '{"geometry": %s, %s}' % (geom, props)
     return feature
Ejemplo n.º 2
0
 def geojson(self):
     if not self.is_serialized('geometry'):
         return self._dumps()
     geom = self['geometry'] or '{}'
     keys = self.viewkeys() - {'geometry'}
     props = json.dumps({k: self[k] for k in keys}, cls=JSONEncoder)[1:-1]
     return '{"geometry": %s, %s}' % (str(geom), props)
Ejemplo n.º 3
0
 def geojson(self):
     if not self.is_serialized('geometry'):
         return self._dumps()
     geom = self['geometry'] or '{}'
     keys = self.viewkeys() - {'geometry'}
     props = json.dumps({k: self[k] for k in keys}, cls=JSONEncoder)[1:-1]
     return '{"geometry": %s, %s}' % (str(geom), props)
Ejemplo n.º 4
0
 def geojson(self):
     if not self.has_serialized_geom:
         return self._dumps()
     features = ','.join(map(str, self['features']))
     keys = self.viewkeys() - {'features'}
     collection = '%s, "features": [' % json.dumps(
         {k: self[k] for k in keys}, cls=JSONEncoder)[:-1]
     return ''.join([collection, features, ']}'])
Ejemplo n.º 5
0
 def geojson(self):
     if not self.has_serialized_geom:
         return self._dumps()
     features = ','.join(map(str, self['features']))
     keys = self.viewkeys() - {'features'}
     collection = '%s, "features": [' % json.dumps(
         {k: self[k]
          for k in keys}, cls=JSONEncoder)[:-1]
     return ''.join([collection, features, ']}'])
Ejemplo n.º 6
0
 def to_python(self, value):
     if value in self.empty_values:
         return None
     # Work with a single GeoJSON geometry or a Feature. Avoid parsing
     # overhead unless we have a true "Feature".
     if '"Feature",' in value:
         d = json.loads(value)
         value = json.dumps(d.get('geometry'))
     elif isinstance(value, collections.Mapping):
         value = json.dumps(value.get('geometry') or value)
     # Handle a comma delimited extent.
     elif list(value).count(',') == 3:
         value = Envelope(value.split(',')).polygon.ExportToWkt()
     try:
         geom = gdal.OGRGeometry(value)
     except (gdal.OGRException, TypeError, ValueError):
         raise forms.ValidationError(self.error_messages['invalid_geom'])
     if not geom.srs:
         geom.srid = self.srid or self.widget.map_srid
     return geom
Ejemplo n.º 7
0
 def to_python(self, value):
     if value in self.empty_values:
         return None
     # Work with a single GeoJSON geometry or a Feature. Avoid parsing
     # overhead unless we have a true "Feature".
     if '"Feature",' in value:
         d = json.loads(value)
         value = json.dumps(d.get('geometry'))
     # Handle a comma delimited extent.
     elif list(value).count(',') == 3:
         value = Envelope(value.split(',')).polygon.ExportToWkt()
     try:
         geom = gdal.OGRGeometry(value)
     except (gdal.OGRException, TypeError, ValueError):
         raise forms.ValidationError(self.error_messages['invalid_geom'])
     if not geom.srs:
         geom.srid = self.srid or self.widget.map_srid
     return geom
Ejemplo n.º 8
0
 def to_python(self, value):
     if value in self.empty_values:
         return None
     sref = None
     # Work with a single GeoJSON geometry or a Feature.
     value = json.loads(value) if '"Feature",' in value else value
     if isinstance(value, collections.Mapping):
         feat = sc.as_feature(value)
         value = json.dumps(feat.get('geometry') or value)
         sref = feat.srs
     # Handle a comma delimited extent.
     elif list(value).count(',') == 3:
         value = Envelope(value.split(',')).polygon.ExportToWkt()
     try:
         geom = gdal.OGRGeometry(value, srs=getattr(sref, 'wkt', None))
     except (gdal.OGRException, TypeError, ValueError):
         raise forms.ValidationError(self.error_messages['invalid_geom'])
     if not geom.srs:
         geom.srid = self.srid or self.widget.map_srid
     return geom
Ejemplo n.º 9
0
 def to_python(self, value):
     if value in self.empty_values:
         return None
     sref = None
     # Work with a single GeoJSON geometry or a Feature.
     value = json.loads(value) if '"Feature"' in value else value
     if isinstance(value, collections.Mapping):
         feat = sc.as_feature(value)
         value = json.dumps(feat.get('geometry') or value)
         sref = feat.srs
     # Handle a comma delimited extent.
     elif list(value).count(',') == 3:
         value = Envelope(value.split(',')).polygon.ExportToWkt()
     try:
         geom = gdal.OGRGeometry(value, srs=getattr(sref, 'wkt', None))
     except (gdal.GDALException, TypeError, ValueError):
         raise forms.ValidationError(self.error_messages['invalid_geom'],
                                     code='invalid_geom')
     if not geom.srs:
         geom.srid = self.srid or self.widget.map_srid
     return geom
Ejemplo n.º 10
0
 def _dumps(self):
     return json.dumps(self, cls=JSONEncoder)
Ejemplo n.º 11
0
 def to_internal_value(self, data):
     # forms.GeometryField cannot handle geojson dicts.
     if isinstance(data, collections.Mapping):
         data = json.dumps(data)
     field = fields.GeometryField(widget=forms.BaseGeometryWidget())
     return field.to_python(data)
Ejemplo n.º 12
0
 def to_internal_value(self, data):
     # forms.GeometryField cannot handle geojson dicts.
     if isinstance(data, dict):
         data = json.dumps(data)
     return forms.GeometryField().to_python(data)
Ejemplo n.º 13
0
 def to_internal_value(self, data):
     # forms.GeometryField cannot handle geojson dicts.
     if isinstance(data, collections.Mapping):
         data = json.dumps(data)
     field = fields.GeometryField(widget=forms.BaseGeometryWidget())
     return field.to_python(data)
Ejemplo n.º 14
0
 def from_native(self, value):
     # forms.GeometryField cannot handle geojson dicts.
     if isinstance(value, dict):
         value = json.dumps(value)
     return super(GeometryField, self).from_native(value)
Ejemplo n.º 15
0
 def __str__(self):
     features = ','.join(map(str, self['features']))
     keys = self.viewkeys() - {'features'}
     collection = '%s, "features": [' % json.dumps(
         {k: self[k] for k in keys}, cls=JSONEncoder)[:-1]
     return ''.join([collection, features, ']}'])
Ejemplo n.º 16
0
 def _dumps(self):
     return json.dumps(self, cls=JSONEncoder)
Ejemplo n.º 17
0
 def to_internal_value(self, data):
     # forms.GeometryField cannot handle geojson dicts.
     if isinstance(data, dict):
         data = json.dumps(data)
     return forms.GeometryField().to_python(data)