半径ベースの距離検索が必要です。これを行うには、ポイント オブジェクトの周囲にバッファーを作成して、その内部にあるオブジェクトをフィルター処理します。
ここに私がいるところがあります:
>>> lat = 37.7762179974
>>> lon = -122.411562492
>>> from django.contrib.gis.geos import Point
>>> pnt = Point(lat, lon)
>>> buf = pnt.buffer(0.0001)
Thing
しかし、オブジェクトがバッファ内にあるかどうかに基づいてオブジェクトをフィルタリングする際に問題があります。
>>> z = Thing.objects.filter(pnt__intersects=buf)
(上記が間違っていることはわかっていますが、私がやろうとしていることを詳しく説明するために使用しています。 )
の周りにバッファを作成し、内部にあるPoint
フィルタを作成するにはどうすればよいですか?Things
buffer
編集:models.py
class Thing(models.Model):
lat = models.FloatField()
lon = models.FloatField()
これら 2 つのモデル フィールドの組み合わせで構成されるポイントに基づいて、どのようにフィルタリングできますか? モデルにフィールド
がないため、これは明らかに機能しません。pnt
>>> pnt = Point(lat, lon)
>>> z = Thing.objects.filter(pnt__intersects=buf)
しかし、どうすれば同様のことを行うことができますか?