如何处理raster2pgsql tile?

时间:2017-07-11 22:03:24

标签: postgresql postgis postgis-raster

我使用raster2pgsql将光栅文件导入PostGIS,我设置了-t 50x50,它生成了大约500行。我知道这些-t将光栅划分为小块,而rid可以将它们编入索引。我在where子句中看到了很多使用rid = 2来指定tile的例子。但我的问题是如何处理整个栅格而不是特定的瓦片。例如,当我使用ST_SummaryStats时,它会为每个磁贴生成大约500行结果的统计信息。当我ST_Clip时,它还为每个图块生成大约500行剪切结果。如何剪辑整个光栅?谢谢!

1 个答案:

答案 0 :(得分:0)

我猜ST_Union是你正在寻找的东西。您首先需要合并所有切片,然后应用您的操作。

使用ST_SummaryStats的示例。

db=# SELECT ST_SummaryStats(rast) FROM t;
               st_summarystats               
---------------------------------------------
 (100,24638,246.38,14.0176888251951,216,255)
 (100,23866,238.66,16.7488626479531,216,255)
 (100,22052,220.52,3.85092196752934,218,235)
 (100,22495,224.95,10.0173599316387,216,255)
 (100,22508,225.08,8.46720733181846,216,255)
 (100,22034,220.34,2.08911464501113,218,228)
 (100,22113,221.13,2.26121648676105,219,228)
 (100,22172,221.72,2.24089267926869,218,228)
 (100,22163,221.63,2.11969337405201,219,228)
 (100,22332,223.32,2.42024792118494,219,227)
(10 Zeilen)

现在使用ST_Union进行相同的操作:

db=# SELECT ST_SummaryStats(ST_Union(rast)) FROM t;
                st_summarystats                 
------------------------------------------------
 (1000,226373,226.373,11.8122762835958,216,255)
(1 Zeile)

对于摘要统计信息,您也可以使用ST_SummaryStatsAgg

db=# SELECT ST_SummaryStatsAgg(rast,1,false) FROM t;
               st_summarystatsagg               
------------------------------------------------
 (1000,226373,226.373,11.8122762835958,216,255)
(1 Zeile)