User Tools

Site Tools


tecnica:gps_cartografia_gis:gdal_raster

This is an old revision of the document!


Raster con GDAL e MapServer

La gestione dei raster Tiff con GDAL e MapServer non funziona sempre alla perfezione come si vorrebbe. Si deve fare sempre attenzione al tipo di raster con cui si ha a che fare, potrebbe trattarsi di Float32, Int16 oppure Byte.

Con gdalinfo è possibile ottenere l'informazione, ecco alcuni esempi di output su raster costituiti da una singola banda:

Band 1 Block=2160x1 Type=Float32, ColorInterp=Gray
  NoData Value=-9999
Band 1 Block=2160x1 Type=Int16, ColorInterp=Gray
  NoData Value=-9999
Band 1 Block=64x64 Type=Byte, ColorInterp=Gray

La conversione con gdal_translate - ad esempio dal formato Arc/Info ASCII Grid - potrebbe non indovinare il formato corretto, con il risultato di troncare alcuni valori.

Ecco come forzare l'utilizzo del tipo adeguato:

gdal_translate -of GTiff -ot Float32 minrainfal.asc minrainfal.tif
gdal_translate -of GTiff -ot Int16   maxrainfal.asc maxrainfal.tif

Classificazione di raster con MapServer

Per ottimizzare la classificazione di un raster Float32 o Int16 con MapServer, conviene aggiungere le direttive per la gestione dei raster tramite LAYER.PROCESSING, in particolare SCALE e SCALE_BUCKETS. Ecco un esempio in cui i valori compresi tra -55.0 e 45.0 vengono classificati in 24 classi:

LAYER
  NAME "temperature"
  PROCESSING "SCALE=-55.00,45.00"
  PROCESSING "SCALE_BUCKETS=24"
  CLASS
    NAME "< -50"
    EXPRESSION ([pixel] < -50.83)
    STYLE
      COLOR 0 53 255
    END
  END
  CLASS
    NAME "-50 ÷ -46"
    EXPRESSION ([pixel] >= -50.83 and [pixel] < -46.67)
    STYLE
      COLOR 0 106 255
    END
  END
  ...

Vedere in proposito MapServer Raster Data. Tali direttive non servono (anzi creano problemi) con raster a 8 bit.

Per verificare l'elaborazione del raster si può utilizzare shp2img, in questo modo:

shp2img -m /path/to/file.map -all_debug 10 -o /path/to/raster
...
msDrawRasterGDAL_16BitClassification(GEBCO):
  scaling to 8913 buckets from range=-5600.5,3312.5.
...

Ottimizzare raster con gdal_translate

Alcune caratteristiche di un file TIFF possono incidere sulle performance di MapServer. Su file molto grossi ad esempio la memorizzazione in blocchi (256×256) piuttosto che in righe di pixel può migliorare i tempi di accesso. Anche la compressione può incidere negativamente sulle prestazioni.

Ecco un comando che converte un file TIFF in un'altro file TIFF, l'organizzazione sarà a blocchi di 256×256 pixel e nessuna compressione. Le informazioni geografiche saranno memorizzate in un world file (.tfw) esterno:

gdal_translate -co TILED=YES -co TFW=YES -co COMPRESS=NONE src.tif dst.tif

Con gdalinfo si potrà vedere il blocksize:

Band 1 Block=256x256 Type=Byte, ColorInterp=Palette
tecnica/gps_cartografia_gis/gdal_raster.1286897660.txt.gz · Last modified: 2010/10/12 17:34 by niccolo