SQLAlchemy(0.8)/GeoAlchemy2(0.2.1) を使用してネストされた生の PostGreSQL/PostGIS ラスター クエリを複製しようとしていますが、geomvalデータ型のコンポーネントにアクセスする方法がわかりません。「geom」と「val」を返す複合データ型です。
動作する生のクエリは次のとおりです。
SELECT (dap).val, (dap).geom
FROM (SELECT ST_DumpAsPolygons(rast) as dap FROM my_raster_table) thing
そして、私が現在取り組んでいる SQLAlchemy クエリ:
import geoalchemy2 as ga2
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
metadata = MetaData()
my_raster_table = Table('my_raster_table', metadata,
Column('rid', Integer),
Column('rast', ga2.Raster))
engine = create_engine(my_conn_str)
session = sessionmaker(engine)()
q = session.query(ga2.func.ST_DumpAsPolygons(my_raster_table.c.rast).label('dap'))
そして、次のようなサブクエリでそれにアクセスしたいと思います。
q2 = session.query(ga2.func.ST_Area(q.subquery().c.dap.geom))
しかし、その構文は機能しません。そうしないと、この質問を投稿できません;)。誰にもアイデアがありますか?ありがとう!