Gridfile

Ermöglicht den Zugriff auf georeferenzierte dateibasierte Griddaten. Zurzeit ist der Zugriff auf Tiff Dateien implementiert.

Hier finden Sie Hinweise für die Konvertierung des FLT Format zu TIFF.

Hinweis z.Z. wird rasterFiles verwendet, dort wird je nach Inhalt der TIFF Datei intern zu diesem Layer gewechselt. Evtl. verwenden Sie den Parameter forceGridType um die Interpretation als Grid zu erzwingen. Diese Beschreibung ist noch in Arbeit.

Abfragen mittels GeoSQL sind möglich.

Argumente

Typname: rasterFiles

  • fileName: Ein Pfadname zur Grid-Datei.

  • epsgCode (-1): wenn definiert (d.h. > 0), dann wird dieser wie angegeben übernommen, ansonsten wird eine automatische Ermittlung anhand der Ausdehnung der Grid Datei versucht.

  • style|cssFile: hier immer vom Typ GRID CSS.

Ladevorgang

Es wird geprüft, ob zu der (jeweiligen) Datei ein Handler vorhanden ist. Dieser wird anhand der Dateierweiterung ermittelt. Derzeit ist für das TIFF Format ein Handler vorhanden, die Dateierweiterung .tif oder .tiff wird dabei vorausgesetzt.

Beispiel

{
"Tk25": {
    "type": "RasterFiles",
    "fileName": "D:\\Temp\\Test.tif",
    "epsgCode": 31469,
  }
}

Hinweise zu Abfragen

Bei Abfragen auf ein solches Grid, bspw. über GeoSQL, erfolgt ab Version 7.6.8.7 eine Optimierung für Linien und Punktgeometrien.

  • es werden alle Geometrien aus der Anfrage genommen und vereinzelt, d.h. aus einer Collection werden Einzelgeometrien, alle Multi-Typen werden in die Einzeltypen aufgelöst (bspw. Multipoint => zu n-Einzelpunkten)
  1. Wenn im Ergebnis nur noch Point oder Line-Geometrien enthalten sind, wird die Abfrage wie folgt ausgeführt:
  • Ermittele die Zell-Indexe zu der Geometrie
    • bei Punkten ist es genau eine Zelle,
    • für Linien werden mittels eins Bresenham-Algorithmus alle von der Linie betroffene Zellen ermitteln
  • verwirf alle Zellindexe, die außerhalb des Grids liegen,
  • entferne alle doppelten Zellindexe,
  • merke zu jedem Zellindex, welche Eingangsgeometrie(n) zu diesem Index geführt haben,
  • sortiere die Zellwerte so, dass es optimal zum Speicherlayout der TIFF Datei passt, dann nach dem X, dann nach dem Y Wert,
  • rufe dann für jeden Zellindex den Zellwert ab, ist dieser undefiniert, wird die Zeile übersprungen
  1. Ansonsten ... Filtere nur auf die BBox und vergleiche dann die Geometrie pro Zelle (das ist das bisherige Vorgehen)

Wenn die Optimierung wie in a) geschrieben möglich ist, dann wird die Spalte "metaInfo" mit einem Objekt befüllt, welches die Quell-Geometrie des Wertes beschreibt.

Enthalten ist dort ein Objekt mit dem Namen "gfidx" (Geometrie-Filter-Index), welches ein Array mit den Indexes der Eingangsgeometrie enthält.

Der Index ist dabei auch ein Array mit genau 3 Werten:

  • 0 (SourceGeomIndex) : der Index der Eingangs-Geometrie aus dem Filter,
  • 1 (CollectionMemberIndex): wenn es eine Geometry-Collection war, dann der Index des Elements aus dieser Collection,
  • 2 (MultiPartIndex) : wenn es eine MultiXX Geometrie war, dann der Index des Multi-Part Elements

Bsp. mit GeoSQL

