PostGIS
Name
ST_Histogram — Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified.
Synopsis
setof record +`*`+ST_Histogram
*(`raster `rast
, integer
nband=1
, boolean exclude_nodata_value=true
, integer
bins=autocomputed
, double precision[] width=NULL
, boolean
right=false`
)`;
setof record +`*`+ST_Histogram
*(`raster `rast
, integer
nband
, integer bins
, double precision[] width=NULL
, boolean
right=false`
)`;
setof record +`*`+ST_Histogram
*(`raster `rast
, integer
nband
, boolean exclude_nodata_value
, integer bins
, boolean
right`
)`;
setof record +`*`+ST_Histogram
*(`raster `rast
, integer
nband
, integer bins
, boolean right`
)`;
Description
Returns set of records consisting of min, max, count, percent for a
given raster band for each bin. If no band is specified nband
defaults to 1.
|
- [.term]#`+width +`[.type]#double precision[]
-
width: an array indicating the width of each category/bin. If the number of bins is greater than the number of widths, the widths are repeated. + Example: 9 bins, widths are [a, b, c] will have the output be [a, b, c, a, b, c, a, b, c]
- [.term]#`+bins +`[.type]#integer
-
Number of breakouts — this is the number of records you’ll get back from the function if specified. If not specified then the number of breakouts is autocomputed.
- [.term]#`+right +`[.type]#boolean
-
compute the histogram from the right rather than from the left (default). This changes the criteria for evaluating a value x from [a, b) to (a, b]
Changed: 3.1.0 Removed ST_Histogram(table_name, column_name) variant.
Availability: 2.0.0
Example: Single raster tile - compute histograms for bands 1, 2, 3 and autocompute bins
SELECT band, (stats).*
FROM (SELECT rid, band, ST_Histogram(rast, band) As stats
FROM dummy_rast CROSS JOIN generate_series(1,3) As band
WHERE rid=2) As foo;
band | min | max | count | percent
------+-------+-------+-------+---------
1 | 249 | 250 | 2 | 0.08
1 | 250 | 251 | 2 | 0.08
1 | 251 | 252 | 1 | 0.04
1 | 252 | 253 | 2 | 0.08
1 | 253 | 254 | 18 | 0.72
2 | 78 | 113.2 | 11 | 0.44
2 | 113.2 | 148.4 | 4 | 0.16
2 | 148.4 | 183.6 | 4 | 0.16
2 | 183.6 | 218.8 | 1 | 0.04
2 | 218.8 | 254 | 5 | 0.2
3 | 62 | 100.4 | 11 | 0.44
3 | 100.4 | 138.8 | 5 | 0.2
3 | 138.8 | 177.2 | 4 | 0.16
3 | 177.2 | 215.6 | 1 | 0.04
3 | 215.6 | 254 | 4 | 0.16
Example: Just band 2 but for 6 bins
SELECT (stats).*
FROM (SELECT rid, ST_Histogram(rast, 2,6) As stats
FROM dummy_rast
WHERE rid=2) As foo;
min | max | count | percent
------------+------------+-------+---------
78 | 107.333333 | 9 | 0.36
107.333333 | 136.666667 | 6 | 0.24
136.666667 | 166 | 0 | 0
166 | 195.333333 | 4 | 0.16
195.333333 | 224.666667 | 1 | 0.04
224.666667 | 254 | 5 | 0.2
(6 rows)
-- Same as previous but we explicitly control the pixel value range of each bin.
SELECT (stats).*
FROM (SELECT rid, ST_Histogram(rast, 2,6,ARRAY[0.5,1,4,100,5]) As stats
FROM dummy_rast
WHERE rid=2) As foo;
min | max | count | percent
-------+-------+-------+----------
78 | 78.5 | 1 | 0.08
78.5 | 79.5 | 1 | 0.04
79.5 | 83.5 | 0 | 0
83.5 | 183.5 | 17 | 0.0068
183.5 | 188.5 | 0 | 0
188.5 | 254 | 6 | 0.003664
(6 rows)