在 Django文档中,我读到:
在除 dwithin 之外的每个距离查找中,可以包含一个可选的第三个元素“椭球体”,以告诉 GeoDjango 在具有大地坐标系的字段上使用更准确的椭球体距离计算函数(例如,将使用 ST_Distance_Spheroid 代替 ST_Distance_Sphere)。
但是,当我尝试在 Postgis 1.5 数据库上使用“distance_lte”执行距离查找时,查询是使用“ST_Distance”而不是“ST_Distance_sphere”执行的。为什么 ?我是不是忘记了什么?
stations = Station.objects.filter(point__distance_lte=(pnt, D(km=10))).count()
from django.db import connection
print connection.queries
打印这个:
[{'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\\\\007H@\'::bytea)) <= 10000.0'}]
谢谢