0

我想使用 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返回集合而不是单个值,Python 中的这个查询返回带有 apath和的字符串,geometry而我只需要geometry部分。geoalchemy2中的文档ST_Dump根本没有帮助。

4

1 回答 1

0

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
)
于 2019-09-05T08:32:33.043 回答