GeoAlchemy2存储点和查询结果

Cro*_*sey 2 python postgis sqlalchemy geoalchemy

有关GeoAlchemy2的文档似乎没有完整的功能(与以前的版本相比).

我有一个模特:

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

我想存储lat/long数据,我试图在上面的模型中保存,例如

"51.42553,-0.666085"
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

"Parse error at position 9 within Geometry (the "," char")
Run Code Online (Sandbox Code Playgroud)

有人能说清楚我在哪里错了吗?

同样在这个主题上,我将如何形成一个查询来说..

显示最近的20位用户:

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

就像是?

geom_var = "51.42553,-0.666085"
Session.query(User).filter(func.ST_DWithin, 20, geom_var).all()
Run Code Online (Sandbox Code Playgroud)

Ant*_*ala 7

在GeoAlchemy和GeoAlchemy2中,您需要以众所周知的文本格式(称为WKT或已知文本)或众所周知的二进制格式指定几何.对于语法的一点'POINT(X Y)',因此'POINT(-0.666085 51.42553)'注意经度首先是纬度.

匀称的模块包含处理几何关系数据库外,与Python几何类和WKT,WKB格式之间的转换容易沿有用的功能.