Das Ergebnis wie hier gezeigt entsteht nur, wenn DuckDB aktiv ist. Bei SQLite werden aus dem OR zwei Abfragen, daher sind die Werte in gfidx nur auf das 1. Element reduziert.

 SELECT 
   *
 FROM
	    grid1
 where  ST_Intersects(geom,'MULTIPOINT(380194.2208178525 5678266.518403895,383365.17739344895 5680803.283664372)')
     or ST_Intersects(geom,'POINT(380194.2208178525 5678266.518403895)')

Ergebnis

id cellValue metaInfo
16 121.80000 { "gfidx" : [ [ 0, 0, 1 ] ] }
19 139.24006 { "gfidx" : [ [ 0, 0, 0 ], [ 1, 0, 0 ] ] }

Implementierungsdetails

TIFF

Folgende Photometric-Typen werden unterstützt:

  • PHOTOMETRIC_MINISBLACK
  • PHOTOMETRIC_MINISWHITE

Es wird nur ein Sample (der Zellwert) je Pixel unterstützt.

Es werden 4, 8, 16, 32 und 64 Bit Pro Pixel unterstützt. Das Sample-Format muss eins von:

  • SAMPLEFORMAT_IEEEFP (mit 32 oder 64 Bit)
  • SAMPLEFORMAT_UINT
  • SAMPLEFORMAT_INT sein.

Nur bei 16,32 oder 64 Bpp wird die TIFF DAtei automatisch als Grid eingestuft, sonst als "Bild", verwenden Sie die Eigenschaft forceGridType:true bei der Ebenendefinition.

Das Pixel-Speicherformat muss Planar sein (Chunky Format wird nicht unterstützt).

Handelt es sich um ein GeoTIFF, wird die Georeferenzierung aus der Datei verwendet, ansonsten wird ein "Worldfile" nach folgendem Schema gesucht (in dieser Reihenfolge):

  • .tfw
  • .tifw
  • .wld

Das Speicher-Layout Tiles und Stripes wird unterstützt.

Zum schnellen Zeichnen werden Strips bzw. Tiles gecached. Dafür wird je Anfrage maximal die Hälfte des freien Speichers verwendet bzw. maximal 4 GB je nachdem was kleiner ist.

Ebenso werden Translation und Rotation der Georeferenzierung unterstützt.

Ist eine "[Tiff Dateiname].aux.xml" Datei vorhanden, so werden daraus die Min- und Max-Zellwerte gelesen und falls kein CSS vorhanden wird aus diesen Werten ein Default-Farbverlauf erzeugt.

Es werden sowohl externe (*.ovr Dateien) als auch eingebettete Vorschaubilder unterstützt, was das Zeichnen großer Dateien stark beschleunigt, falls vorhanden.

Konvertierung des FLT Format in Grid

Die Konvertierung kann mit der GDAL recht einfach umgesetzt werden.

GDAL ist beispielweise in jeder QGis-Installation vorhanden, bzw. unter GDAL herunterzuladen.

Rufen Sie dann folgende

gdal_translate.exe -ot Float32 -co TILED=YES -co COMPRESS=DEFLATE -co PREDICTOR=3 "de_dgm10_25833.flt" "de_dgm10_25833.tif"

optional - zusätzliche OVR-Datei (Pyramide mit Übersichts-Zoom-Leveln) erstellen:

gdaladdo.exe --config COMPRESS_OVERVIEW DEFLATE --config PREDICTOR_OVERVIEW 3 --config INTERLEAVE_OVERVIEW PIXEL --config GDAL_TIFF_OVR_BLOCKSIZE 256 -r average -minsize 256 -ro "de_dgm10_25833.tif"

Beispiel den passenden Style (hier Wertebereich zwischen 100 und 500):

cell-color
{
	color: linear-gradient(lightgreen 100, yellow 280, brown 500);
}

Zuletzt geändert: 13.03.2024 12:40:13 (erstmals erstellt 11.06.2018)