Outdated version of the documentation. Find the latest one here.

.

QGIS come server dati OGC

QGIS Server è un’implementazione WMS 1.3, WFS 1.0.0 e WCS 1 1.1.1 i con caratteristiche molto avanzate per la produzione di carte tematiche. QGIS Server è un’applicazione FastCGI/CGI (Common Gateway Interface) scritta in C++ e lavora insieme ad un server web (es. Apache, Lighttpd). QGIS Server è supportato dai progetti europei Orchestra e Sany e dalla città di Uster in Svizzera.

Usa QGIS come back end per la restituzione delle mappe e per le operazioni gis. Inoltre viene usata la libreria Qt per la grafica e il linguaggio di programmazione C++ per la piattaforma indipendente. A differenza di altri server WMS, QGIS Server usa regole cartografiche come linguaggio di configurazione, sia per la configurazione a livello server che per le configurazioni utente.

Come QGIS desktop, QGIS Server utilizza le stesse librerie di visualizzazione e le mappe che vengono pubblicate sulla rete hanno lo stesso aspetto che in desktop GIS.

In uno dei prossimi manuali forniremo un esempio per configurare un server QGIS. Per adesso ti consigliamo di leggere i materiali disponibili ad uno dei seguenti URL:

Installazione di esempio su Debian Squeeze

Di seguito è brevemente descritta un’installazione di esempio su Debian Squeeze. Anche molti altri OS hanno pacchetti precompilati per QGIS Server. Se devi compilare da codice sorgente, fai riferimento agli indirizzi web appena citati.

Oltre a QGIS e qgis-mapserver, devi avere installato un server web, come ad esempio apache2. Puoi installare tutti i pacchetti necessari, e relative dipendenze, con aptitude o apt-get install. Dopo l’installazione devi verificare il corretto funzionamento del server web e di QGIS Server. Assicurarti che apache sia stato avviato con /etc/init.d/apache2 start, apri un browser ed vai sull’URL: http://localhost: se hai configurato tutto correttamente dovrebbe apparire il messaggio ’It works!’.

Testa quindi l’installazione di QGIS server. Il file qgis_mapserv.fcgi, disponibile in /usr/lib/cgi-bin/qgis_mapserv.fcgi fornisce un WMS standard con visualizzati i confini dell’Alaska. Carica il WMS in QGIS con l’URL ``http://localhost/cgi-bin/qgis_mapserv.fcgi ``, così come descritto nella Sezione Selezionare server WMS/WMTS.

Figure Server 1:

../../../_images/standard_wms_usa.png

WMS standard con confini USA inclusi nel server QGIS (KDE) nix

Creare un WMS/WFS/WCS da un progetto QGIS

Abbiamo creato un file di progetto di QGIS proprio per fornire un nuovo Server WMS, WFS o WCS. Abbiamo usato lo shapefile ‘Alaska’ dei dati campione di QGIS. Scegli i colori, lo stile dei layer e il SR se non sono ancora specificati.

Figure Server 2:

../../../_images/ows_server_definition.png

Definizioni per un Server WMS/WFS/WCS (KDE)

Dalla finestra di dialogo Progetto ‣ Proprietà progetto scegli il menu Server OWS e specifica qualche informazione sull’OWS nei campi Capabilities del servizio. Questo è quello che apparirà nelle risposte GetCapabilities di WMS, WFS o WCS. Se non spunti la casella di controllo checkbox Capabilities del servizio, QGIS Server userà le informazioni fornite dal file wms_metadata.xml caricato nella cartella cgi-bin .

Capabilities WMS

Nella sezione Capabilities WMS puoi scegliere l’estensione massima della risposta GetCapabilities inserendo i valori minimi e massimi X e Y nel campo Estensione pubblicata. Cliccando su Imposta alla estensione della mappa imposterai questi valori all’estensione attuale della mappa di QGIS. Spuntando la casella di controllo checkbox Restrizioni SR puoi scegliere in quali SR deve venire visualizzata la mappa. Usa il pulsante mActionSignPlus per selezionare i SR dal selettore specifico oppure clicca Usati per aggiungere i SR usati nel progetto di QGIS.

Se hai impostato delle composizioni di stampa nel tuo progetto, queste verranno elencato nella risposta GetCapabilities e li potrai usare con la richiesta GetPrint per creare delle stampe, usando una delle composizioni come modello. Questa è un’estensione di QGIS per le specifiche WMS 1.3.0. Se vuoi escludere dalla pubblicazione WMS qualche composizione di stampa, spunta la casella di controllo checkbox Escludi composizioni e clicca il pulsante mActionSignPlus. Poi, seleziona un compositore dalla finestra di dialogo Scegli il compositore di stampe in modo da aggiungere alla lista le composizione che vuoi escludere.

Se vuoi escludere dalla pubblicazione WMS qualche layer o gruppi di layer, spunta la casella di controllo checkbox Escludi layer e clicca sul pulsante mActionSignPlus. In questo modo si aprirà la finestra di dialogo Seleziona numero limitato di layer e gruppi che ti permetterà di scegliere i layer e i gruppo che non vuoi pubblicare. Usa i tasti Shift o Ctrl se vuoi selezionare più voci contemporaneamente.

Puoi ricevere le GetFeatureInfo richieste come testo normale, XML e GML. XML è il formato predefinito, il testo o il formato GML dipendono dal formato di output scelto dalla richiesta GetFeatureInfo.

