Dans Django documentation, je lis ceci:Django & PostGIS: Distance recherche à l'aide ST_Distance_sphere
Sur chaque recherche à distance, mais dwithin, un troisième élément en option, 'sphéroïde', peuvent être inclus pour dire GeoDjango d'utiliser la fonctions de calcul de distance sphéroïde plus précises sur les champs avec un système de coordonnées géodésiques (par exemple, ST_Distance_Spheroid serait utilisé à la place de ST_Distance_Sphere).
Mais lorsque je tente d'exécuter une recherche à distance avec « distance_lte » sur une base de données PostGIS 1.5, la requête est exécutée avec « ST_Distance » au lieu de « ST_Distance_sphere ». Pourquoi ? Ai-je oublié quelque chose?
stations = Station.objects.filter(point__distance_lte=(pnt, D(km=10))).count()
from django.db import connection
print connection.queries
qui imprime ceci:
[{'time': '0.144', 'sql':
'SELECT "spatial_ref_sys"."srid", "spatial_ref_sys"."auth_name", "spatial_ref_sys"."auth_srid", "spatial_ref_sys"."srtext", "spatial_ref_sys"."proj4text" FROM "spatial_ref_sys" WHERE "spatial_ref_sys"."srid" = 900913 '},
{'time': '0.903', 'sql':
'SELECT COUNT(*) FROM "prices_station" WHERE ST_Distance("prices_station"."point", ST_GeomFromEWKB(E\'\\\\001\\\\001\\\\000\\\\000 1\\\\277\\\\015\\\\000\\\\270\\\\036\\\\205\\\\353Q\\\\270\\\\372\\\\277H\\\\341z\\\\024\\\\256\\\\[email protected]\'::bytea)) <= 10000.0'}]
Merci
J'ai le même problème. Avez-vous déjà compris cela? –