PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment satisfaire la contrainte "force_srid_coordinate" avec GeoDjango/PostGIS ?

Il semble que vous essayez d'ajouter un nouvel ArchivrItem en procédant comme suit :

item = ArchivrItem(coordinate='POINT(51.520667 -0.094833)')
item.save()

Et cela n'obtient pas le bon SRID par défaut pour une raison dont je ne suis pas sûr. Cependant, le spécifier explicitement devrait fonctionner, par exemple :

from django.contrib.gis.geos import Point
item = ArchivrItem(coordinate=Point(-0.094833, 51.520667, srid=4326))
item.save()

Je dirais que le srid est facultatif s'il correspond à la définition du modèle, mais il n'y a pas de mal à le spécifier, et vous pouvez voir si le simple fait d'utiliser l'objet le résout de toute façon. https ://docs.djangoproject.com/en/dev/ref/contrib/gis/db-api/#creating-and-saving-geographic-models a quelques exemples supplémentaires.

[À part, notez que POINT() est X puis Y, c'est-à-dire lon puis lat, pas lat/lon. Vous pouvez mettre un SRID s'il s'agit d'un WKT étendu avec "SRID=4326;POINT(-0.094833 51.520667)"]