2015-11-02 114 views
2

考慮以下SQLAalchemy/GeoAlchemy2 ORM與幾何領域:GeoAlchemy2:獲取緯度,經度點的

from geoalchemy2 import Geometry, WKTElement 

class Item(Base): 

    __tablename__ = 'item' 

    id = Column(Integer, primary_key=True) 
    ... 
    geom = Column(Geometry(geometry_type='POINTZ', srid=4326)) 

當我更新PostgreSQL的殼中的項目:

UPDATE item SET geom = st_geomFromText('POINT(2 3 0)', 4326) WHERE id = 5; 

擷取該字段:

items = session.query(Item).\ 
    filter(Item.id == 3) 

for item in items: 
    print item.geom 

給予:

01e9030000000000000000004000000000000008400000000000000000 

這不是一個合適的WKB - 至少不能用Shapely's loads解析。

如何獲得geom字段的lat/lon

回答

4

通過ST_XST_Y抓取的latlon可能不是最優雅的方式,但它的工作原理:

from sqlalchemy import func 

items = session.query(Item, 
         func.st_y(Item.geom), 
         func.st_x(Item.geom)).\ 
    filter(Item.id == 3) 

for item in items: 
    print item.geom 

給出:

(<Item 3>, 3.0, 2.0) 
+0

我如何做沒有進入會議?我正在嘗試將lat&lng屬性添加到我的點模型中以便於訪問。 –