Name

ST_Histogram — Gibt Datensätze aus, welche die Verteilung der Daten eines Rasters oder eines Rastercoverage darstellen. Dabei wird die Wertemenge in Klassen aufgeteilt und für jede Klasse zusammengefasst. Wenn die Anzahl der Klassen nicht angegeben ist, wird sie automatisch berechnet.

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);

Beschreibung

Gibt Datensätze aus, die das Minimum, das Maximum, die Anzahl und die Prozent der Werte des Rasterbandes für jede Klasse enthalten. Wenn kein Band angegeben ist, wird nband standardmäßig auf 1 gesetzt.

[Note]

Standardmäßig werden nur jene Pixelwerte berücksichtigt, die nicht den Wert NODATA haben. Setzen Sie bitte exclude_nodata_value auf FALSE um die Anzahl sämtlicher Pixel zu erhalten.

width

Breite: ein Feld das die Breite für jede Kategorie/Klasse angibt. Wenn die Anzahl der Klassen größer ist als die Anzahl der Breiten, werden die Breiten wiederholt.

Beispiel: 9 Klassen, die Breiten sind [a, b, c] und werden als [a, b, c, a, b, c, a, b, c] übergegeben.

bins

Anzahl der Klassen - die Anzahl der Datensätze die von der Funktion ausgegeben werden. Wenn die Anzahl der Klassen nicht angegeben ist, wird sie automatisch berechnet.

right

Berechnet das Histogramm von rechts anstatt von links (Standardwert). Dies ändert das Auswahlkriterium für einen Wert x von [a,b) auf (a,b].

Geändert: 3.1.0 Die Variante ST_Histogram(table_name, column_name) wurde entfernt.

Verfügbarkeit: 2.0.0

Beispiel: Einzelne Rasterkachel - Berechnung des Histogramm für die Bänder 1, 2, 3 und automatische Einteilung der Wertemenge in Klassen

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

Beispiel: Nur Band 2 und 6 Klassen

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)