现在我正在使用原始SQL来查找距离当前用户500米以内的人。

cursor.execute("SELECT user_id FROM myapp_location WHERE\
       GLength(LineStringFromWKB(LineString(asbinary(utm), asbinary(PointFromWKB(point(%s, %s)))))) < %s"\
       ,(user_utm_easting, user_utm_northing, 500));

GeoDjango中我该怎么做?在任何地方编写自定义SQL都有点累。

最佳答案

假设你有合适的模型,

from django.contrib.gis.db import models

class User(models.Model):
    location = models.PointField()
    objects = models.GeoManager()

看起来像是:
User.objects.filter(location__dwithin=(current_user.location, D(m=500)))

但是请注意,MySQL不支持这样的distance lookups

关于python - 如何在GeoDjango中编写此查询? (这是Django中用于地理计算的库),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2447257/

10-09 14:54