geodjangoのクエリセットの出力を空間的に有効なデータベースに保存することは可能ですか?
https://docs.djangoproject.com/en/dev/ref/contrib/gis/geoquerysets/#distance-lookups
この例の1つは、すべての距離を表示します。それを実際にデータベースに保存したり、geoqueryset.distanceの値を使用してさらに計算したりすることは可能ですか?
質問する
106 次
1 に答える
1
はい、どちらもgeodjangoで実行できます。
以下は、ジオメトリを保存せずに距離計算を実行する方法の例です。
from django.contrib.gis.geos import Point
pnt = Point(0,0)
pnt.distance(Point(0,1))
これは1.0を返します。DjangoクエリセットAPIは、データとやり取りするために特別に構築されているため、クエリセットが役立つようになる前に、永続的なデータが必要です。データ、特に地理空間データを取得すると、Djangoクエリセットは非常にクールになります。
ドキュメントの例を見てみましょう。
Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
これにより、ジオメトリがgeomから5メートル以内にあるすべての郵便番号が返されます。GeoDjangoは、計算された距離オブジェクトを使用して、クエリセット内の各アイテムに距離フィールドも追加します。djangoは単なるPythonであるため、必要なクレイジーな計算に距離の値を使用できます。
zips = Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
for zip_code in zips:
print zip_code.name, zip_code.distance.m
于 2013-03-20T20:55:16.630 に答える