Importante
unireLa traduzione è uno sforzo comunitario you can join. Questa pagina è attualmente tradotta al 100.00%.
2. Come Iniziare
2.1. Installazione su sistemi Debian
Daremo un breve e semplice how-to di installazione per una configurazione minima funzionante su sistemi basati su Debian (incluso Ubuntu e derivati). Tuttavia, molte altre distribuzioni e sistemi operativi forniscono package per QGIS Server.
Nota
In Ubuntu puoi usare il tuo normale utente, aggiungendo sudo
ai comandi che richiedono permessi di admin. In Debian puoi lavorare come admin (root
), senza usare sudo
.
I requisiti e i passaggi per aggiungere i repository ufficiali di QGIS per installare QGIS Server su un sistema basato su Debian sono forniti nella pagina QGIS installers. È preferibile che tu installi perlomeno l’ultima Long Term Release.
Una volta configurato il repository della versione di destinazione e installato QGIS Server, puoi testare l’installazione con:
/usr/lib/cgi-bin/qgis_mapserv.fcgi
Se ottieni il seguente risultato, il server è stato installato correttamente.
Nota
A seconda della versione di QGIS, potresti vedere un output leggermente diverso quando si esegue qgis_mapserv.fcgi
.
QFSFileEngine::open: No file name specified
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Content-Length: 206
Content-Type: text/xml; charset=utf-8
<ServiceExceptionReport version="1.3.0" xmlns="https://www.opengis.net/ogc">
<ServiceException code="Service configuration error">Service unknown or unsupported</ServiceException>
</ServiceExceptionReport>
Nota
Come riportato di seguito, QGIS segnala un codice di stato 400, che identifica correttamente che la richiesta è fallita perché non c’è una sessione http attiva. Questo non è un bug e indica che il server funziona correttamente.
Application path not initialized
Application path not initialized
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
"Loading native module /usr/lib/qgis/server/libdummy.so"
"Loading native module /usr/lib/qgis/server/liblandingpage.so"
"Loading native module /usr/lib/qgis/server/libwcs.so"
"Loading native module /usr/lib/qgis/server/libwfs.so"
"Loading native module /usr/lib/qgis/server/libwfs3.so"
"Loading native module /usr/lib/qgis/server/libwms.so"
"Loading native module /usr/lib/qgis/server/libwmts.so"
QFSFileEngine::open: No file name specified
Content-Length: 102
Content-Type: application/json
Server: QGIS FCGI server - QGIS version 3.34.6-Prizren
Status: 400
[{"code":"Bad request error","description":"Requested URI does not match any registered API handler"}]
Aggiungiamo un progetto di esempio. Puoi usare il tuo o uno di Training demo data:
mkdir /home/qgis/projects/
cd /home/qgis/projects/
wget https://github.com/qgis/QGIS-Training-Data/archive/release_3.34.zip
unzip release_3.34.zip
mv QGIS-Training-Data-release_3.34/exercise_data/qgis-server-tutorial-data/world.qgs .
mv QGIS-Training-Data-release_3.34/exercise_data/qgis-server-tutorial-data/naturalearth.sqlite .
Naturalmente, puoi utilizzare il tuo software GIS preferito per aprire questo file e dare un’occhiata alla configurazione e ai layer disponibili.
Per implementare correttamente il server QGIS è necessario un server HTTP. Le scelte consigliate sono Apache o NGINX.
2.1.1. Apache HTTP Server
Nota
Quindi, sostituisci qgis.demo
con il nome o l’indirizzo IP del tuo server.
Installa Apache e mod_fcgid:
apt install apache2 libapache2-mod-fcgid
Puoi eseguire QGIS Server sul sito web predefinito, ma configuriamo un virtualhost appositamente per questo, come segue.
Nella cartella
/etc/apache2/sites-available
, crea un file chiamatoqgis.demo.conf
, con questo contenuto:<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName qgis.demo DocumentRoot /var/www/html # Apache logs (different than QGIS Server log) ErrorLog ${APACHE_LOG_DIR}/qgis.demo.error.log CustomLog ${APACHE_LOG_DIR}/qgis.demo.access.log combined # Longer timeout for WPS... default = 40 FcgidIOTimeout 120 FcgidInitialEnv LC_ALL "en_US.UTF-8" FcgidInitialEnv PYTHONIOENCODING UTF-8 FcgidInitialEnv LANG "en_US.UTF-8" # QGIS log FcgidInitialEnv QGIS_SERVER_LOG_STDERR 1 FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0 # default QGIS project SetEnv QGIS_PROJECT_FILE /home/qgis/projects/world.qgs # QGIS_AUTH_DB_DIR_PATH must lead to a directory writeable by the Server's FCGI process user FcgidInitialEnv QGIS_AUTH_DB_DIR_PATH "/home/qgis/qgisserverdb/" FcgidInitialEnv QGIS_AUTH_PASSWORD_FILE "/home/qgis/qgisserverdb/qgis-auth.db" # Set pg access via pg_service file SetEnv PGSERVICEFILE /home/qgis/.pg_service.conf FcgidInitialEnv PGPASSFILE "/home/qgis/.pgpass" # if qgis-server is installed from packages in debian based distros this is usually /usr/lib/cgi-bin/ # run "locate qgis_mapserv.fcgi" if you don't know where qgis_mapserv.fcgi is ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews -SymLinksIfOwnerMatch Require all granted </Directory> <IfModule mod_fcgid.c> FcgidMaxRequestLen 26214400 FcgidConnectTimeout 60 </IfModule> </VirtualHost>
Nota
Alcune delle opzioni di configurazione di cui sopra sono spiegate nelle sezioni Server environment variables e pg_service file.
Creiamo ora le cartelle che ospiteranno i registri di QGIS Server e il database di autenticazione:
mkdir -p /var/log/qgis/ chown www-data:www-data /var/log/qgis mkdir -p /home/qgis/qgisserverdb chown www-data:www-data /home/qgis/qgisserverdb
Nota
www-data
è l’utente di Apache sui sistemi basati su Debian e abbiamo bisogno che Apache abbia accesso a queste cartelle o file. I comandichown www-data...
cambiano il proprietario delle rispettive cartelle e file inwww-data
.
Ora possiamo abilitare l’host virtuale e il mod ``fcgid””, se non è già stato fatto:
a2enmod fcgid a2ensite qgis.demo
Ora riavvia Apache per usare la nuova configurazione:
systemctl restart apache2
Ora che Apache sa che deve rispondere alle richieste di http://qgis.demo, dobbiamo anche configurare il sistema client in modo che sappia chi è
qgis.demo
. Per farlo, aggiungiamo127.0.0.1 qgis.demo
nel file hosts.# Replace 127.0.0.1 with the IP of your server. sh -c "echo '127.0.0.1 qgis.demo' >> /etc/hosts"
Importante
Ricorda che entrambi i file qgis.demo.conf
e /etc/hosts
devono essere configurati affinché la configurazione funzioni. Puoi anche testare l’accesso al server QGIS da altri client in rete (ad esempio macchine Windows o Macos) andando nel file /etc/hosts
e puntando il nome qgis.demo
a qualsiasi IP della macchina server sulla rete (non 127.0.0.1
perché è l’IP locale, accessibile solo dalla macchina locale). Sui computer *nix
il file hosts
si trova in /etc
, mentre su Windows si trova nella cartella C:\Windows\System32\drivers\etc
. In Windows è necessario avviare l’editor di testo con privilegi di amministratore prima di aprire il file hosts.
QGIS Server è ora disponibile all’indirizzo http://qgis.demo. Per verificare, è sufficiente scrivere in un browser, come nel seguente caso semplice:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
2.1.2. NGINX HTTP Server
Nota
Quindi, sostituisci qgis.demo
con il nome o l’indirizzo IP del tuo server.
Puoi utilizzare QGIS Server anche con NGINX. A differenza di Apache, NGINX non avvia automaticamente i processi FastCGI. I processi FastCGI devono essere avviati da qualcos’altro.
Installa NGINX:
apt install nginx
Come prima opzione, puoi usare spawn-fcgi o fcgiwrap per avviare e gestire i processi del server QGIS. Per entrambi esistono pacchetti ufficiali Debian. Quando non hai un server X in esecuzione e hai bisogno, per esempio, di stampare, puoi usare xvfb.
Un’altra opzione è quella di affidarsi a Systemd, il sistema di init per GNU/Linux che la maggior parte delle distribuzioni Linux utilizza oggi. Uno dei vantaggi di questo metodo è che non richiede altri componenti o processi. È pensato per essere semplice, ma robusto ed efficiente per le distribuzioni di produzione.
Configurazione NGINX
Il include fastcgi_params; usato nella configurazione precedente è importante, perché aggiunge i parametri da /etc/nginx/fastcgi_params
:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Inoltre, puoi utilizzare alcune Variabili d’ambiente per configurare QGIS Server. Nel file di configurazione di NGINX, /etc/nginx/nginx.conf
, devi usare l’istruzione fastcgi_param
per definire queste variabili, come mostrato di seguito:
location /qgisserver {
gzip off;
include fastcgi_params;
fastcgi_param QGIS_SERVER_LOG_STDERR 1;
fastcgi_param QGIS_SERVER_LOG_LEVEL 0;
fastcgi_pass unix:/var/run/qgisserver.socket;
}
Wrapper FastCGI
Avvertimento
fcgiwrap è più facile da configurare di spawn-fcgi, perché è già confezionato in un servizio Systemd. Ma porta anche a una soluzione molto più lenta rispetto all’uso di spawn-fcgi. Con fcgiwrap, viene creato un nuovo processo del server QGIS a ogni richiesta, il che significa che il processo di inizializzazione del server QGIS, che include la lettura e l’analisi del file di progetto QGIS, viene eseguito a ogni richiesta. Con spawn-fcgi, il processo QGIS Server rimane in vita tra una richiesta e l’altra, con conseguenti migliori prestazioni. Per questo motivo, spawn-fcgi è consigliato per l’uso in produzione.
spawn-fcgi
Se vuoi utilizzare spawn-fcgi:
Il primo passo è installare il package:
apt install spawn-fcgi
Quindi, inserisci il seguente blocco nella configurazione del server NGINX:
location /qgisserver { gzip off; include fastcgi_params; fastcgi_pass unix:/var/run/qgisserver.socket; }
E riavvia NGINX per tenere conto della nuova configurazione:
systemctl restart nginx
Infine, dato che non esiste un file di servizio predefinito per spawn-fcgi, devi avviare manualmente QGIS Server nel terminale:
spawn-fcgi -s /var/run/qgisserver.socket \ -U www-data -G www-data -n \ /usr/lib/cgi-bin/qgis_mapserv.fcgi
QGIS Server è ora disponibile su http://qgis.demo/qgisserver.
Nota
Quando si usa spawn-fcgi, puoi definire direttamente le variabili d’ambiente prima di eseguire il server. Per esempio: export QGIS_SERVER_LOG_STDERR=1
Naturalmente, puoi aggiungere uno script di init per avviare QGIS Server all’avvio o quando vuoi. Ad esempio con systemd:
Modifica il file
/etc/systemd/system/qgis-server.service
con questo contenuto:[Unit] Description=QGIS server After=network.target [Service] ;; set env var as needed ;Environment="LANG=en_EN.UTF-8" ;Environment="QGIS_SERVER_PARALLEL_RENDERING=1" ;Environment="QGIS_SERVER_MAX_THREADS=12" ;Environment="QGIS_SERVER_LOG_LEVEL=0" ;Environment="QGIS_SERVER_LOG_STDERR=1" ;; or use a file: ;EnvironmentFile=/etc/qgis-server/env ExecStart=spawn-fcgi -s /var/run/qgisserver.socket -U www-data -G www-data -n /usr/lib/cgi-bin/qgis_mapserv.fcgi [Install] WantedBy=multi-user.target
Quindi attiva e avvia il servizio:
systemctl enable --now qgis-server
Avvertimento
Con i comandi precedenti, spawn-fcgi genera un solo processo di QGIS Server.
fcgiwrap
L’utilizzo di fcgiwrap è molto più semplice da configurare rispetto a spawn-fcgi, ma è molto più lento.
Devi per prima cosa installare il package corrispondente:
apt install fcgiwrap
Quindi, inserisci il seguente blocco nella configurazione del server NGINX:
1 location /qgisserver { 2 gzip off; 3 include fastcgi_params; 4 fastcgi_pass unix:/var/run/fcgiwrap.socket; 5 fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/qgis_mapserv.fcgi; 6 }
Infine, riavvia NGINX e fcgiwrap per tenere conto della nuova configurazione:
systemctl restart nginx systemctl restart fcgiwrap
QGIS Server è ora disponibile su http://qgis.demo/qgisserver.
Systemd
QGIS Server ha bisogno di un X Server funzionante per essere pienamente utilizzabile, in particolare per la stampa. Nel caso in cui si disponga già di un server X funzionante, puoi utilizzare i servizi systemd.
Questo metodo, per implementare QGIS Server, si basa su due unità Systemd da configurare: un’unità Socket e un’unità Service.
L’unità QGIS Server Socket definisce e crea un socket del file system, utilizzato da NGINX per avviare e comunicare con QGIS Server. L’unità Socket deve essere configurata con
Accept=false
, il che significa che le richieste alla chiamata di sistemaaccept()
sono delegate al processo creato dall’unità Service. Si trova in/etc/systemd/system/qgis-server@.socket
, che in realtà è un modello:[Unit] Description=QGIS Server Listen Socket (instance %i) [Socket] Accept=false ListenStream=/var/run/qgis-server-%i.sock SocketUser=www-data SocketGroup=www-data SocketMode=0600 [Install] WantedBy=sockets.target
Ora abilita e avvia i socket:
for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.socket; done
L’unità QGIS Server Service definisce e avvia il processo QGIS Server. La parte importante è che l’input standard del processo Service sia collegato al socket definito dall’unità Socket. Questo deve essere configurato usando
StandardInput=socket
nella configurazione dell’unità Service situata in/etc/systemd/system/qgis-server@.service
:[Unit] Description=QGIS Server Service (instance %i) [Service] User=www-data Group=www-data StandardOutput=null StandardError=journal StandardInput=socket ExecStart=/usr/lib/cgi-bin/qgis_mapserv.fcgi EnvironmentFile=/etc/qgis-server/env [Install] WantedBy=multi-user.target
Nota
Le environment variables di QGIS Server sono definite in un file separato,
/etc/qgis-server/env
. Potrebbe apparire come segue:QGIS_PROJECT_FILE=/etc/qgis/myproject.qgs QGIS_SERVER_LOG_STDERR=1 QGIS_SERVER_LOG_LEVEL=3
Avvia ora il servizio socket:
for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.service; done
Infine, per il server HTTP NGINX, introduciamo la configurazione per questa impostazione:
upstream qgis-server_backend { server unix:/var/run/qgis-server-1.sock; server unix:/var/run/qgis-server-2.sock; server unix:/var/run/qgis-server-3.sock; server unix:/var/run/qgis-server-4.sock; } server { … location /qgis-server { gzip off; include fastcgi_params; fastcgi_pass qgis-server_backend; } }
Ora riavvia NGINX per tenere conto della nuova configurazione:
systemctl restart nginx
Grazie a Oslandia per aver condiviso their tutorial.
2.1.3. Xvfb
QGIS Server ha bisogno di un server X funzionante per essere pienamente utilizzabile, in particolare per la stampa. Sui server di solito si raccomanda di non installarlo, quindi si può usare xvfb
per avere un ambiente X virtuale.
Se stai eseguendo il server in ambiente grafico/X11, non è necessario installare xvfb. Maggiori informazioni su https://www.itopen.it/qgis-server-setup-notes/.
Per installare il package:
apt install xvfb
Crea il file di servizio,
/etc/systemd/system/xvfb.service
, con questo contenuto:[Unit] Description=X Virtual Frame Buffer Service After=network.target [Service] ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset [Install] WantedBy=multi-user.target
Abilita, avvia e verifica lo stato di
xvfb.service
:systemctl enable --now xvfb.service systemctl status xvfb.service
Quindi, a seconda del server HTTP, devi configurare il parametro DISPLAY o usare direttamente xvfb-run.
Utilizzandio Apache:
Aggiungi alla tua configurazione Fcgid (vedi Apache HTTP Server):
FcgidInitialEnv DISPLAY ":99"
Riavvia Apache affinché la nuova configurazione venga presa in carico:
systemctl restart apache2
Utilizzando NGINX
Con spawn-fcgi usando
xvfb-run
:xvfb-run /usr/bin/spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi \ -s /tmp/qgisserver.socket \ -G www-data -U www-data -n
Con la variabile d’ambiente DISPLAY nella configurazione del server HTTP.
fastcgi_param DISPLAY ":99";
2.2. Installazione su Windows
QGIS Server può essere installato anche su sistemi Windows utilizzando la versione a 64 bit dell’installatore di rete OSGeo4W (https://qgis.org/en/site/forusers/download.html).
Una procedura semplice è la seguente:
Scarica ed esegui il programma di installazione di OSGeo4W
Procedi con «Installazione avanzata» e installa i pacchetti QGIS Desktop, QGIS Server apache e mod_fcgid.
Apache non viene installato direttamente come servizio su Windows. Devi:
Fai clic con il tasto destro del mouse sul file
OSGeo4W.bat
alla radice della cartellaC:OSGeo4W` (se sono stati utilizzati i percorsi di installazione predefiniti) e seleziona :guilabel:`Esegui come amministratore
.Nella console, esegui
apache-install.bat
, che produrrà il seguente risultato> apache-install.bat Installing the 'Apache OSGeo4W Web Server' service The 'Apache OSGeo4W Web Server' service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started. ...
Il servizio è avviato, come puoi notare nel report. Ma il server potrebbe non funzionare a causa di una configurazione personalizzata mancante.
Modifica il file
C:\OSGeo4wappsapacheconfhttpd.conf
con le seguenti modifiche (sono possibili altre combinazioni):Obiettivo
Configurazione esistente
Sostituzione
(Opzionale) Personalizzare l’indirizzo di ascolto utilizzando un IP e/o una porta. Puoi aggiungere tutte le voci che vuoi.
Listen ${SRVPORT}
Listen localhost:8080
Indica dove trovare i file di script
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias /cgi-bin/ "C:/OSGeo4W/apps/qgis/bin/"
Fornisci le autorizzazioni alla cartella degli script
<Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options None Require all granted </Directory>
<Directory "C:/OSGeo4W/apps/qgis/bin"> SetHandler cgi-script AllowOverride None Options ExecCGI Require all granted </Directory>
Abilita le estensioni dei file da utilizzare per i file di script. Deseleziona e completa
#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .exe
Aggiungi altre variabili di configurazione personalizzate di OSGeo4W
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W/httpd.d/httpd_*.conf"
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W/httpd.d/httpd_*.conf" SetEnv GDAL_DATA "C:/OSGeo4W/share/gdal" SetEnv QGIS_AUTH_DB_DIR_PATH "C:/OSGeo4W/apps/qgis/resources"
Riavvia il server web Apache
> apache-restart.bat
Apri la finestra del browser per testare una richiesta GetCapabilities al server QGIS. Sostituisci
localhost:8080
con l’IP e la porta impostati per l’ascolto.http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
Dovrebbe essere restituito un file
XML
con le capabilities. Il tuo server è pronto per l’uso.
2.3. Servire un progetto
Ora che QGIS Server è installato e funzionante, non resta che utilizzarlo.
Ovviamente, abbiamo bisogno di un progetto QGIS su cui lavorare. Naturalmente, puoi personalizzare completamente il progetto, definendo le informazioni di contatto, specificando alcune restrizioni sul SR o addirittura escludendo alcuni layer. Tutto quello che c’è da sapere a questo proposito è descritto più avanti in Configura il tuo progetto.
Ma per ora useremo un semplice progetto già configurato e precedentemente scaricato in /home/qgis/projects/world.qgs
, come descritto sopra.
Aprendo il progetto e dando una rapida occhiata ai layer, sappiamo che al momento sono disponibili 4 layer:
airports
places
countries
countries_shapeburst
Non è necessario che tu capisca la richiesta completa per ora, ma puoi recuperare una mappa con alcuni dei layer precedenti grazie a QGIS Server facendo qualcosa come questo nel tuo browser web per recuperare il layer countries:
Se hai seguito le istruzioni precedenti per installare un server HTTP Apache:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?MAP=/home/qgis/projects/world.qgs&LAYERS=countries&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&BBOX=-90,-180,90,180
Se hai seguito le istruzioni precedenti per installare un server HTTP NGINX:
http://qgis.demo/qgisserver?MAP=/home/qgis/projects/world.qgs&LAYERS=countries&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&BBOX=-90,-180,90,180
Se ottieni l’immagine seguente, QGIS Server funziona correttamente:
Nota che puoi definire la variabile d’ambiente QGIS_PROJECT_FILE per utilizzare un progetto per impostazione predefinita, invece di fornire un parametro MAP (vedi Variabili d’ambiente).
Per esempio con spawn-fcgi:
export QGIS_PROJECT_FILE=/home/qgis/projects/world.qgs
spawn-fcgi -f /usr/lib/bin/cgi-bin/qgis_mapserv.fcgi \
-s /var/run/qgisserver.socket \
-U www-data -G www-data -n
2.4. Configura il tuo progetto
Per fornire un nuovo QGIS Server WMS, WFS, OAPIF o WCS, devi creare un file di progetto QGIS con alcuni dati o utilizzare un progetto corrente. Definisci i colori e gli stili dei layer in QGIS e il SR del progetto, se non già definito. Quindi, accedi al menu QGIS Server della finestra di dialogo e fornisci alcune informazioni sull’OWS nella scheda Service Capabilities.
Devi Abilitare le funzionalità del servizio prima, se è disattivato. Questo apparirà nella risposta GetCapabilities di WMS, WFS o WCS. Se non selezioni la casella di controllo Abilita le funzionalità del servizio, QGIS Server utilizzerà le informazioni fornite nel file wms_metadata.xml
situato nella cartella cgi-bin
.
2.4.1. WMS capabilities
Nella scheda WMS capabilities, seleziona Estensione pubblicata per definire l’estensione pubbliccata nella risposta di WMS GetCapabilities. Il widget spatial extent selector ti aiuta a inserire l’estensione come testo xmin, xmax, ymin, ymax
o a sceglierla dalla mappa, dai layer, dai segnalibri…
Selezionando :guilabel: Restrizioni SR, puoi limitare in quali sistemi di riferimento di coordinate (SR) QGIS Server offrirà la visualizzazione delle mappe. Si consiglia di limitare i SR offerti per ridurre le dimensioni della risposta WMS GetCapabilities. Usa il pulsante |simbologyAdd| in basso per selezionare i SR dal selettore del sistema di riferimento di coordinate, oppure fai clic su Utilizzato per aggiungere all’elenco i SR utilizzati nel progetto QGIS.
Se nel progetto hai definito dei layout di stampa, questi saranno elencati nella risposta GetProjectSettings
e potranno essere usati dalla richiesta GetPrint per creare delle stampe, usando uno dei layout di stampa come modello. Questa è un’estensione specifica di QGIS alla specifica WMS 1.3.0. Se vuoi escludere un layout di stampa dalla pubblicazione da parte del WMS, seleziona la casella di controllo Escludi layout e fai clic sul pulsante |simbologyAdd| sottostante. Quindi, seleziona un layout di stampa dalla finestra di dialogo Seleziona layout di stampa per aggiungerlo all’elenco dei layout esclusi.
Se vuoi escludere un layer o un gruppo di layer dalla pubblicazione da parte del WMS, seleziona la casella di controllo Escludi layer e fai clic sul pulsante |simbologyAdd| sottostante. Si apre la finestra di dialogo Selezione di layer e gruppi limitati, che consente di scegliere i layer e i gruppi che non vuoi vengano pubblicati. Usa i tasti Shift o Ctrl se si vuoi selezionare più voci. Si consiglia di escludere dalla pubblicazione i layer non necessari, in quanto ciò riduce le dimensioni della risposta di WMS GetCapabilities, con conseguenti tempi di caricamento più rapidi sul lato client.
Se selezioni Use layer ids as name, gli id dei layer saranno usati per fare riferimento ai layer nella risposta GetCapabilities
o nel parametro GetMap LAYERS
. In caso contrario, viene utilizzato il nome del layer o il nome breve, se definito (vedi Proprietà Server QGIS).
Puoi ricevere le GetFeatureInfo richieste come testo semplice, XML e GML. L’impostazione predefinita è XML.
Se vuoi, puoi selezionare Add geometry to feature response. Questo includerà il riquadro di delimitazione per ogni elemento nella risposta di GetFeatureInfo. Vedi anche il parametro WITH_GEOMETRY.
Poiché molti client web non possono visualizzare gli archi circolari nelle geometrie, puoi segmentare la geometria prima di inviarla al client in una risposta GetFeatureInfo. Ciò consente a tali client di visualizzare comunque la geometria di un elemento (ad esempio per evidenziare l’elemento). È necessario selezionare la casella di controllo Segmentize feature info geometry per attivare l’opzione.
Quando un gruppo di layer viene passato alla richiesta GetLegendGraphic
, tutti i suoi layer foglia vengono aggiunti all’immagine della legenda (ma senza le etichette dei gruppi). Seleziona l’opzione Aggiungi gruppi di layer in GetLegendGraphic se vuoi inserire anche i nomi dei gruppi di layer (e dei sottogruppi) nell’albero dei layer, proprio come nella legenda di QGIS Desktop.
Puoi anche usare l’opzione GetFeatureInfo geometry precision per impostare la precisione della geometria GetFeatureInfo. Ciò ti consente di risparmiare larghezza di banda quando non è necessaria la massima precisione.
Se vuoi che QGIS Server pubblicizzi URL di richiesta specifici nella risposta di WMS GetCapabilities, inserisci l’URL corrispondente nel campo Advertised URL.
Inoltre, puoi limitare la dimensione massima delle mappe restituite dalla richiesta GetMap inserendo la larghezza e l’altezza massime nei rispettivi campi sotto Maximums for GetMap request.
Puoi modificare il fattore Quality for JPEG images. Il fattore di qualità deve essere compreso nell’intervallo 0-100. Specifica 0 per la massima compressione, 100 per nessuna compressione.
Puoi modificare il limite di elementi dell’atlante da stampare in una richiesta impostando il campo Maximum features for Atlas print requests.
Quando QGIS Server viene utilizzato in modalità a tasselli (vedi il parametro TILED), puoi impostare il parametro Tile buffer in pixel. Il valore consigliato è la dimensione del simbolo o della linea più grande del progetto QGIS.
Se uno dei tuoi layer usa la Map Tip display (cioè per mostrare il testo usando le espressioni), questo verrà elencato nell’output di GetFeatureInfo. Se il layer utilizza una Mappa dei valori per uno dei suoi attributi, anche questa informazione verrà mostrata nell’output di GetFeatureInfo.
2.4.2. WMTS capabilities
Nella scheda Capacità WMTS puoi selezionare i layer che vuoi pubblicare come WMTS e specificare se vuoi pubblicarli come PNG o JPEG.
Se inserisci un URL nel campo Advertised URL della sezione WMTS capabilities, QGIS Server pubblicizzerà questo URL specifico nella risposta WMTS GetCapabilities.
2.4.3. WFS/OAPIF capabilities
Nella scheda WFS/OAPIF capabilities, puoi selezionare i layer che vuoi pubblicare come WFS o OAPIF e specificare se consentiranno operazioni di aggiornamento, inserimento e cancellazione.
Se inserisci un URL nel campo Advertised URL della sezione WFS capabilities, QGIS Server pubblicizzerà questo URL specifico nella risposta WFS GetCapabilities.
2.4.4. WCS capabilities
Nella scheda Capacità WCS, puoi selezionare i layer che vuoi pubblicare come WCS.
Se iserisci un URL nel campo Advertised URL della sezione WCS capabilities, QGIS Server pubblicizzerà questo URL specifico nella risposta WCS GetCapabilities.
2.4.5. Messa a punto del tuo OWS
Per i layer vettoriali, il menu Campi della finestra di dialogo consente di definire per ogni attributo se sarà pubblicato o meno. Per impostazione predefinita, tutti gli attributi sono pubblicati da WMS e WFS. Se non si desidera pubblicare un attributo specifico, deselezionare la casella di controllo corrispondente nella colonna WMS o WFS.
Puoi sovrapporre watermarks alle mappe prodotte dal WMS aggiungendo annotazioni di testo o SVG al file di progetto. Per istruzioni sulla creazione di annotazioni, vedere la sezione Strumenti di Annotazione. Affinché le annotazioni vengano visualizzate come watermarks nell’output del WMS, la casella di controllo Posizione fissa mappa nella finestra di dialogo Testo dell’annotazione deve essere deselezionata. Si può accedere a questa casella facendo doppio clic sull’annotazione mentre è attivo uno degli strumenti di annotazione. Per le annotazioni SVG, è necessario impostare il progetto in modo che salvi percorsi assoluti (nel menu Generale della finestra di dialogo ) o modificare manualmente il percorso dell’immagine SVG in modo che rappresenti un percorso relativo valido.
2.5. Integrazione con terze parti
QGIS Server fornisce servizi web standard OGC come WMS, WFS, etc. e può quindi essere utilizzato da un’ampia gamma di strumenti per l’utente finale.
2.5.1. Integrazione con QGIS Desktop
QGIS Desktop è il designer di mappe e QGIS Server è il server di mappe. Le mappe o i progetti QGIS saranno serviti da QGIS Server per fornire gli standard OGC. Questi progetti QGIS possono essere file o voci di un database (utilizzando :menuselection: Progetto –> Salva in –> PostgreSQL in QGIS Desktop).
Inoltre, è necessario stabilire un flusso di lavoro di aggiornamento dedicato per aggiornare un progetto utilizzato da un server QGIS (cioè copiare i file del progetto nella posizione del server e riavviare il server QGIS). Per il momento, i processi automatizzati (come il ricaricamento del server tramite il servizio di coda di messaggi) non sono ancora stati implementati.
2.5.2. Integrazione con MapProxy
MapProxy è un server di cache di tasselli e, poiché può leggere e servire qualsiasi server di mappe WMS/WMTS, può essere collegato direttamente ai servizi web del server QGIS e migliorare l’esperienza dell’utente finale.
2.5.3. Integrazione con QWC2
QWC2 è un’applicazione web reattiva dedicata a QGIS Server. Aiuta a costruire un visualizzatore di mappe altamente personalizzato con selezione dei layer, informazioni su elementi, ecc. Sono disponibili anche molti plugin, come il servizio di autenticazione o di stampa; l’elenco completo è disponibile in questo repository.