gpt4 book ai didi

django - GeoDjango:在地理 DWithin 查询中只允许使用度数单位的数值

转载 作者:行者123 更新时间:2023-12-05 08:10:12 27 4
gpt4 key购买 nike

我试图在某个点的 5000 米范围内获取 N 个点。我的数据库是 Postgres(PostGis)。我有一个这样的模型:

class Theatre(models.Model):
geom = models.PointField(srid=4326, blank=True, null=True, default=None)
objects = models.GeoManager()

然后我在 django shell 中运行了几行:

Theatre.objects.filter(geom__dwithin=(GEOSGeometry('POINT(30.111199 -97.309990)'), D(m=5000)))

然后出现错误:

ValueError: Only numeric values of degree units are allowed on geographic DWithin queries.

我在 here 中找到了文档它说计算几何距离..

请帮忙..非常感谢!!

最佳答案

派对迟到了一点,但是......

根据 Django's source code如果使用 PostGIS 并且您要查询的字段是“大地测量”(其 SRID 对应于使用非投影单位(例如,纬度/经度)的坐标系)(definition from the docs),则会引发此错误——在这种情况下,您需要传递度数单位的数值而不是 D 对象,如错误消息所示。

不幸的是,这不是一个简单的转换,取决于距赤道的距离;见How do I convert kilometres to degrees in Geodjango/GEOS?

关于django - GeoDjango:在地理 DWithin 查询中只允许使用度数单位的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382484/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com