Source code for stelar.client.spatial

import geojson

from .proxy.fieldvalidation import AnyField


[docs] class GeoJSON(AnyField): """ A field for GeoJSON data. """ def __init__(self, *args, **kwargs): super().__init__(repr_type="GeoJSON", *args, **kwargs) self.add_check(self.to_geojson, 5)
[docs] def to_geojson(self, value): try: value = geojson.GeoJSON.to_instance(value, strict=True) except ValueError: raise except Exception as e: raise ValueError("Invalid format for GeoJSON object") from e if not isinstance(value, geojson.GeoJSON): raise ValueError(f"Invalid object for GeoJSON: {value}") if not value.is_valid: raise ValueError(f"Invalid GeoJSON object: {value.errors()}") return value, False
[docs] def convert_to_proxy(self, value, **kwargs): if value is None: return None return geojson.GeoJSON.to_instance(value)
[docs] def convert_to_entity(self, value, **kwargs): return value
[docs] def default_value(self): if hasattr(self, "default"): return self.default elif self.nullable: return None else: raise NotImplementedError()
[docs] def repr_type(self): return self._repr_type