是否可以将geodjango的查询集的输出存储在空间启用的数据库中?
https://docs.djangoproject.com/en/dev/ref/contrib/gis/geoquerysets/#distance-lookups
此示例中的一个显示所有距离。是否可以将其实际存储在数据库中,甚至可以使用geoqueryset.distance的值进行进一步的计算?
答案 0 :(得分:1)
是的,两者都可以在geodjango中完成。
以下是如何在不存储任何几何图形的情况下执行距离计算的示例:
from django.contrib.gis.geos import Point
pnt = Point(0,0)
pnt.distance(Point(0,1))
哪个会返回1.0。 Django queryset API专门用于与数据交互,因此在查询集变得有用之前需要一些持久数据。一旦掌握了数据,尤其是地理空间数据,Django查询集就会变得非常酷。
让我们看看文档中的示例:
Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
这将返回几何形状在距离geom 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