User Tools

Site Tools


doc:appunti:linux:lezioni:mapserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:lezioni:mapserver [2010/04/21 17:53] niccolodoc:appunti:linux:lezioni:mapserver [2013/10/04 11:22] (current) – [gdaltindex] niccolo
Line 60: Line 60:
 <file> <file>
 EXTENT 11.128482 43.626412 1687816 4852211 EXTENT 11.128482 43.626412 1687816 4852211
 +</file>
 +
 +==== Limitare i formati offerti da un WMS ====
 +
 +Questa configurazione non funziona con MapServer 5.0.3, funziona invece con la **5.6.3**.
 +
 +È possibile limitare il tipo di immagine offerto da un WMS, cioè il valore viene restituito dalla GetCapabilities in ''<Capability><Request><GetMap><Format>''.
 +
 +L'impostazione predefinita è quella di annunciare tutti i formati grafici supportati dal MapServer (lanciare **''mapserv -v''**), non solo quelli per cui è definito il **''MAP.OUTPUTFORMAT''**.
 +
 +Ecco le sezioni rilevanti da mettere in un mapfile per limitare - ad esempio - al formato PNG/24 bit e JPEG:
 +
 +<file>
 +MAP
 +  ...
 +  IMAGETYPE aggpng24
 +  ...
 +  OUTPUTFORMAT
 +    NAME "aggpng24"
 +    DRIVER AGG/PNG
 +    IMAGEMODE RGB
 +  END
 +  OUTPUTFORMAT
 +    NAME "jpeg"
 +    DRIVER "GD/JPEG"
 +    IMAGEMODE RGB
 +  END
 +  ...
 +  WEB
 +    METADATA
 +      ...
 +      wms_getmap_formatlist "image/png; mode=24bit,image/jpeg"
 +    END
 +    ...
 +  END
 +  ...
 +END
 </file> </file>
  
Line 70: Line 107:
 | **Cartografia internazionale GPS**  || | **Cartografia internazionale GPS**  ||
 | WGS84  |  4326 | | WGS84  |  4326 |
 +
 +===== Tool GDAL/OGR =====
  
 ==== ogrinfo ==== ==== ogrinfo ====
Line 128: Line 167:
 </code> </code>
  
-==== Path relativi ====+===== Path relativi =====
  
 **Mai usare path assoluti nei file map!** Nella peggiore delle ipotesi l'unico path assoluto può essere contenuto in **''SHAPEPATH''**. **Mai usare path assoluti nei file map!** Nella peggiore delle ipotesi l'unico path assoluto può essere contenuto in **''SHAPEPATH''**.
