Was sind Raster-Dateien?
Raster-Dateien speichern flächenbezogene Daten in Form regelmäßiger Zellen (Pixel), wobei jeder Wert ein Attribut der realen Welt repräsentiert: Höhe, Temperatur, Vegetation, Landnutzung, Klassifikation usw. Sie kommen überall dort zum Einsatz, wo kontinuierliche Daten benötigt werden – etwa in Fernerkundung, GIS, maschineller Bildverarbeitung oder Umweltmodellierung.
Jede Raster-Datei hat:
- eine definierte räumliche Auflösung (z. B. 10 m/Pixel)
- eine feste Matrix aus Zeilen und Spalten
- eine Codierung: Farbtiefe, Datentyp, Byte-Reihenfolge
- optional: georeferenzierte Metadaten (z. B.
GeoTIFF
)
Gängige Formate: TIFF
, PNG
, BMP
, GeoTIFF
, NetCDF
, HDF
, BIL
/BIP
/BSQ
. Letztere sind besonders für multispektrale oder hyperspektrale Daten geeignet.
BIL, BIP und BSQ – das Format bestimmt die Verarbeitung
Multiband-Raster – z. B. aus Satellitenbildern oder Drohnen – enthalten mehrere Kanäle pro Pixel. Die Formate BIL (Band Interleaved by Line), BIP (Band Interleaved by Pixel) und BSQ (Band Sequential) bestimmen, wie diese Kanäle gespeichert werden.
- BIL: zeilenweise abgelegt – erst Band1-Zeile, dann Band2-Zeile etc.
- BIP: pixelweise abgelegt – alle Bänder eines Pixels hintereinander
- BSQ: bandweise gespeichert – gesamtes Band1, dann Band2 etc.
BIP ist speichertechnisch ideal für pixelbasierte Operationen (Klassifikation), BSQ für bandweise Verarbeitung (z. B. PCA), BIL für zeilenorientiertes Streaming.
Header + Datenblock: Wie BIL/BIP/BSQ funktionieren
Diese Formate bestehen meist aus einer .bil/.bip/.bsq
-Datei und einer zugehörigen .hdr
-Datei. Letztere enthält die Metadaten – etwa:
- Zeilen, Spalten, Bänder
- Pixel-Typ (z. B.
float32
,uint16
) - Interleave-Modus
- Georeferenzierung (UTM, WGS84 etc.)
Beispiel für ein .hdr
:
samples = 512 lines = 512 bands = 3 data type = 4 interleave = bip byte order = 0 map info = {UTM, 1.0, 1.0, 500000, 5200000, 10, 10, 33, North, WGS-84}
Verarbeitung in .NET: Ein einfaches C#-Beispiel für BIP
Wer multispektrale Daten mit .NET laden will (z. B. für Klassifikation oder KI), kann den BIP-Puffer direkt verarbeiten. Beispiel: 3-Band-Bild mit 16-Bit-Werten.
ushort[,,] LoadBipImage(string path, int width, int height, int bands) { ushort[,,] image = new ushort[height, width, bands]; using var fs = new FileStream(path, FileMode.Open); using var br = new BinaryReader(fs); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { for (int b = 0; b < bands; b++) { image[y, x, b] = br.ReadUInt16(); // Little Endian assumed } } } return image; }
Ähnlich lassen sich auch BIL und BSQ laden – man muss nur die Lesereihenfolge anpassen. Für große Dateien: Span<T>
, MemoryMappedFile
oder Unsafe-Code verwenden.
Anwendungen: Was man mit diesen Formaten machen kann
- Klassifikation (z. B. Random Forest oder SVM auf NDVI, NDWI)
- Bildfusion (z. B. SAR + optisch, Multiresolution)
- Panschärfung (z. B. Intensity-Hue-Saturation)
- Vegetationsindizes (NDVI, SAVI, EVI)
- Feature Extraction (z. B. PCA, texture filters)
In GIS-Umgebungen wie ArcGIS, QGIS oder ENVI sind diese Formate Standard – lassen sich aber auch problemlos mit GDAL oder ENVI nutzen.
Visualisierung & Interpretation: Was Entwickler beachten sollten
- BIP: ideal für Darstellung und KI-Modelle (Pixel = [R, G, NIR])
- BIL: schnell streambar zeilenweise – gut für große Datenmengen
- BSQ: besonders bei mathematischer Analyse (z. B. PCA)
- Legenden, Farbcodierung, Histogramm-Stretching: entscheidend für die Interpretation
- Skalierung von Werten: Viele Rohdaten liegen als
uint16
vor (0–65535) – für Darstellung oft inbyte
konvertieren (0–255)