4

この問題を Web で検索しようとしましたが、役に立ちませんでした。基本的な作業のようです。Geoalchemy で SQLAlchemy を介して PostGresql を使用して、地理空間クエリを実行しています。技術的には、Flask-SQLAlchemy を使用しています。地理空間クエリを実行できます。例えば:

from geoalchemy2 import func
cls.db.session.query(cls).filter(func.ST_DWithin(cls.geoLoc, geo, meters))

clsクエリを実行しているクラスは どこですか。geoGeographyクエリの中心を表すポイントで、meters結果を返す最大距離です。このクエリは機能しますが、結果は任意の順序で返されます。クエリポイントからの距離を増やして(減らしても問題ありません)返したいと思います。

クエリの最後にan を使用する必要があると思い.order_by(...)ますが、そこに何を入れるかわかりません。

4

1 に答える 1

3

わかりました、私はそれを理解しましたが、特に Geoalchemy2 に精通していない場合は、それは明白ではありませんでした.

上記の私の場合、あなたはタックする必要があります:

.order_by(func.ST_Distance(cls.geoLoc, geo))

私の質問にあるコードの最後まで。基本的にST_Distanceは、2 点を受け取り、それらの間の距離を返す関数です。したがってcls.geoLoc、テーブルから問題の各オブジェクトを参照し、geo距離でソートしている中心です。これは基本的に、各要素の距離を計算しgeo、それによってソートします。

于 2015-03-12T18:04:04.850 に答える