名前

ST_SummaryStats — ラスタまたはラスタカバレッジの指定したバンドについて、ピクセル数、合計値、平均値、標準偏差、最小値、最大値からなる統計情報の概要を返します。バンドを指定しない場合は1番と仮定します。

概要

summarystats ST_SummaryStats(text rastertable, text rastercolumn, boolean exclude_nodata_value);

summarystats ST_SummaryStats(raster rast, boolean exclude_nodata_value);

summarystats ST_SummaryStats(text rastertable, text rastercolumn, integer nband=1, boolean exclude_nodata_value=true);

summarystats ST_SummaryStats(raster rast, integer nband, boolean exclude_nodata_value);

説明

ラスタまたはラスタカバレッジの指定したバンドについて、ピクセル数、合計値、平均値、標準偏差、最小値、最大値からなるsummarystatsによる統計情報の概要を返します。nbandでバンドを指定しない場合は1番と仮定します。

[注記]

デフォルトでは、nodata値と等しくないピクセルのみ数えます。exclude_nodata_valueをFALSEに設定している場合には、全てのピクセルを数えます。

[注記]

デフォルトでは全てのピクセルをサンプリングします。より速い応答を得るには、sample_percentを1より小さくします。

初出: 2.0.0

例: 単一ラスタタイル

SELECT rid, band, (stats).*
FROM (SELECT rid, band, ST_SummaryStats(rast, band) As stats
    FROM dummy_rast CROSS JOIN generate_series(1,3) As band
     WHERE rid=2) As foo;
				    
 rid | band | count | sum  |    mean    |  stddev   | min | max
-----+------+-------+------+------------+-----------+-----+-----
   2 |    1 |    23 | 5821 | 253.086957 |  1.248061 | 250 | 254
   2 |    2 |    25 | 3682 |     147.28 | 59.862188 |  78 | 254
   2 |    3 |    25 | 3290 |      131.6 | 61.647384 |  62 | 254
				

例: 対象とする建物とインタセクトするピクセルの概要

この例は、ボストンの建物の全てと空中写真タイル(150x150ピクセルで134,000タイル)とで、Windows 64ビット上のPostGISで計算したところ、574ミリ秒かかりました。

WITH 
-- インタセクトする地物
   feat AS (SELECT gid As building_id, geom_26986 As geom FROM buildings AS b 
    WHERE gid IN(100, 103,150)
   ),
-- ラスタタイルの2番バンドを建物の境界で切り取って
-- その範囲の統計情報を得ます
   b_stats AS
	(SELECT  building_id, (stats).*
FROM (SELECT building_id, ST_SummaryStats(ST_Clip(rast,2,geom)) As stats
    FROM aerials.boston
		INNER JOIN feat
	ON ST_Intersects(feat.geom,rast) 
 ) As foo
 )
-- 最後に統計情報の概要を得ます
SELECT building_id, SUM(count) As num_pixels
  , MIN(min) As min_pval
  ,  MAX(max) As max_pval
  , SUM(mean*count)/SUM(count) As avg_pval
	FROM b_stats
 WHERE count > 0
	GROUP BY building_id
	ORDER BY building_id;
 building_id | num_pixels | min_pval | max_pval |     avg_pval
-------------+------------+----------+----------+------------------
         100 |       1090 |        1 |      255 | 61.0697247706422
         103 |        655 |        7 |      182 | 70.5038167938931
         150 |        895 |        2 |      252 | 185.642458100559

例:ラスタカバレッジ

-- バンドごとの統計情報 --
SELECT band, (stats).*
FROM (SELECT band, ST_SummaryStats('o_4_boston','rast', band) As stats
    FROM generate_series(1,3) As band) As foo;
				    
 band |  count  |  sum   |       mean       |      stddev      | min | max
------+---------+--------+------------------+------------------+-----+-----
    1 | 8450000 | 725799 | 82.7064349112426 | 45.6800222638537 |   0 | 255
    2 | 8450000 | 700487 | 81.4197705325444 | 44.2161184161765 |   0 | 255
    3 | 8450000 | 575943 |  74.682739408284 | 44.2143885481407 |   0 | 255
    
-- テーブルの場合 -- サンプリング率を100%より低くすると早くなります
-- 25%に設定して、速く答を得ています
SELECT band, (stats).*
FROM (SELECT band, ST_SummaryStats('o_4_boston','rast', band,true,0.25) As stats
    FROM generate_series(1,3) As band) As foo;
				    
 band |  count  |  sum   |       mean       |      stddev      | min | max
------+---------+--------+------------------+------------------+-----+-----
    1 | 2112500 | 180686 | 82.6890480473373 | 45.6961043857248 |   0 | 255
    2 | 2112500 | 174571 |  81.448503668639 | 44.2252623171821 |   0 | 255
    3 | 2112500 | 144364 | 74.6765884023669 | 44.2014869384578 |   0 | 255
				

関連情報

ST_Count, summarystats, ST_Clip