2

緯度と経度のテーブルがありますが、ジオメトリを保存したくありません。代わりに、緯度と経度を保存しています。

位置式を使用してポイントベースのクエリを作成する方法は? 基本的にはポイントを返す必要があります。".....ST_Point(home.latitude, home.longitude)....." のような SQL 式に変換する必要があります。

geoalchemy に func.ST_Point はありませんか? または私は何かが欠けていますか?明らかに式を書かなければ、私は得ます

"sqlalchemy.exc.InternalError: (InternalError) parse error - invalid geometry
HINT:  "POINT(Ve" <-- parse error at position 8 within geometry"

コード:

class Home(Base):
__tablename__ = 'vehicle_path'

id = Column(BigInteger, primary_key=True)
latitude = Column(Float)
longitude = Column(Float)

@hybrid_property
def position(self):
    return WKTElement(
        ''.join(['POINT(', str(self.longitude),' ', str(self.latitude), ')']), 4326)

@position.expression
def position(cls):
    return  <???what to return???>

postgis、postgres、ピラミッドでsqlalchemy、Geoalchmey2を使用しています。

4

1 に答える 1

1

WKTElement http://geoalchemy-2.readthedocs.org/en/latest/elements.html#geoalchemy2.elements.WKTElementを探しているようです Postgisには ST_MakePoint(x,y) 関数がありますが、Geoalchemy にはありませんそうらしい。興味深いことに、なぜジオメトリ (またはあなたの場合はポイント) の代わりに緯度と経度を保存したいのでしょうか。ST_X(geom)、ST_Y(geom) を使用してジオメトリから緯度と経度を簡単に復元できますが、さらに重要なのは、ジオメトリ列に空間インデックスを配置できることです。一種の空間クエリ。

于 2014-05-31T17:10:21.883 に答える