我正在尝试做简单的 geodjango 应用程序,其中包含商店列表,当您在其中输入地址时,它会将最近的商店返回到您的位置。
我正在关注使用 PostgreSQL 和 Postgis 的教程,但我想使用 SQLite 和 SpatiaLite(我想稍后在另一个使用 SQLite 的应用程序中使用它,所以我不知道我是否会搞砸,如果我尝试将其更改为 PostgreSQL。我通常不使用 Python、SQLite 或 PostgreSQL)
当我尝试进行查询并计算距离时遇到问题。
在我的models.py我有:
from django.contrib.gis.db import models as gis_models
from django.contrib.gis import geos
from django.db import models
class Shop(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=100)
city = models.CharField(max_length=50)
location = gis_models.PointField(u"longitude/latitude", geography=True, blank=True, null=True)
gis = gis_models.GeoManager()
objects = models.Manager()
在views.py我有功能:
def get_shops(longitude, latitude):
current_point = geos.fromstr("POINT(%s %s)" % (longitude, latitude))
distance_from_point = {'km': 10}
shops = models.Shop.gis.filter(location__distance_lte=(current_point, measure.D(**distance_from_point)))
shops = shops.distance(current_point).order_by('distance')
return shops.distance(current_point)
我得到错误:
SQLite 不支持在大地坐标系上进行线性距离计算。
我读过 SRID,我想我应该改变我的模型。但我不知道如何写下来。并且有可能我尝试获取排序数据的方式存在问题。