1

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

4

1 に答える 1