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/05/18 17:44] niccolodoc:appunti:linux:lezioni:mapserver [2013/10/04 11:22] (current) – [gdaltindex] niccolo
Line 63: Line 63:
  
 ==== Limitare i formati offerti da un WMS ==== ==== 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>''. È possibile limitare il tipo di immagine offerto da un WMS, cioè il valore viene restituito dalla GetCapabilities in ''<Capability><Request><GetMap><Format>''.
Line 68: Line 70:
 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''**. 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:+Ecco le sezioni rilevanti da mettere in un mapfile per limitare - ad esempio - al formato PNG/24 bit e JPEG:
  
 <file> <file>
 MAP MAP
   ...   ...
-  IMAGETYPE agg_png+  IMAGETYPE aggpng24
   ...   ...
   OUTPUTFORMAT   OUTPUTFORMAT
-    NAME "agg_png"+    NAME "aggpng24"
     DRIVER AGG/PNG     DRIVER AGG/PNG
 +    IMAGEMODE RGB
 +  END
 +  OUTPUTFORMAT
 +    NAME "jpeg"
 +    DRIVER "GD/JPEG"
     IMAGEMODE RGB     IMAGEMODE RGB
   END   END
Line 84: Line 91:
     METADATA     METADATA
       ...       ...
-      wms_getmap_formatlist "image/png; mode=24bit"+      wms_getmap_formatlist "image/png; mode=24bit,image/jpeg"
     END     END
     ...     ...
Line 228: 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 239: 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 274: Line 305:
 gdaltindex 25k_retiled_index.shp 25k_retiled/*.tif gdaltindex 25k_retiled_index.shp 25k_retiled/*.tif
 </code> </code>
 +
 +===== 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 ===== ===== Legende =====
Line 296: Line 349:
 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. 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** ed utilizzare quello nell'URL.+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''**: 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''**:
doc/appunti/linux/lezioni/mapserver.1274197498.txt.gz · Last modified: 2010/05/18 17:44 (external edit)