2
在Django中documentation远程查找,我读了这一点:的Django和POSTGIS:使用ST_Distance_sphere
在每个远程查找,但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\\\\[email protected]\'::bytea)) <= 10000.0'}]
感谢
我得到同样的问题。你有没有想过这个? – 2011-07-29 06:22:12