Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用tastypie和geodjango测量距离?_Python_Django_Tastypie_Geodjango - Fatal编程技术网

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

Python 如何使用tastypie和geodjango测量距离?,python,django,tastypie,geodjango,Python,Django,Tastypie,Geodjango,使用Tastypie和GeoDjango,我试图返回距离点1英里以内的建筑物的结果 这些州还不支持距离查找,但我发现人们可以使用它,比如和StackOverflow,但没有可以应用的工作代码示例 我尝试使用的想法是,如果我在URL末尾附加GET命令,则会返回附近的位置,例如: http://website.com/api/?format=json&building_point__distance_lte=[{"type": "Point", "coordinates": [153.095

使用Tastypie和GeoDjango,我试图返回距离点1英里以内的建筑物的结果

这些州还不支持距离查找,但我发现人们可以使用它,比如和StackOverflow,但没有可以应用的工作代码示例

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

http://website.com/api/?format=json&building_point__distance_lte=[{"type": "Point", "coordinates": [153.09537, -27.52618]},{"type": "D", "m" : 1}]
&latitude=-88.1905699999999939&longitude=40.0913469999999990
但当我尝试时,我得到的回报是:

{"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)
“building”字段在models.py中定义为PointField

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

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

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

这应该在
apply\u filters
中,而不是
apply\u sorting
中。