This is an old revision of the document!
Table of Contents
MapServer
Link documentazione
Scaletta
- Pacchetto e dipendenze
- Architettura cgi-bin
- Il file .map
- Estensione
- Proiezione
- Unità di misura
- Formato immagini
- Layer
- Tipo
- Sorgente
- Label
- Scala
- Modo map e modo browse
- Template HTML
- File temporanei
- Server WMS
Note sui file .map
LAYER STATUS
| DEFAULT | Il layer è sempre attivo (attivo per default), non può essere spento. |
|---|---|
| ON/OFF | Il layer è attivo o meno, può essere cambiato a “runtime”, ad esempio in modalità browse con l'opportuno template. |
Sistemi di riferimento
| Nome | Codice EPSG |
|---|---|
| Cartografia italiana | |
| Gauss-Boaga Roma40 (Italia Monte Mario) zona 1 | 3003 |
| Gauss-Boaga Roma40 (Italia Monte Mario) zona 2 | 3004 |
| Cartografia internazionale GPS | |
| WGS84 | 4326 |
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) ...
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
gdal_merge.py
Come mosaicare diverse tile troppo piccole per riassemblare un unico raster. L'immagine viene inizializzata bianca (valore 255 per ognuna delle tre bande RGB)
gdal_merge.py -v -o /tmp/075k.tif -init 255 *.tif
Si sarebbe tentati di aggiungere il parametro -n 255 per indicare che il bianco è trasparente. In realtà si ottiene che un valore 255 in una qualunque delle bande origine diventa trasparente rispetto al valore di -init.
gdal_retile.py
Si vuole cambiare la mattonellatura. Se ad esempio le tile originali sono troppe (79 tile 242×181, per un raster totale di 2420×1991), si vorrebbe ottenere solo 4 tile 1210×996.
Si crea anche il nuovo tileindex (questa operazione potrebbe essere svolta da gdal_retile.py stesso).
gdal_retile.py -v -co COMPRESS=LZW -ps 1000 1000 -targetDir 1k_retiled 1k/*.tif gdaltindex 1k_retiled_index.shp 1k_retiled/*.tif
Manca la possibilità di inizializzare l'immagine con un colore di sfondo (vedi parametro -init di gdal_merge.py).
Se è necessario si può provare ad assemblare tutto in un unico raster e successivamente suddividere. In questo caso le mattonelle le facciamo quadrate 1024×1024.
gdal_merge.py -v -o 25k_merged/25k.tif -init 255 25k/*.tif gdal_retile.py -v -ps 1024 1024 -targetDir 25k_retiled/ 25k_merged/25k.tif gdaltindex 25k_retiled_index.shp 25k_retiled/*.tif
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 consigliatoUTF-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
