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