SELECT filename,(stats).*FROM ( SELECT filename,ST_SummaryStats(rast,1,TRUE) AS stats FROM tiles) AS stats_table;
这里,ST_SummaryStats
是一个PostGIS函数,它返回我想要解压缩的记录. tiles是一个带有文件名和rast(栅格)列的PostGIS表.我的尝试如下:
sub_q = db_session.query( Tiles.filename,func.ST_SummaryStats(Tiles.rast,True).label('stats'),).subquery()q = db_session.query( sub_q.columns.filename,sub_q.columns.stats,)
但是,我不知道如何使用sqlAlchemy的ORM编写(stats).*表达式 – 因此解压缩记录.因此,统计数据似乎是一个元组.
在此先感谢您的帮助.
解决方法 ST_SummaryStats()返回一条记录,因此不要将它用作SELECT表达式(它将返回记录),而是将其用作FROM子句并在SELECT级别选择所需的统计信息,因此它变得非常简单:SELECT filename,count,sum,mean,stddev,min,maxFROM tiles,ST_SummaryStats(tiles.rast,true);
这会产生一个所谓的LAteraL JOIN,因为ST_SummaryStats()只为tile中指示的栅格返回一行,所以不需要连接条件,过滤器或其他任何东西.
我不确定sqlAlchemy是否能够将函数的结果用作类,但是使这项工作成为可靠的方法是将上面的SELECT包装到VIEW中,然后从sqlAlchemy访问该视图:
CREATE VIEW raster_stats AS SELECT filename,max FROM tiles,true);总结
以上是内存溢出为你收集整理的使用SQLAlchemy解压缩PostGIS / PostgreSQL记录全部内容,希望文章能够帮你解决使用SQLAlchemy解压缩PostGIS / PostgreSQL记录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)