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. ...