====== Tool GDAL e MapServer ======
===== ogrinfo =====
Per avere informazioni su un file OGR (formati vettoriali; es. shapefile, gpx, ecc.) si usa il programma **''ogrinfo''** (fornito dal pacchetto gdal-bin). Prima lo si esegue sul file stesso, per avere **informazioni sui layer** contenuti:
ogrinfo track.gpx
Had to open data source read-only.
INFO: Open of `track.gpx'
using driver `GPX' successful.
1: waypoints (Point)
2: routes (Line String)
3: tracks (Multi Line String)
4: route_points (Point)
5: track_points (Point)
Si vede che esistono diversi **layer** al suo interno, a noi interessa quello di nome **tracks**. Per avere informazioni sul layer si esegue:
ogrinfo -summary track.gpx tracks
Had to open data source read-only.
INFO: Open of `track.gpx'
using driver `GPX' successful.
Layer name: tracks
Geometry: Multi Line String
Feature Count: 5
Extent: (11.128482, 43.626412) - (11.553594, 43.829166)
Layer SRS WKT:
GEOGCS["WGS 84",
DATUM["WGS_1984",
...
Utilissimo ad esempio per avere la **''EXTENT''**.
===== gdalinfo =====
Il programma **''gdalinfo''** (fornito dal pacchetto gdal-bin) è analogo a ''ogrinfo'', consente di avere informazioni su file raster supportati dalla libreria GDAL:
gdalinfo 1353.tif
Driver: GTiff/GeoTIFF
Files: 1353.tif
Size is 5071, 8851
Coordinate System is `'
Origin = (1670696.939930999884382,4707728.060069000348449)
Pixel Size = (2.120138000000000,-2.120138000000000)
...
Corner Coordinates:
Upper Left ( 1670696.940, 4707728.060)
Lower Left ( 1670696.940, 4688962.719)
Upper Right ( 1681448.160, 4707728.060)
Lower Right ( 1681448.160, 4688962.719)
...
===== Usare path relativi! =====
**Mai usare path assoluti nei file map!** Nella peggiore delle ipotesi l'unico path assoluto può essere contenuto in **''SHAPEPATH''**.
^ SHAPEPATH | Directory in cui sono memorizzati gli shapefile, compresi i tileindex (indici) per i raster. Si intende **relativa alla directory del file map**. |
^ TILEINDEX | In generale i file raster potrebbero trovarsi in sottodirectory della ''SHAPEPATH'', tuttavia conviene che i file indice siano tutti direttamente nella ''SHAPEPATH''. |
^ tileindex.shp | L'indice contiene il path dei file raster, MapServer interpreta il percorso come **relativo allo ''SHAPEPATH''**, non relativo alla posizione del file indice stesso. |
Ad esempio nella directory **''/usr/local/share/shape/''** abbiamo la sottodirectory **''toscana/ctr25/''** con i raster della Carta Tecnica Regionale. Il file map contiene:
SHAPEPATH "/usr/local/share/shape"
LAYER
TYPE RASTER
TILEINDEX "toscana_ctr25k_tindex.shp"
END
L'indice deve contenere il percorso relativo ''toscana/ctr_25k/'' e quindi deve essere costruito in questo modo:
cd /usr/local/share/shape
gdaltindex toscana_ctr_25k_index toscana/ctr_25k/*.tif
===== tile4ms =====
Il programma **''tile4ms''** fornito dal pacchetto ''mapserver-bin'' serve a creare un **indice di shapefile**.
Prima di usare **''tile4ms''** bisogna creare un elenco dei file che devono essere indicizzati, può tornare utile il comando **''find''** o simili. L'elenco creato viene dato in pasto a ''tile4ms'' che produce l'indice.
In questo esempio si cercano tutti gli shapefile relativi alla medesima feature //elementi lineari//, contraddistinti dal nome **''%%*el.shp%%''** e contenuti in varie sottodirectory, l'elenco viene scritto in un //metafile//. Il comando ''tile4ms'' crea l'indice leggendo dal metafile:
cd /usr/local/share/gisdata
find shape/geofesta2008/firenze10k/ -name "*el.shp" > firenze10k_el_metafile
tile4ms firenze10k_el_metafile firenze10k_el_index
La porzione di mapfile corrispondente è del tipo:
SHAPEPATH "/usr/local/share/gisdata"
LAYER
NAME "EL entità lineari"
STATUS DEFAULT
TYPE LINE
TILEINDEX "firenze10k_el_index"
TILEITEM "Location"
CLASS
COLOR 120 120 120
END
END
===== gdaltindex =====
Il programma **''gdaltindex''** fornito dal pacchetto ''gdal-bin'' serve per creare un **indice di raster**.
cd /usr/local/share/gisdata
gdaltindex toscana_ctr25k_index.shp raster/toscana_ctr25k/*.tif
Il file indice è uno shapefile, analogamente a quanto visto con ''tile4ms''. Va indicato con la direttiva **''TILEINDEX''** che si intende **relativa a ''SHAPEPATH''**. L'indice deve contenere il percorso dei file raster relativi a ''SHAPEPATH'', non al file indice.
SHAPEPATH "/usr/local/share/gisdata"
LAYER
NAME "ctr25k"
STATUS DEFAULT
TYPE RASTER
TILEINDEX "toscana_ctr25k_index.dbf"
TILEITEM "Location"
PROCESSING "RESAMPLE=AVERAGE"
OFFSITE 255 255 255
END
===== Legende =====
* **Font**: sono supportati i caratteri TrueType.
* **Etichette**: viene utilizzato il contenuto del tag **''LAYER.CLASS.NAME''**.
* **Codifica caratteri**: si indica con il tag **''ENCODING''**, fortemente consigliato **''UTF-8''**.
Per il corretto funzionamento delle **''LABEL''** sono necessarie diverse librerie, tra cui **freetype** e **iconv**. Per vedere se MapServer è stato compilato con il supporto FreeType digitare:
/usr/lib/cgi-bin/mapserv -v
MapServer version 5.0.3 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP
OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER
SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS
INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
===== Overview Images (piramidi) =====
Se il file è troppo grande conviene creare le overview, dette anche //piramidi//, altrimenti uno zoom alla massima estensione obbliga a leggere e ridimensionare al volo tutto il raster.
In genere si generano delle copie dell'immagine con risoluzione 1/2, 1/4, 1/8, ... dell'originale. Le overview possono essere contenute all'interno dello stesso GeoTiff:
gdaladdo TrueMarble.8km.5400x2700.tif 2 4 8
Se invece vogliamo tenere le overview in un file separato (avrà formato //Erdas Image// ed estensione **''.aux''**):
gdaladdo --config USE_RRD YES TrueMarble.8km.5400x2700.tif 2 4 8
MapServer e la libreria Gdal accedono automaticamente alle overview anche se si trovano nel file separato **''.aux''**.