我想使用SQLAlchemy将以下SQL查询转换为Python代码。
SELECT (ST_Dump(ST_Linemerge(ST_Union(geog::geometry)))).geom
FROM my_table
GROUP BY some_foreign_key
我取得了部分成功
from geoalchemy2 import Geometry
from sqlalchemy import func, cast
data = session.query(
func.ST_Dump(
func.ST_Linemerge(
func.ST_Union(
cast(MyTable.geog, Geometry)
)
)
).label('dumped_geom')
).group_by(
MyTable.some_foreign_key
)
问题是ST_Dump
返回 set 而不是单个值,Python 中的此查询返回带有path
和geometry
的字符串,我只需要geometry
部分。 Geoalchemy2 中ST_Dump
的文档根本没有帮助。
geoalchemy2 提供了一个ST_Dump
函数(返回一个具有 geom
属性的对象(
前任:
from geoalchemy2 import Geometry
from geoalchemy2.functions import ST_Dump
from sqlalchemy import cast, func
data = session.query(
ST_Dump(
func.ST_Linemerge(
func.ST_Union(
cast(MyTable.geog, Geometry)
)
)
).geom
).group_by(
MyTable.some_foreign_key
)