Я пытаюсь найти соседние кухни в радиусе 4 км от данного лата/долго. Моя пространственная Бэкэнд SpatiaLite и настройки,Запрос расстояния GeoDjango с srid 4326 возвращает '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()
Мой запрос от Джанго оболочки,
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__distanc e_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.
Установка другой проецируемой строки в модели (напр. 3857, 24381 и т. Д.) Возвращает неверные результаты. Некоторая помощь здесь будет принята с благодарностью.
С 'srid = 3857, geography = False', он возвращает неверные результаты (все кухни). – Dev