gpt4 book ai didi

python - 如何使用 tastypie 和 geodjango 测量距离?

转载 作者:行者123 更新时间:2023-11-28 17:40:11 25 4
gpt4 key购买 nike

使用 Tastypie 和 GeoDjango,我试图返回位于某个点 1 英里以内的建筑物的结果。

TastyPie documentation指出尚不支持距离查找,但我发现人们正在使用它的示例,例如 this discussionthis discussion在 StackOverflow 上,但没有可以应用的工作代码示例。

我尝试使用的想法是,如果我将 GET 命令附加到 URL 的末尾,则返回附近的位置,例如:

http://website.com/api/?format=json&building_point__distance_lte=[{"type": "Point", "coordinates": [153.09537, -27.52618]},{"type": "D", "m" : 1}]

但是当我尝试这样做时,我得到的只是:

{"error": "Invalid resource lookup data provided (mismatched type)."}

几天来我一直在研究 Tastypie 文档,只是不知道如何实现它。

我会提供更多示例,但我知道它们都很糟糕。感谢所有建议,谢谢!

最佳答案

得到它的工作,这里是后代的例子:

在 api.py 中,创建如下所示的资源:

from django.contrib.gis.geos import *

class LocationResource(ModelResource):
class Meta:
queryset = Building.objects.all()
resource_name = 'location'

def apply_sorting(self, objects, options=None):
if options and "longitude" in options and "latitude" in options:
pnt = fromstr("POINT(" + options['latitude'] + " " + options['longitude'] + ")", srid=4326)
return objects.filter(building_point__distance_lte=(pnt, 500))

return super(LocationResource, self).apply_sorting(objects, options)

“建筑物”字段在 models.py 中定义为 PointField。

然后在资源的 URL 中,附加以下内容,例如:

&latitude=-88.1905699999999939&longitude=40.0913469999999990

这将返回 500 米内的所有对象。

关于python - 如何使用 tastypie 和 geodjango 测量距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25413925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com