gpt4 book ai didi

python - 使用 srid 4326 进行 GeoDjango 距离查询返回 'SpatiaLite does not support distance queries on geometry fields with a geodetic coordinate system.'

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:19 25 4
gpt4 key购买 nike

我正在尝试获取给定纬度/经度 4 公里半径范围内附近的厨房。我的空间后端是spatialite,设置是,

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
'rest_framework',
'oauth2_provider',
'kitchen',
)

DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

这是我的模型

from django.contrib.gis.db import models
from django.contrib.gis.geos import Point

class Kitchen(models.Model):
id = models.CharField(max_length=100,primary_key=True)
#id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100,blank=False)
address = models.CharField(max_length=1000, blank=True, default='')
contact_no = models.CharField(max_length=100,blank=True, default='')
location = models.PointField(srid=4326, geography=True, blank=True, null=True)
objects = models.GeoManager()

我从 Django shell 的查询是,

from kitchen.models import Kitchen
from django.contrib.gis import measure
from django.contrib.gis import geos

current_point = geos.fromstr('POINT(%s %s)' % (76.7698996, 17.338993), srid=4326)
Kitchen.objects.filter(location__distance_lte=(current_point, measure.D(km=4)))

返回以下值错误

SpatiaLite does not support distance queries on geometry fields with a geodetic coordinate system. Distance objects; use a numeric value of your distance in degrees instead.

在模型中设置不同的投影 srid(例如 3857、24381 等)会返回不正确的结果。在此提供一些帮助将不胜感激。

最佳答案

您的问题很可能是 SRID。看来spatialite不支持在具有未投影坐标系的字段上进行这种类型的距离查询。

所以您的方向是正确的,但是只要您在模型定义中启用了 geography=True,将 srid 设置为不同的值就不会产生任何效果。地理类型强制 srid 为 4326,如 django geography docs 中所述。 .

因此,请尝试将 geography=False 和 srid 设置为您正在尝试的投影坐标系之一。

关于python - 使用 srid 4326 进行 GeoDjango 距离查询返回 'SpatiaLite does not support distance queries on geometry fields with a geodetic coordinate system.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286655/

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