【问题标题】:Is it possible to store in a database the output of geodjango's geoqueryset.distance?是否可以将 geodjango 的 geoqueryset.distance 的输出存储在数据库中?
【发布时间】:2013-03-20 12:42:27
【问题描述】:

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

【问题讨论】:

  • 是的,你可以用 geodjango 来做这两件事。
  • 哦,好吧。但我很不确定如何。因为必须先保存几何?我说的对吗?

标签: django geodjango


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多