Se vuoi, puoi spuntare la casella di controllo checkbox Aggiungi elemento alla risposta geometrie. Questo includerà le geometrie degli elementi in testo normale nelle risposte GetFeatureInfo. Se vuoi che QGIS Server pubblichi le richieste URL nelle risposte capability WMS, inserisci l’URL nel campo URL pubblicato. Inoltre puoi rimpicciolire l’estensione massima della mappa restituita dalla richiesta GetMap inserendo la larghezza e l’altezza massima nei rispettivi campi in Massimi per la richiesta GetMap.

If one of your layers uses the Map Tip display (i.e. to show text using expressions) this will be listed inside the GetFeatureInfo output. If the layer uses a Value Map for one of his attributes, also this information will be shown in the GetFeatureInfo output.

Capabilities WFS

Nell’area Capabilities WFS puoi scegliere i layer che vuoi pubblicare come WFS e specificare se questi devono includere le opzioni aggiorna, inserisci ed elimina. Se inserisci un URL nel campo URL pubblicato della sezione Capabilities WFS, QGIS Server pubblicherà l’URL nelle risposte WFS GetCapabilities.

Capabilities WCS

Nell’area Capabilities WCS puoi scegliere i layer che vuoi pubblicare come WCS. Se inserisci un URL nel campo URL pubblicato della sezione Capabilities WCS, QGIS Server pubblicherà l’URL nelle risposte WCS GetCapabilities.

Salva la sessione nel file di progetto alaska.qgs. Per fornire il progetto come WMS/WFS, devi creare un’altra cartella /usr/lib/cgi-bin/project con privilegi di amministrazione e aggiungere il file di progetto alaska.qgs e una copia del file qgis_mapserv.fcgi. Questo è tutto!

Ora non resta che testare i progetti WMS,WFS e WCS. Aggiungi i WMS, WFS e WCS come descritto nella sezione Caricare layer WMS/WMTS e Client WCS e carica i dati. L’URL è:

http://localhost/cgi-bin/project/qgis_mapserv.fcgi

OWS impostato correttamente

Per i vettori, il menu Campi della finestra di dialogo Layer ‣ Proprietà ti permette di definire quali attributi vuoi pubblicare. In modo predefinito, tutti gli attributi vengono pubblicati. Se vuoi escludere qualche attributo dalla pubblicazione, togli la spunta alla casella di controllo corrispondente nelle colonne WMS o WFS.

Puoi sovrapporre i watermark sulla mappa creati dal WMS aggiungendo note testuali o note SVG al progetto. Vedi la sezione Note Testuali in Strumenti generali per capire come creare le note. Per fare in modo che le note vengano visualizzate come watermark nell’output WMS, la casella di controllo Posizione fissa sulla mappa non deve essere spuntata. Puoi accedere a questa opzione facendo doppio click sulla note quando lo strumento note è attivo. Per le note SVG, devi impostare il salvataggio del progetto con un percorso assoluto (nel menu Generale della finestra di dialogo Progetto ‣ Proprietà progetto) oppure devi modificare manualmente il percorso all’immagine SVG in modo da ottenere un percorso relativo.

Parametri extra supportati dalla richiesta WMS GetMap

Nella richiesta WMS GetMap, QGIS Server accetta alcuni parametri extra ai parametri standard pur rispettando le specifiche OCG WMS 1.3.0:

  • parametro MAPPA: in modo simile a MapServer, puoi usare il parametro MAPPA per specificare il percorso al file di progetto di QGIS. Puoi scegliere fra un percorso assoluto o uno relativo all’eseguibile del server (qgis_mapserv.fcgi). Se non specificato, il server QGIS cerca i file .qgs nella cartella dove è presente l’eseguibile del server.

    Esempio:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&MAP=/home/qgis/mymap.qgs&...
  • Parametri DPI: puoi usare i parametri DPI per specificare la risoluzione di output.

    Esempio:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?REQUEST=GetMap&DPI=300&...
  • parametro OPACITÀ: puoi impostare l’opacità per un singolo layer o per un gruppo di layer. I valori vanno da 0 (completamente trasparente) a 255 (completamente opaco).

    Esempio:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&LAYERS=mylayer1,mylayer2&OPACITIES=125,200&...

QGIS Server logging

To log requests send to server, set the following environment variables:

  • QGIS_SERVER_LOG_FILE: Specify path and filename. Make sure that server has proper permissions for writing to file. File should be created automatically, just send some requests to server. If it’s not there, check permissions.

  • QGIS_SERVER_LOG_LEVEL: Specify desired log level. Available values are:

    • 0 INFO (log all requests),
    • 1 WARNING,
    • 2 CRITICAL (log just critical errors, suitable for production purposes).

    Esempio:

    SetEnv QGIS_SERVER_LOG_FILE /var/tmp/qgislog.txt
    SetEnv QGIS_SERVER_LOG_LEVEL 0

Note

  • When using Fcgid module use FcgidInitialEnv instead of SetEnv!
  • Server logging is enabled also if executable is compiled in release mode.

Environment variables

  • QGIS_OPTIONS_PATH: The variable specifies path to directory with settings. It works the same ways as QGIS application –optionspath option. It is looking for settings file in <QGIS_OPTIONS_PATH>/QGIS/QGIS2.ini. For exaple, to set QGIS server on Apache to use /path/to/config/QGIS/QGIS2.ini settings file, add to Apache config:

    SetEnv QGIS_OPTIONS_PATH "/path/to/config/"