其他分享
首页 > 其他分享> > 如何使用geodjango从用户位置找到最近点?

如何使用geodjango从用户位置找到最近点?

作者:互联网

我试图使用geodjango找到距离某个位置最近的点.

我尝试使用以下代码:

LocationInfo.objects.filter(coordinates__distance_lte=(user_location, D(km=2)))

但它仅在位置在指定距离内时才有效(在这种情况下为D(km = 2)).

我需要在查询过程中找到离用户最近的点而不使用任何限制.

解决方法:

假设您的LocationInfo具有名为position的几何字段:

对于Django版本> = 1.9:

您可以使用Distance()功能:

from django.contrib.gis.db.models.functions import Distance

LocationInfo.objects.annotate(
    distance=Distance('position', user_location)
).order_by('distance').first()

这将返回最近的user_location对象

对于Django 1.6< = version< 1.9: 您可以使用.distance()方法:

LocationInfo.objects.distance(user_location).order_by('distance').first()

对于Django版本< 1.6: .first()方法不存在,因此您必须获取有序查询集的第一个,如下所示:

 LocationInfo.objects.distance(user_location).order_by('distance')[:1].get()

标签:python,django,geodjango
来源: https://codeday.me/bug/20190522/1154011.html