3

GeoAlchemy2 のドキュメントは、(以前のバージョンと比較して) 完全に機能していないようです。

私はモデルを持っています:

class AddressCode(Base):
    __tablename__ = 'address_codes'
    id = Column(Integer, primary_key=True)
    code = Column(Unicode(34))
    geometry = Column(Geometry('POINT'))

そして、上記のモデルで保存しようとした緯度/経度データを保存したい、例

"51.42553,-0.666085"

エラーが表示されます:

"Parse error at position 9 within Geometry (the "," char")

ここで私が間違っている場所に光を当てることができる人はいますか?

また、件名については、どのようにクエリを実行すればよいでしょうか..

最も近い 20 人のユーザーを表示:

class AddressCode(Base):
    __tablename__ = 'address_codes'
    id = Column(Integer, primary_key=True)
    name = Column(Unicode(34))
    geometry = Column(Geometry('POINT'))

何かのようなもの?

geom_var = "51.42553,-0.666085"
Session.query(User).filter(func.ST_DWithin, 20, geom_var).all()
4

2 に答える 2

8

GeoAlchemy と GeoAlchemy2 の両方で、 WKT または Well-known textと呼ばれる well-known テキスト形式、または Well-known バイナリ形式でジオメトリを指定する必要があります。ポイントの構文は です'POINT(X Y)'。したがって'POINT(-0.666085 51.42553)'、経度が最初に来て、次に緯度になることに注意してください。

shapelyモジュールには、リレーショナル データベースの外部でジオメトリを処理するための便利な関数と、Python ジオメトリ クラスと WKT、WKB 形式との間の簡単な変換が含まれています。

于 2013-11-11T16:19:52.920 に答える