Antworten:
Das Raster wird im Gleitkommaformat als einzelne Werte in jeder Zelle gespeichert. Daher hat es keine Attributtabelle. Eine effektive Lösung besteht darin, die Werte zu diskretisieren und in das Ganzzahlformat zu konvertieren. Dadurch wird eine Attributtabelle erstellt, die beim Zeichnen ein Histogramm ergibt. Seine kumulativen Summen sind die hypsometrische Kurve.
Das Erscheinungsbild der hypsometrischen Kurve (in CDF-Form) für dieses Beispiel-DEM (ein Teil von Illinois, verfügbar unter http://exampledata.wolfram.com/ArcGRID.zip ) variiert mit der Feinheit der Wertdiskretisierung. Die folgenden Bilder verwenden Behälter mit einer Größe von 5, 1 bzw. 1/5 Metern. Wie Sie sehen können, kann man mit mäßig groben Behältern eine präzise Kurve erhalten.
Das Diskretisieren eines Rasters umfasst zwei Operationen, die in einem Schritt ausgeführt werden können: Teilen durch die Behälterbreite und Abschneiden (oder Runden, wenn Sie dies bevorzugen). Zum Beispiel können Höhen in Metern durch Teilen durch 0,1, gefolgt von Abschneiden, wie in in Schritten von 0,1 Metern diskretisiert werden
Int( [elevation] / 0.1 )
Diese oder eine ähnliche Syntax wird in fast jeder Version von ArcGIS (und auch in vielen anderen Raster-GIS) verwendet.
Normalerweise benutze ich R dafür. Sie können GDAL-Raster-Datensätze mit rgdal
(aus CRAN) lesen und dann mit (integriert) eine empirische kumulative Verteilung für die Höhenwerte erstellen ecdf
.
Zum Beispiel habe ich mein DEM in einer GeoTIFF-Datei, in R verwenden:
library(rgdal)
topo <- readGDAL("mytoporaster.tif")
plot(ecdf(topo$band1), main="Hypsometric curve", xlab="Elevation (m)")
Siehe auch das Tutorial bei Carleton .
Ich bin auf dieses Dokument gestoßen, in dem es um eine 9.x ArcGIS-Erweiterung geht.
Die Erweiterung mit Beispieldaten finden Sie an diesem Download-Speicherort .
Für den Datensatz funktioniert die Erweiterung in ArcGIS 10.4.1.
Floor
Funktion unterstützt , da einigeInt
Implementierungen eher nach 0 als nach unten abgeschnitten werden , wodurch sich die Breite des Bin mit 0 verdoppelt (ein unerwünschtes Ergebnis).