1

是否可以将 geodjango 查询集的输出存储在启用空间的数据库中?
https://docs.djangoproject.com/en/dev/ref/contrib/gis/geoquerysets/#distance-lookups
此示例中显示的所有距离。是否可以将其实际存储在数据库中,甚至可以使用 geoqueryset.distance 的值进行进一步计算?

4

1 回答 1

1

是的,两者都可以在 geodjango 中完成。

以下是如何在不存储任何几何图形的情况下执行距离计算的示例:

from django.contrib.gis.geos import Point
pnt = Point(0,0)
pnt.distance(Point(0,1))

这将返回 1.0。Django 查询集 API 是专门为与数据交互而构建的,因此在查询集变得有用之前,您需要一些持久性数据。一旦有了数据,尤其是地理空间数据,Django 查询集就会变得非常酷。

让我们看一下文档中的示例:

Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))

这将返回几何在 5 米范围内的所有邮政编码。GeoDjango 还将使用计算的距离对象将距离字段附加到查询集中的每个项目。由于 django 只是 python,因此您可以将距离值用于您想要的任何疯狂计算:

zips = Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
for zip_code in zips:
    print zip_code.name, zip_code.distance.m
于 2013-03-20T20:55:16.630 回答