Line 153: Line 192:
 gdaltindex toscana_ctr_25k_index toscana/ctr_25k/*.tif gdaltindex toscana_ctr_25k_index toscana/ctr_25k/*.tif
 </code> </code>
 +
 +===== Tool per tiles =====
  
 ==== tile4ms ==== ==== tile4ms ====
Line 194: Line 235:
 </code> </code>
  
-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.+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. Con **''OFFSITE''** si indica quale colore deve essere considerato trasparente:
  
 <file> <file>
Line 205: Line 246:
   TILEINDEX "toscana_ctr25k_index.dbf"   TILEINDEX "toscana_ctr25k_index.dbf"
   TILEITEM "Location"   TILEITEM "Location"
 +  PROCESSING "RESAMPLE=AVERAGE"
 +  OFFSITE 255 255 255
 +END
 +</file>
 +
 +==== gdalbuildvrt ====
 +
 +In alternativa all'indice di raster si può creare un **virtual raster** (che può essere agevolmente aperto con tutti i programmi che utilizzano una moderna libreria GDAL, come QGIS):
 +
 +<code>
 +cd /usr/local/share/gisdata
 +gdalbuildvrt toscana_ctr25k.vrt raster/toscana_ctr25k/*.tif
 +</code>
 +
 +In questo caso il mapfile ha questa forma:
 +
 +<file>
 +SHAPEPATH "/usr/local/share/gisdata"
 +
 +LAYER
 +  NAME "ctr25k"
 +  STATUS DEFAULT
 +  TYPE RASTER
 +  DATA toscana_ctr25k.vrt
   PROCESSING "RESAMPLE=AVERAGE"   PROCESSING "RESAMPLE=AVERAGE"
   OFFSITE 255 255 255   OFFSITE 255 255 255
Line 241: Line 306:
 </code> </code>
  
-==== Legende ====+===== Ricetta per creazione di un servizio WMS ===== 
 + 
 +  - Creare indice (quadro d'unione) dei raster:<code>gdaltindex 2002_index.shp 2002/*.tif</code> 
 +  - Creare le piramidi (overview). Per un singolo file .tif: <code> 
 +gdaladdo --config USE_RRD YES 287050.tif 2 4 8 16 32 64</code> 
 +  - Oppure per tutti i .tif in una directory: <code>ls *.tif | xargs -I nome_file gdaladdo --config USE_RRD YES nome_file 2 4 8 16 32 64</code> 
 +  - Con GDAL > 1.6.0 vedere ''man gdaladdo'' per il parametro **''%%-ro%%''** e **''%%-r gauss%%''** per creare file esterni e fare il resample di qualità migliore. 
 +  - Creare il file .map: 
 +    - Controllare l'estensione complessiva <code>ogrinfo 2002_index.shp -summary 2002_index</code> 
 +    - Verificare che esistano almeno i seguenti parametri <file> 
 +MAP.EXTENT                       1672800 4843801 1688801 4856418 
 +MAP.IMAGETYPE                    jpeg 
 +MAP.PROJECTION                   "+init=epsg:3003" 
 +WEB.METADATA.wms_title           "WMS Ortofoto" 
 +WEB.METADATA.wms_onlineresource  "http://192.168.2.10/cgi-bin/mapserv?map=..." 
 +WEB.METADATA.wms_srs             "EPSG:3003" 
 +LAYER.STATUS                     OFF 
 +LAYER.PROJECTION                 "+init=epsg:3003" 
 +LAYER.METADATA.wms_title         "Ortofoto 2001" 
 +LAYER.METADATA.wms_srs           "EPSG:3003" 
 +</file> 
 + 
 +===== Legende =====
  
   * **Font**: sono supportati i caratteri TrueType.   * **Font**: sono supportati i caratteri TrueType.
Line 258: Line 345:
 </code> </code>
  
 +===== Ottimizzazione =====
 +
 +Ad ogni esecuzione di MapServer CGI vengono consumate molte risorse per inizializzare l'ambiente. La modalità **FastCGI** permette di mantenere un'istanza del programma sempre in esecuzione, risparmiando molto su ciascuna connessione. Ad esempio per 100 richieste GetCapabilities di un layer WMS si può passare da 8 a 2 secondi di attesa.
 +
 +Installare il pacchetto Debian **libapache2-mod-fastcgi**. La configurazione predefinita prevede di passare al modulo FastCGI tutte le richieste per eseguibili con estensione .fcgi. Con MapServer si può creare un link simbolico **''%%/usr/lib/cgi-bin/mapserv.fcgi -> mapserv%%''** da utilizzare al posto dell'originale **''mapserv''**.
 +
 +Tra i processi in esecuzione si noterà un'istanza di **''mapserv.fcgi''** anche in assenza di richieste da parte dei client.
 +
 +Se un file .map ha diversi layer provenienti dallo **stesso database** può essere utile aprire una sola connessione per tutto il mapfile, invece di aprire e chiudere la connessione per ogni layer. Nei layer interessati si aggiunge la direttiva **''PROCESSING''**:
 +
 +<file>
 +LAYER
 +  CONNECTIONTYPE POSTGIS
 +  PROCESSING "CLOSE_CONNECTION=DEFER"
 +  ...
 +</file>
doc/appunti/linux/lezioni/mapserver.1271865194.txt.gz · Last modified: 2010/04/21 17:53 by niccolo