2013-03-20 20 views
1

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

+0

是的,你可以用geodjango做这两个。 – garnertb 2013-03-20 13:09:38

+0

哦,好吧。但我很不确定。因为几何图形必须先保存?我对么? – iamjoanel 2013-03-20 13:45:02

回答

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))) 

这将返回所有邮政编码的几何图形为5米GEOM的范围内的。 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 
相关问题