ST_Histogram
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
    
    
     )
    
    ;
   
    
     SETOF record
     
      ST_Histogram
     
     (
    
    text
    
     rastertable
    
    , text
    
     rastercolumn
    
    , integer
    
     nband
    
    , integer
    
     bins
    
    , boolean
    
     right
    
    
     )
    
    ;
   
    
     SETOF record
     
      ST_Histogram
     
     (
    
    text
    
     rastertable
    
    , text
    
     rastercolumn
    
    , integer
    
     nband
    
    , boolean
    
     exclude_nodata_value
    
    , integer
    
     bins
    
    , boolean
    
     right
    
    
     )
    
    ;
   
    
     SETOF record
     
      ST_Histogram
     
     (
    
    text
    
     rastertable
    
    , text
    
     rastercolumn
    
    , integer
    
     nband=1
    
    , boolean
    
     exclude_nodata_value=true
    
    , integer
    
     bins=autocomputed
    
    , double precision[]
    
     width=NULL
    
    , boolean
    
     right=false
    
    
     )
    
    ;
   
    
     SETOF record
     
      ST_Histogram
     
     (
    
    text
    
     rastertable
    
    , text
    
     rastercolumn
    
    , integer
    
     nband=1
    
    , integer
    
     bins
    
    , double precision[]
    
     width=NULL
    
    , boolean
    
     right=false
    
    
     )
    
    ;
   
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.
  
       
      | 
     |
| 
       
       By default only considers pixel values not equal to the
         | 
    
- 
     
      
       
widthdouble 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]
 - 
     
      
       
binsinteger - 
     
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.
 - 
     
      
       
rightboolean - 
     
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]
 
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)