是否可以在数据库中存储geodjango的geoqueryset.distance的输出?

时间:2013-03-20 12:42:28

标签: django geodjango

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

1 个答案:

答案 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