2011-08-12 10 views
5

Según https://docs.djangoproject.com/en/1.3/ref/contrib/gis/db-api/, Spatialite admite GeoQuerySet.distance(). Sin embargo, después de haber importado una lista de áreas (MultiPolygon como mpoly atributo), estoy tratando de hacer lo siguiente:¿Necesito una configuración específica para Spatialite con GeoDjango?

Area.objects.all().distance(center) 

Y en vez de algo útil, solo me dan un mensaje de error: "ValueError: SQLite no lo hace admite cálculos de distancia lineal en sistemas de coordenadas geodésicas. "

¿Qué sucede aquí, necesito una configuración especial en Spatialite o la documentación es incorrecta?

Respuesta

6

No necesita hacer nada con respecto a spatialite, sino cambiar el sistema de coordenadas (srid) que está utilizando. Spatialite hace cálculos de distancia solo en sistemas de coordenadas geográficas, no geodésicos. Verifique el SRID que tiene en la definición de su modelo. Alternativamente, también puede cambiar al backend postgis.

+0

Excelente, configuré mi campo de Geometría en 900913 y al menos algo funcionó. Tengo que descubrir qué proyección realmente necesito, pero ese es un gran comienzo. ¡Gracias! –

+0

Cómo hacer eso en un PointField() ?? –

Cuestiones relacionadas