python - Cómo obtener el valor lng lat a partir de los resultados de la consulta de geoalchemy2
sqlalchemy postgis (2)
Puede analizar puntos WKB ( binarios conocidos ) e incluso otras formas de geometría, utilizando shapely .
from shapely import wkb
for lake in query:
point = wkb.loads(bytes(lake.point.data))
print point.x, point.y
Por ejemplo,
class Lake(Base):
__tablename__ = ''lake''
id = Column(Integer, primary_key=True)
name = Column(String)
geom = Column(Geometry(''POLYGON''))
point = Column(Geometry(''Point''))
lake = Lake(name=''Orta'', geom=''POLYGON((3 0,6 0,6 3,3 3,3 0))'', point="POINT(2 9)")
query = session.query(Lake).filter(Lake.geom.ST_Contains(''POINT(4 1)''))
for lake in query:
print lake.point
devolvió <WKBElement at 0x2720ed0; ''010100000000000000000000400000000000002240''>
<WKBElement at 0x2720ed0; ''010100000000000000000000400000000000002240''>
También traté de hacer lake.point.ST_X () pero no daba la latitud esperada ni
¿Cuál es la forma correcta de transformar el valor de WKBElement a un formato legible y útil, por ejemplo (lng, lat)?
Gracias
http://geoalchemy-2.readthedocs.org/en/0.2.4/spatial_functions.html#geoalchemy2.functions.ST_AsText es lo que estás buscando. Esto devolverá ''POINT (lng, lat)''. Sin embargo, ST_X debería funcionar, por lo que puede tener otro problema si no devuelve el valor correcto.