ショップのリストを含む単純な 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 について読んだことがありますが、モデルを変更する必要があると思います。しかし、書き方がわかりません。また、ソートされたデータを取得しようとする方法に問題がある可能性があります。