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



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

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

下面是一个示例,说明如何在不存储任何几何图形的情况下执行距离计算:

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

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

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

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

这将返回几何形状在几何形状5米以内的所有邮政编码。geojango还将使用计算的距离对象向查询集中的每个项目追加一个距离字段。由于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

相关内容

最新更新