3. Servizi

QGIS è in grado di gestire i dati secondo i protocolli standard come descritto da Open Geospatial Consortium (OGC):

  • WMS 1.1.1 e 1.3.0

  • WFS 1.0.0 e 1.1.0

  • OGC API - Features (WFS3)

  • WCS 1.1.1

  • WMTS 1.0.0

Ulteriori parametri e richieste sono supportati in aggiunta allo standard originale che migliora notevolmente le possibilità di personalizzazione grazie al motore di visualizzazione QGIS.

3.1. Web Map Service (WMS)

Gli standard 1.1.1 e 1.3.0 WMS implementati in QGIS Server forniscono un’interfaccia HTTP per richiedere immagini di mappe o legende generate da un progetto QGIS. Una tipica richiesta WMS definisce il progetto QGIS da usare, i layer da visualizzare e il formato dell’immagine da generare. Il supporto di base è disponibile anche per Styled Layer Descriptor (SLD).

Specifiche:

Richieste standard fornite da QGIS Server:

Request

Descrizione

GetCapabilities

Restituisce metadati XML con informazioni sul server

GetMap

Restituisce una mappa

GetFeatureInfo

Recupera i dati (geometria e valori) per una posizione di pixel

GetLegendGraphics

Restituisce i simboli della legenda

Richieste del fornitore date da QGIS Server:

Request

Descrizione

GetPrint

Restituisce una composizione QGIS

GetProjectSettings

Restituisce informazioni specifiche su QGIS Server

3.1.1. GetMap

Parametri standard per la richiesta GetMap secondo le specifiche OGC WMS 1.1.1 e 1.3.0:

Parametro

Richiesto

Descrizione

SERVICE

Nome del servizio (WMS)

VERSION

Versione del servizio

REQUEST

Nome della richiesta (GetMap)

LAYERS

No

Layer da visualizzare

STYLES

No

Stile del layers

SRS / CRS

Sistema di riferimento delle Coordinate

BBOX

Estensione Mappa

WIDTH

Larghezza dell’immagine in pixel

HEIGHT

Altezza dell’immagine in pixel

FORMAT

No

Formato immagine

TRANSPARENT

No

Sfondo trasparente

SLD

No

URL di un SLD da usare per lo stile

SLD_BODY

No

SLD in linea (XML) da usare per lo stile

Oltre a quelli standard, QGIS Server supporta i seguenti parametri extra:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

BGCOLOR

No

Specifica del colore di sfondo

DPI

No

Specifica della risoluzione in uscita

IMAGE_QUALITY

No

Compressione JPEG

OPACITIES

No

Opacità per il layer o il gruppo

FILTER

No

Sottoinsieme di elementi

SELECTION

No

Elementi principali

FILE_NAME

No

Nome del file scaricato

Solo per FORMAT=application/dxf

FORMAT_OPTIONS

No

Opzioni del formato di file specificato

Solo per FORMAT=application/dxf

TILED

No

Lavorare in modalità tassellata

Esempio di URL:

http://localhost/qgis_server?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&MAP=/home/qgis/projects/world.qgs
&LAYERS=mylayer1,mylayer2,mylayer3
&STYLES=style1,default,style3
&OPACITIES=125,200,125
&CRS=EPSG:4326
&WIDTH=400
&HEIGHT=400
&FORMAT=image/png
&TRANSPARENT=TRUE
&DPI=300
&TILED=TRUE

SERVICE

Questo parametro deve essere WMS.

Per esempio:

http://localhost/qgisserver?
SERVICE=WMS
&...

VERSION

Questo parametro permette di specificare la versione del servizio da utilizzare. I valori disponibili per il parametro VERSION sono:

  • 1.1.1

  • 1.3.0

A seconda del numero di versione, ci si devono aspettare leggere differenze come spiegato più avanti per i prossimi parametri:

  • CRS / SRS

  • BBOX

REQUEST

Questo parametro è GetMap nel caso della richiesta GetMap.

LAYERS

Questo parametro permette di specificare i layer da visualizzare sulla mappa. I nomi devono essere separati da una virgola.

Inoltre, QGIS Server ha introdotto alcune opzioni per selezionare i layer:

  • un nome breve

  • il layer id

Il nome breve di un layer può essere configurato attraverso :menuselection: Proprietà –> Metadati nel menu del layer. Se il nome breve è definito, allora viene usato come predefinito al posto del nome del layer:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=mynickname1,mynickname2
&...

Inoltre, c’è un’opzione del progetto che permette di selezionare i layer in base al loro id nel menu OWS Server ► WMS capabilities della finestra di dialogo :menuselection: Progetto –> Proprietà…. Per attivare questa opzione, la casella di controllo Usa gli id del layer come nomi deve essere selezionata.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=mylayerid1,mylayerid2
&...

STYLES

Questo parametro può essere usato per specificare lo stile di un layer per il processo di visualizzazione. Gli stili devono essere separati da una virgola. Il nome dello stile predefinito è default.

SRS / CRS

Questo parametro permette di indicare il sistema di riferimento spaziale in uscita dalla mappa in WMS 1.1.1 e deve essere formulato come EPSG:XXXX. Nota che SR è supportato anche se la versione corrente è 1.1.1.

Per WMS 1.3.0, il parametro SR è preferibile ma è supportato anche SRS.

Nota che se entrambi i parametri SR e SRS sono indicati nella richiesta, allora è la versione corrente indicata nel parametro VERSION che è decisiva.

Nel prossimo caso, il parametro SRS è mantenuto qualunque sia il parametro VERSION perché SR non è indicato:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&SRS=EPSG:2854
&...

Nel prossimo caso, il parametro SRS viene tenuto al posto di SR a causa del parametro VERSION:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.1.1
&CRS=EPSG:4326
&SRS=EPSG:2854
&...

Nel prossimo caso, il parametro SR viene tenuto al posto di SRS a causa del parametro VERSION:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&CRS=EPSG:4326
&SRS=EPSG:2854
&...

BBOX

Questo parametro permette di specificare l’estensione della mappa con unità secondo il SR corrente. Le coordinate devono essere separate da una virgola.

Il parametro BBOX è formato come min_a,min_b,max_a,max_b ma la definizione degli assi a e b è diversa secondo il parametro corrente VERSION:

  • in WMS 1.1.1, la disposizione degli assi è sempre est/nord

  • in WMS 1.3.0, la disposizione degli assi dipende dall’autorità del SR

Per esempio nel caso di EPSG:4326 e WMS 1.1.1, a è la longitudine (est) e b` la latitudine (nord), portando a una richiesta come:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.1.1
&SRS=epsg:4326
&BBOX=-180,-90,180,90
&...

Ma nel caso di WMS 1.3.0, l’ordine degli assi definito nel database EPSG è nord/est quindi a è la latitudine e b` la longitudine:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&CRS=epsg:4326
&BBOX=-90,-180,90,180
&...

WIDTH

Questo parametro permette di specificare la larghezza in pixel dell’immagine in uscita.

HEIGHT

Questo parametro permette di specificare l’altezza in pixel dell’immagine in uscita.

FORMAT

Questo parametro può essere usato per specificare il formato dell’immagine della mappa. I valori disponibili sono:

  • jpg

  • jpeg

  • image/jpeg

  • image/png

  • image/png; mode=1bit

  • image/png; mode=8bit

  • image/png; mode=16bit

  • application/dxf` Solo i layer che hanno accesso in lettura nel servizio WFS sono esportati nel formato DXF.

    Esempio di URL:

    http://localhost/qgisserver?
    SERVICE=WMS&VERSION=1.3.0
    &REQUEST=GetMap
    &FORMAT=application/dxf
    &LAYERS=Haltungen,Normschacht,Spezialbauwerke
    &STYLES=
    &CRS=EPSG%3A21781&BBOX=696136.28844801,245797.12108743,696318.91114315,245939.25832905
    &WIDTH=1042
    &HEIGHT=811
    &FORMAT_OPTIONS=MODE:SYMBOLLAYERSYMBOLOGY;SCALE:250&FILE_NAME=plan.dxf
    

TRANSPARENT

Questo parametro booleano può essere usato per specificare la trasparenza dello sfondo. I valori disponibili sono (non sensibili alle maiuscole):

  • TRUE

  • FALSE

Tuttavia, questo parametro viene ignorato se il formato dell’immagine della mappa indicato con FORMAT è diverso da PNG.

MAP

Questo parametro permette di definire il file di progetto QGIS da utilizzare.

Come menzionato in GetMap parameters table, MAP è obbligatorio perché una richiesta ha bisogno di un progetto QGIS per funzionare effettivamente. Tuttavia, la variabile d’ambiente QGIS_PROJECT_FILE può essere usata per definire un progetto QGIS predefinito. In questo caso specifico, MAP non è più un parametro richiesto. Per ulteriori informazioni puoi fare riferimento a Configurazione avanzata.

BGCOLOR

Questo parametro permette di indicare un colore di sfondo per l’immagine della mappa. Tuttavia non può essere combinato con il parametro TRANSPARENT in caso di immagini PNG (la trasparenza ha la priorità). Il colore può essere letterale o in notazione esadecimale.

Esempio di URL con la notazione letterale:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&BGCOLOR=green
&...

Esempio di URL con la notazione esadecimale:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&BGCOLOR=0x00FF00
&...

DPI

Questo parametro può essere usato per specificare la risoluzione in uscita richiesta.

IMAGE_QUALITY

Questo parametro è usato solo per le immagini JPEG. Per impostazione predefinita, la compressione JPEG è -1.

Puoi cambiare il default per ogni progetto QGIS nel menu OWS Server ► WMS capabilities della finestra di dialogo Progetto ► Proprietà…. Se vuoi sovrascriverlo in una richiesta GetMap puoi farlo usando il parametro IMAGE_QUALITY.

OPACITIES

Lista separata da virgole di valori di opacità. L’opacità può essere impostata a livello di layer o di gruppo. I valori consentiti vanno da 0 (completamente trasparente) a 255 (completamente opaco).

FILTER

Un sottoinsieme di layer può essere selezionato con il parametro FILTER. La sintassi è fondamentalmente la stessa della stringa del sottoinsieme di QGIS. Tuttavia, ci sono alcune restrizioni per evitare introduzioni SQL nei database tramite QGIS Server. Se viene trovata una stringa pericolosa nel parametro, QGIS Server restituirà l’errore successivo:

<ServiceExceptionReport>
  <ServiceException code="Security">The filter string XXXXXXXXX has been rejected because of security reasons.
  Note: Text strings have to be enclosed in single or double quotes. A space between each word / special character is mandatory.
  Allowed Keywords and special characters are IS,NOT,NULL,AND,OR,IN,=,<,=<,>,>=,!=,',',(,),DMETAPHONE,SOUNDEX.
  Not allowed are semicolons in the filter expression.</ServiceException>
</ServiceExceptionReport>

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=mylayer1,mylayer2,mylayer3
&FILTER=mylayer1:"col1";mylayer1,mylayer2:"col2" = 'blabla'
&...

In questo esempio, lo stesso filtro (il campo col2 è uguale alla stringa blabla) è applicato ai layer mylayer1 e mylayer2, mentre il filtro su col1 è applicato solo a mylayer1.

Nota

È possibile fare ricerche di attributi tramite GetFeatureInfo e omettere il parametro X/Y se c’è un FILTER. QGIS Server restituisce quindi le informazioni sugli elementi corrispondenti e genera un perimetro di delimitazione combinato nell’XML in uscita.

SELECTION

Il parametro SELECTION può evidenziare elementi da uno o più layer. Gli elementi vettoriali possono essere selezionati passandogli liste separate da virgole con gli id degli elementi.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=mylayer1,mylayer2
&SELECTION=mylayer1:3,6,9;mylayer2:1,5,6
&...

L’immagine seguente presenta la risposta di una richiesta GetMap utilizzando l’opzione SELECTION, ad esempio http://myserver.com/...&SELECTION=countries:171,65.

Poiché questi id degli elementi corrispondono nell’insieme dei dati di origine a France e Romania sono evidenziati in giallo.

../../_images/server_selection_parameter.png

Fig. 3.1 Risposta del server a una richiesta GetMap con il parametro SELECTION

FORMAT-OPTIONS

Questo parametro può essere usato per specificare le opzioni per il formato selezionato. Solo per FORMAT=application/dxf. Una lista di coppie chiave:valore separate da punto e virgola:

  • SCALE: da usare per le regole della simbologia, i filtri e gli stili (non la scalatura effettiva dei dati - i dati rimangono nella scala originale).

  • MODE: corrisponde alle opzioni di esportazione offerte nella finestra di dialogo di esportazione DXF di QGIS Desktop. I valori possibili sono NOSYMBOLOGY, FEATURESYMBOLOGY e SYMBOLLAYERSYMBOLOGY.

  • LAYERSATTRIBUTES: specifica un campo che contiene valori per i nomi dei layer DXF - se non specificato, vengono usati i nomi originali dei layer QGIS.

  • USE_TITLE_AS_LAYERNAME: se abilitato, il titolo del layer sarà usato come nome del layer.

  • CODEC: specifica un codec da usare per la codifica. Il valore predefinito è ISO-8859-1, verificare la finestra di dialogo di esportazione DXF di QGIS desktop per i valori validi.

  • NO_MTEXT: usa TEXT invece di MTEXT per le etichette.

  • FORCE_2D: Forza il risultato in 2D. Questo è richiesto per la larghezza della polilinea.

TILED

Per ragioni di performance, QGIS Server può essere usato in modalità tiled. In questa modalità, il client richiede diverse piccoli tasselli di dimensioni fisse, e le assembla per formare l’intera mappa. Facendo questo, i simboli al o vicino al confine tra due tasselli possono apparire tagliati, perché sono presenti solo in uno dei tasselli.

Imposta il parametro TILED a TRUE per dire a QGIS Server di lavorare in modalità tiled, e di applicare il Tassello buffer configurato nel progetto QGIS (vedi Configura il tuo progetto).

Quando TILED è TRUE e quando un Tassello buffer non nullo è configurato nel progetto QGIS, gli elementi al di fuori dell’estensione del tassello sono disegnati per evitare simboli di taglio ai confini del tassello.

Per default, TILED è impostato su FALSE.

3.1.2. GetFeatureInfo

Parametri standard per la richiesta GetFeatureInfo secondo le specifiche OGC WMS 1.1.1 e 1.3.0:

Parametro

Richiesto

Descrizione

SERVICE

Nome del servizio (WMS)

VERSION

No

Versione del servizio

REQUEST

Nome della richiesta (GetFeatureInfo)

QUERY_LAYERS

Layer su cui fare la query

LAYERS

Layer da visualizzare (identico a QUERY_LAYERS)

STYLES

No

Stile del layers

SRS / CRS

Sistema di riferimento delle Coordinate

BBOX

No

Estensione Mappa

WIDTH

Larghezza dell’immagine in pixel

HEIGHT

Altezza dell’immagine in pixel

TRANSPARENT

No

Sfondo trasparente

INFO_FORMAT

No

Formato in uscita

FEATURE_COUNT

No

Numero massimo di elementi da restituire

I

No

Colonna pixel del punto da interrogare

X

No

Come il parametro I, ma in WMS 1.1.1

J

No

Riga pixel del punto da interrogare

Y

No

Come il parametro J, ma in WMS 1.1.1

WMS_PRECISION

No

La precisione (numero di cifre) da usare quando si restituisce la geometria (vedi how to add geometry to feature response). Il valore predefinito è -1 che significa che viene usata la precisione definita nel progetto.

Oltre a quelli standard, QGIS Server supporta i seguenti parametri extra:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

FILTER

No

Sottoinsieme di elementi

FI_POINT_TOLERANCE

No

Tolleranza in pixel per i layer punto

FI_LINE_TOLERANCE

No

Tolleranza in pixel per i layer linea

FI_POLYGON_TOLERANCE

No

Tolleranza in pixel per i layer poligono

FILTER_GEOM

No

Filtrare geometria

WITH_MAPTIP

No

Aggiungere suggerimenti mappa al risultato

WITH_GEOMETRY

No

Aggiungere la geometria al risultato

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&MAP=/home/qgis/projects/world.qgs
&LAYERS=mylayer1,mylayer2,mylayer3
&CRS=EPSG:4326
&WIDTH=400
&HEIGHT=400
&INFO_FORMAT=text/xml
&TRANSPARENT=TRUE
&QUERY_LAYERS=mylayer1
&FEATURE_COUNT=3
&I=250
&J=250

REQUEST

Questo parametro è GetFeatureInfo nel caso della richiesta GetFeatureInfo.

INFO_FORMAT

Questo parametro può essere usato per specificare il formato del risultato. I valori disponibili sono:

  • text/xml

  • text/html

  • text/plain

  • application/vnd.ogc.gml

  • application/json

QUERY_LAYERS

Questo parametro specifica i layer da visualizzare sulla mappa. I nomi sono separati da una virgola.

Inoltre, QGIS Server introduce opzioni per selezionare i layer in base a:

  • nome breve

  • layer id

Vedi il parametro LAYERS definito in GetMap per maggiori informazioni.

FEATURE_COUNT

Questo parametro specifica il numero massimo di elementi per layer da restituire. Per esempio se QUERY_LAYERS è impostato su layer1,layer2 e FEATURE_COUNT è impostato su 3 allora saranno restituite un massimo di 3 elementi dal layer1. Allo stesso modo verrà restituito un massimo di 3 elementi dal layer2.

Per impostazione predefinita, viene restituito solo 1 elemento per layer.

I

Questo parametro, definito in WMS 1.3.0, permette di specificare la colonna pixel del punto di interrogazione.

X

Stesso parametro di I, ma definito in WMS 1.1.1.

J

Questo parametro, definito in WMS 1.3.0, permette di specificare la riga pixel del punto di interrogazione.

Y

Stesso parametro di J, ma definito in WMS 1.1.1.

FI_POINT_TOLERANCE

Questo parametro specifica la tolleranza in pixel per i layer punto.

FI_LINE_TOLERANCE

Questo parametro specifica la tolleranza in pixel per i layer linea.

FI_POLYGON_TOLERANCE

Questo parametro specifica la tolleranza in pixel per i layer poligono.

FILTER_GEOM

Questo parametro specifica una geometria WKT con cui gli elementi devono intersecarsi.

WITH_MAPTIP

Questo parametro specifica se aggiungere suggerimenti mappa al risultato.

I valori disponibili sono (non sensibili alle maiuscole):

  • TRUE

  • FALSE

WITH_GEOMETRY

Questo parametro specifica se aggiungere geometrie al risultato. Per usare questa funzione devi prima abilitare l’opzione Aggiungi la geometria alla risposta dell’oggetto nel progetto QGIS. Vedi Configure your project.

I valori disponibili sono (non sensibili alle maiuscole):

  • TRUE

  • FALSE

3.1.3. GetPrint

QGIS Server ha la capacità di creare output di layout di stampa in formato pdf o pixel. Le finestre di layout di stampa nel progetto pubblicato sono usate come modelli. Nella richiesta GetPrint, il client ha la possibilità di specificare i parametri delle mappe e delle etichette del layout contenuto.

Parametri per la richiesta GetPrint:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

SERVICE

Nome del servizio (WMS)

VERSION

No

Versione del servizio

REQUEST

Nome della richiesta (GetPrint)

LAYERS

No

Layer da visualizzare

TEMPLATE

Modello di layout da utilizzare

SRS / CRS

Sistema di riferimento delle Coordinate

FORMAT

No

Formato in uscita

ATLAS_PK

No

Caratteristiche dell’Atlante

STYLES

No

Stile del layers

TRANSPARENT

No

Sfondo trasparente

OPACITIES

No

Opacità per il layer o il gruppo

SELECTION

No

Elementi principali

mapX:EXTENT

No

Estensione della mappa “X”

mapX:LAYERS

No

Layer della mappa “X”

mapX:STYLES

No

Stile dei layer della mappa “X”

mapX:SCALE

No

Scala dei layer della mappa “X”

mapX:ROTATION

No

Rotazione della mappa “X”

mapX:GRID_INTERVAL_X

No

Intervallo del reticolo sull’asse x della mappa “X”

mapX:GRID_INTERVAL_Y

No

Intervallo del reticolo sull’asse y della mappa “Y”

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetPrint
&MAP=/home/qgis/projects/world.qgs
&CRS=EPSG:4326
&FORMAT=png
&TEMPLATE=Layout%201
&map0:EXTENT=-180,-90,180,90
&map0:LAYERS=mylayer1,mylayer2,mylayer3
&map0:OPACITIES=125,200,125
&map0:ROTATION=45

Nota che il modello di layout può contenere più di una mappa. In questo modo, se vuoi configurare una mappa specifica, devi usare i parametri mappaX: dove X è un numero positivo che puoi recuperare grazie alla richiesta GetProjectSettings.

Per esempio:

<WMS_Capabilities>
...
<ComposerTemplates xsi:type="wms:_ExtendedCapabilities">
<ComposerTemplate width="297" height="210" name="Druckzusammenstellung 1">
<ComposerMap width="171" height="133" name="map0"/>
<ComposerMap width="49" height="46" name="map1"/></ComposerTemplate>
</ComposerTemplates>
...
</WMS_Capabilities>

REQUEST

Questo parametro deve essere GetPrint per la richiesta GetPrint.

TEMPLATE

Questo parametro può essere utilizzato per specificare il nome di un modello di layout da utilizzare per la stampa.

FORMAT

Questo parametro specifica il formato dell’immagine della mappa. I valori disponibili sono:

  • png (default value)

  • image/png

  • jpg

  • jpeg

  • image/jpeg

  • svg

  • image/svg

  • image/svg+xml

  • pdf

  • application/pdf

Se il parametro FORMAT è diverso da uno di questi valori, allora viene restituita una eccezione.

ATLAS_PK

Questo parametro permette di attivare la visualizzazione dell’atlante indicando quali caratteristiche vogliamo stampare. Per ottenere un atlante con tutte gli elementi, si può usare il simbolo * (secondo il numero massimo di elementi consentito nella configurazione del progetto).

Quando il FORMAT è pdf, viene restituito un singolo documento PDF che combina le pagine degli elementi. Per tutti gli altri formati, viene restituita una singola pagina.

mapX:EXTENT

Questo parametro specifica l’estensione per un oggetto della mappa di layout come xmin,ymin,xmax,ymax.

mapX:ROTATION

Questo parametro specifica la rotazione della mappa in gradi.

mapX:GRID_INTERVAL_X

Questo parametro specifica la densità delle linee del reticolo nella direzione X.

mapX:GRID_INTERVAL_Y

Questo parametro specifica la densità delle linee del reticolo nella direzione Y.

mapX:SCALE

Questo parametro specifica la scala della mappa per un oggetto mappa del layout. Questo è utile per assicurare la visibilità dei layer e delle etichette in base alla scala, anche se client e server possono avere algoritmi diversi per calcolare il denominatore della scala.

mapX:LAYERS

Questo parametro specifica i layer per un elemento della mappa del layout. Vedi GetMap Layers per maggiori informazioni su questo parametro.

mapX:STYLES

Questo parametro specifica gli stili dei layer definiti in uno specifico oggetto della mappa di layout. Vedi GetMap Styles per maggiori informazioni su questo parametro.

3.1.4. GetLegendGraphics

Sono disponibili diversi parametri aggiuntivi per cambiare la dimensione degli elementi della legenda:

  • BOXSPACE spazio tra la cornice della legenda e il contenuto (mm)

  • FORMAT, image/jpeg, image/png or application/json. For JSON, symbols are encoded with Base64 and most other options related to layout or fonts are not taken into account because the legend must be built on the client side.

  • LAYERSPACE spazio verticale tra i layer (mm)

  • LAYERTITLESPACE spazio verticale tra il titolo del layer e le voci seguenti (mm)

  • SYMBOLSPACE spazio verticale tra il simbolo e la voce seguente (mm)

  • ICONLABELSPACE Spazio orizzontale tra il simbolo e il testo dell’etichetta (mm)

  • SYMBOLWIDTH larghezza dell’anteprima del simbolo (mm)

  • SYMBOLHEIGHT altezza dell’anteprima del simbolo (mm)

Questi parametri cambiano le proprietà del carattere per i titoli dei layer e le etichette degli oggetti:

  • LAYERFONTFAMILY / ITEMFONTFAMILY famiglia di caratteri per il titolo del layer / testo dell’articolo

  • LAYERFONTBOLD / ITEMFONTBOLD TRUE per usare un carattere in grassetto

  • LAYERFONTSIZE / ITEMFONTSIZE Dimensione carattere in punti

  • LAYERFONTITALIC / ITEMFONTITALIC TRUE per usare il carattere corsivo

  • LAYERFONTCOLOR / ITEMFONTCOLOR Codice colore esadecimale (ad esempio #FF0000 per il rosso)

  • LAYERTITLE FALSE per ottenere solo la grafica della legenda senza il titolo del layer.

  • RULELABEL:

    • FALSE grafica della legenda senza etichette degli elementi

    • AUTO nasconde l’etichetta dell’elemento per i layer con rappresentazione Simbolo singolo`

Legenda basata sul contenuto. Questi parametri permettono al client di richiedere una legenda che mostri solo i simboli degli elementi che rientrano nell’area richiesta:

  • BBOX l’area geografica per la quale la legenda dovrebbe essere costruita

  • CRS / SRS il sistema di riferimento delle coordinate adottato per definire le coordinate della BBOX

  • SRCWIDTH / SRCHEIGHT se impostati dovrebbero corrispondere ai parametri WIDTH e HEIGHT della richiesta GetMap, per permettere a QGIS Server di scalare i simboli secondo le dimensioni dell’immagine della mappa.

Gli elementi delle legende basate sul contenuto sono basate sull’implementazione di UMN MapServer:

  • SHOWFEATURECOUNT se impostato a TRUE aggiunge nella legenda il conteggio degli elementi come nell’immagine seguente:

    ../../_images/getfeaturecount_legend.png
  • RULE impostarlo su un dato nome di regola per ottenere solo il simbolo della regola nominata

  • WIDTH/HEIGHT la dimensione dell’immagine della legenda generata se il parametro RULE è impostato

3.1.5. GetProjectSettings

Questo tipo di richiesta funziona in modo simile a GetCapabilities, ma è più specifico per QGIS Server e permette ad un client di leggere informazioni aggiuntive che non sono disponibili nell’output di GetCapabilities:

  • visibilità iniziale dei layer

  • informazione sugli attributi vettoriali e i loro tipi di edit

  • informazione sull’ordine dei layer e l’ordine di rappresentazione

  • elenco dei layer pubblicati in WFS

  • mostra se un gruppo nell’albero dei layer è mutually exclusive

3.2. Web Feature Service (WFS)

Gli standard 1.0.0 e 1.1.0 WFS implementati in QGIS Server forniscono un’interfaccia HTTP per interrogare gli elementi geografici da un progetto QGIS. Una tipica richiesta WFS definisce il progetto QGIS da usare e il layer da interrogare.

Documento delle specifiche secondo il numero di versione del servizio:

Richieste standard fornite da QGIS Server:

Request

Descrizione

GetCapabilities

Restituisce metadati XML con informazioni sul server

GetFeature

Restituisce una selezione di elementi

DescribeFeatureType

Restituisce una descrizione dei tipi di elementi e delle proprietà

Transazione

Permette l’inserimento, l’aggiornamento o la cancellazione di elementi

3.2.1. GetFeature

Parametri standard per la richiesta GetFeature secondo le specifiche OGC WFS 1.0.0 e 1.1.0:

Parametro

Richiesto

Descrizione

SERVICE

Nome del servizio

VERSION

No

Versione del servizio

REQUEST

Nome della richiesta

TYPENAME

No

Nome dei layer

OUTPUTFORMAT

No

Formato risultato

RESULTTYPE

No

Tipo di risultato

PROPERTYNAME

No

Nome delle proprietà da restituire

MAXFEATURES

No

Numero massimo di elementi da restituire

SRSNAME

No

Sistema di riferimento delle Coordinate

FEATUREID

No

Filtrare gli elementi per id

FILTER

No

Codifica filtro OGC

BBOX

No

Estensione mappa

SORTBY

No

Ordinare i risultati

Oltre a quelli standard, QGIS Server supporta i seguenti parametri extra:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

STARTINDEX

No

Paginazione

GEOMETRYNAME

No

Tipo di geometria da restituire

EXP_FILTER

No

Espressione di filtraggio

SERVICE

Questo parametro deve essere WFS nel caso della richiesta GetFeature.

Per esempio:

http://localhost/qgisserver?
SERVICE=WFS
&...

VERSION

Questo parametro permette di specificare la versione del servizio da utilizzare. I valori disponibili per il parametro VERSION sono:

  • 1.0.0

  • 1.1.0

Se nessuna versione è indicata nella richiesta, allora 1.1.0 è usato per default.

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&...

REQUEST

Questo parametro è GetFeature nel caso della richiesta GetFeature.

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&...

RESULTTYPE

Questo parametro può essere usato per specificare il tipo di risultato da restituire. I valori disponibili sono:

  • results: il risultato predefinito

  • hits: restituisce solo un conteggio degli elementi

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&RESULTTYPE=hits
&...

GEOMETRYNAME

Questo parametro può essere usato per specificare il tipo di geometria da restituire per gli elementi. I valori disponibili sono:

  • extent

  • centroid

  • none

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&GEOMETRYNAME=centroid
&...

STARTINDEX

Questo parametro è standard in WFS 2.0, ma è un’estensione per WFS 1.0.0. Attualmente, può essere usato per ignorare alcuni elementi nell’insieme dei risultati e in combinazione con MAXFEATURES, fornisce la possibilità di sfogliare i risultati.

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&STARTINDEX=2
&...

3.3. Web Map Tile Service (WMTS)

Lo standard 1.0.0 WMTS implementato in QGIS Server fornisce un’interfaccia HTTP per richiedere immagini di mappe tassellate generate da un progetto QGIS. Una tipica richiesta WMTS definisce il progetto QGIS da usare, alcuni parametri WMS come i layer da rappresentare, così come i parametri dei tasselli.

Documento di specifiche del servizio:

Richieste standard fornite da QGIS Server:

Request

Descrizione

GetCapabilities

Restituisce metadati XML con informazioni sul server

GetTile

Restituisce un tassello

GetFeatureInfo

Recupera i dati (geometria e valori) per una posizione di pixel

3.3.1. GetCapabilities

Parametri standard per la richiesta GetCapabilities secondo le specifiche OGC WMTS 1.0.0:

Parametro

Richiesto

Descrizione

SERVICE

Nome del servizio (WMTS)

REQUEST

Nome della richiesta (GetCapabilities)

Oltre a quelli standard, QGIS Server supporta i seguenti parametri extra:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetCapabilities
&MAP=/home/qgis/projects/world.qgs

SERVICE

Questo parametro deve essere WMTS nel caso della richiesta GetCapabilities.

REQUEST

Questo parametro è GetCapabilities nel caso della richiesta GetCapabilities.

MAP

Questo parametro permette di definire il file di progetto QGIS da utilizzare.

3.3.2. GetTile

Parametri standard per la richiesta GetTile secondo le specifiche OGC WMTS 1.0.0:

Parametro

Richiesto

Descrizione

SERVICE

Nome del servizio (WMTS)

REQUEST

Nome della richiesta (GetTile)

LAYER

Identificatore layer

FORMAT

Formato in uscita del tassello

TILEMATRIXSET

Nome della piramide

TILEMATRIX

Meshing

TILEROW

Coordinata riga nella mesh

TILECOL

Coordinata colonna nella mesh

Oltre a quelli standard, QGIS Server supporta i seguenti parametri extra:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetTile
&MAP=/home/qgis/projects/world.qgs
&LAYER=mylayer
&FORMAT=image/png
&TILEMATRIXSET=EPSG:4326
&TILEROW=0
&TILECOL=0

SERVICE

Questo parametro deve essere WMTS nel caso della richiesta GetTile.

REQUEST

Questo parametro è GetTile nel caso della richiesta GetTile.

LAYER

Questo parametro permette di specificare il layer da visualizzare sul tassello

Inoltre, QGIS Server ha introdotto alcune opzioni per selezionare un layer:

  • un nome breve

  • il layer id

Il nome breve di un layer può essere configurato attraverso :menuselection: Proprietà –> Metadati nel menu del layer. Se il nome breve è definito, allora viene usato come predefinito al posto del nome del layer:

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetTile
&LAYER=mynickname
&...

Inoltre, c’è un’opzione del progetto che permette di selezionare i layer in base al loro id nel menu OWS Server ► WMS capabilities del servizio della finestra di dialogo Progetto ► Proprietà…. Per attivare questa opzione, la casella di controllo Usa gli id del livello come nomi deve essere selezionata.

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetTile
&LAYER=mylayerid1
&...

FORMAT

Questo parametro può essere usato per specificare il formato dell’immagine del tassello. I valori disponibili sono:

  • jpg

  • jpeg

  • image/jpeg

  • image/png

Se il parametro FORMAT è diverso da uno di questi valori, allora viene usato il formato predefinito PNG.

TILEMATRIXSET

Questo parametro definisce il SR da utilizzare nel calcolo della piramide sottostante. Formato: EPSG:XXXX.

TILEMATRIX

Questo parametro permette di definire la matrice da utilizzare per il tassello in uscita.

TILEROW

Questo parametro permette di selezionare la riga del tassello da ottenere all’interno della matrice.

TILECOL

Questo parametro permette di selezionare la colonna del tassello da ottenere all’interno della matrice.

MAP

Questo parametro permette di definire il file di progetto QGIS da utilizzare.

Come menzionato in GetMap parameters table, MAP è obbligatorio perché una richiesta ha bisogno di un progetto QGIS per funzionare effettivamente. Tuttavia, la variabile d’ambiente QGIS_PROJECT_FILE può essere usata per definire un progetto QGIS predefinito. In questo caso specifico, MAP non è più un parametro richiesto. Per ulteriori informazioni puoi fare riferimento a Configurazione avanzata.

3.3.3. GetFeatureInfo

Parametri standard per la richiesta GetFeatureInfo secondo la specifica OGC WMTS 1.0.0:

Parametro

Richiesto

Descrizione

SERVICE

Nome del servizio (WMTS)

REQUEST

Nome della richiesta (GetFeatureInfo)

LAYER

Identificatore layer

INFOFORMAT

No

Formato in uscita

I

No

Coordinata X di un pixel

J

No

Coordinata Y di un pixel

TILEMATRIXSET

See GetTile

TILEMATRIX

See GetTile

TILEROW

See GetTile

TILECOL

See GetTile

Oltre a quelli standard, QGIS Server supporta i seguenti parametri extra:

Parametro

Richiesto

Descrizione

MAP

Specifica del file di progetto QGIS

Esempio di URL:

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetFeatureInfo
&MAP=/home/qgis/projects/world.qgs
&LAYER=mylayer
&INFOFORMAT=image/html
&I=10
&J=5

SERVICE

Questo parametro deve essere WMTS nel caso della richiesta GetFeatureInfo.

REQUEST

Questo parametro è GetFeatureInfo nel caso della richiesta GetFeatureInfo.

MAP

Questo parametro permette di definire il file di progetto QGIS da utilizzare.

Come menzionato in GetMap parameters table, MAP è obbligatorio perché una richiesta ha bisogno di un progetto QGIS per funzionare effettivamente. Tuttavia, la variabile d’ambiente QGIS_PROJECT_FILE può essere usata per definire un progetto QGIS predefinito. In questo caso specifico, MAP non è più un parametro richiesto. Per ulteriori informazioni puoi fare riferimento a Configurazione avanzata.

LAYER

Questo parametro permette di specificare il layer da visualizzare sul tassello

Inoltre, QGIS Server ha introdotto alcune opzioni per selezionare un layer:

  • un nome breve

  • il layer id

Il nome breve di un layer può essere configurato attraverso :menuselection: Proprietà –> Metadati nel menu del layer. Se il nome breve è definito, allora viene usato come predefinito al posto del nome del layer:

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetFeatureInfo
&LAYER=mynickname
&...

Inoltre, c’è un’opzione del progetto che permette di selezionare i layer in base al loro id nel menu OWS Server ► WMS capabilities del servizio della finestra di dialogo Progetto ► Proprietà…. Per attivare questa opzione, la casella di controllo Usa gli id del livello come nomi deve essere selezionata.

http://localhost/qgisserver?
SERVICE=WMTS
&REQUEST=GetFeatureInfo
&LAYER=mylayerid1
&...

INFOFORMAT

Questo parametro permette di definire il formato in uscita del risultato. I valori disponibili sono:

  • text/xml

  • text/html

  • text/plain

  • application/vnd.ogc.gml

Il valore predefinito è text/plain.

I

Questo parametro permette di definire la coordinata X del pixel per il quale vogliamo recuperare l’informazione sottostante.

J

Questo parametro permette di definire la coordinata Y del pixel per il quale vogliamo recuperare l’informazione sottostante.

3.4. WFS3 (funzioni API OGC)

WFS3 è la prima implementazione della nuova generazione di protocolli OGC. È descritto dal documento OGC API - Features - Part 1: Core

Di seguito un rapido riassunto informale delle differenze più importanti tra il ben noto protocollo WFS e WFS3:

  • WFS3 è basato su un’API REST

  • WFS3 API deve seguire le specifiche OPENAPI

  • WFS3 supporta più formati di output ma non ne impone nessuno (solo GeoJSON e HTML sono attualmente disponibili in QGIS WFS3) e usa la negoziazione dei contenuti per determinare quale formato deve essere servito al client

  • JSON e HTML sono cittadini di prima classe in WFS3

  • WFS3 è autodocumentato (attraverso l’endpoint /api)

  • WFS3 è completamente navigabile (tramite link) e consultabile.

Importante

Mentre l’implementazione WFS3 in QGIS può fare uso del parametro MAP per specificare il file di progetto, la specifica OPENAPI non consente parametri di query aggiuntivi. Per questo motivo si raccomanda vivamente che MAP non sia esposto nell’URL e che il file di progetto sia specificato nell’ambiente con altri mezzi (ad esempio impostando QGIS_PROJECT_FILE nell’ambiente tramite una regola di riscrittura del server web).

Nota

L’endpoint API fornisce una documentazione completa di tutti i parametri supportati e dei formati in uscita del tuo servizio. I paragrafi seguenti descriveranno solo i più importanti.

3.4.1. Rappresentazione risorse

L’implementazione di QGIS Server WFS3 attualmente supporta i seguenti formati di rappresentazione delle risorse (output):

  • HTML

  • JSON

Il formato che viene effettivamente reso dipenderà dalla negoziazione del contenuto, ma un formato specifico può essere richiesto esplicitamente aggiungendo uno specifico formato agli endpoint.

Le estensioni di specifica del formato supportate sono:

  • .json

  • .html

Ulteriori alias di specifica di formato possono essere definiti da endpoint specifici:

  • .openapi: alias per .json supportato dall’endpoint API

  • .geojson: alias per .json supportato dagli endpoint Features e Feature

3.4.2. Endpoint

L’API fornisce una lista di endpoint che i client possono richiamare. Il sistema è progettato in modo tale che ogni risposta fornisce un insieme di link per navigare attraverso tutte le risorse fornite.

Punti endpoint forniti dall’implementazione di QGIS sono:

Nome

Percorso

Descrizione

Pagina di destinazione

/

Informazioni generali sul servizio e fornisce collegamenti a tutti gli endpoint disponibili

Conformità

/conformance

Informazioni sulla conformità del servizio agli standard

API

/api

Descrizione completa degli endpoint forniti dal servizio e della struttura dei documenti restituiti

Collezioni

/collections

Elenco di tutte le collezioni (cioè » layer vettoriali») fornite dal servizio

Collezione

/collections/{collectionId}

Informazioni su una collezione (nome, metadati, estensione ecc.)

Caratteristiche

/collections/{collectionId}/items

Elenco degli elementi forniti dalla collezione

Elemento

/collections/{collectionId}/items/{featureId}

Informazioni su un singolo elemento

Pagina di destinazione

L’endpoint principale è la Landing Page. Da questa pagina è possibile navigare verso tutti gli endpoint di servizio disponibili. La Landing Page deve fornire collegamenti a

  • la definizione dell’API (percorso /api link delle relazioni service-desc e service-doc),

  • la dichiarazione di Conformità (percorso /conformance, relazione di collegamento conformance), e

  • le Collezioni (percorso /collections, relazione di collegamento data).

../../_images/server_wfs3_landing_page.png

Fig. 3.2 Landing page del server WFS3

Definizione API

La Definizione dell’API è una descrizione conforme a OPENAPI dell’API fornita dal servizio. Nella sua rappresentazione HTML è una pagina navigabile dove tutti gli endpoint e i loro formati di risposta sono accuratamente elencati e documentati. Il percorso di questo endpoint è /api.

La definizione API fornisce una documentazione completa e autorevole del servizio, compresi tutti i parametri supportati e i formati restituiti.

Nota

Questo endpoint è analogo a GetCapabilities di WFS

Lista Collezioni

L’endpoint collezioni fornisce una lista di tutte le collezioni disponibili nel servizio. Poiché il servizio «serve» un singolo progetto QGIS, le collezioni sono i layer vettoriali del progetto corrente (se sono stati pubblicati come WFS nelle proprietà del progetto). Il percorso di questo endpoint è /collections/.

../../_images/server_wfs3_collections.png

Fig. 3.3 Pagina dell’elenco delle collezioni del server WFS3

Dettaglio collezione

Mentre l’endpoint delle collezioni non fornisce informazioni dettagliate su ogni collezione disponibile, queste informazioni sono disponibili negli endpoint /collections/{collectionId}. Le informazioni tipiche includono l’estensione, una descrizione, i SR e altri metadati.

La rappresentazione HTML fornisce anche una mappa navigabile con gli elementi disponibili.

../../_images/server_wfs3_collection.png

Fig. 3.4 Pagina di dettaglio della collezione WFS3 del server

Lista elementi

Questo endpoint fornisce un elenco di tutti gli elementi in una collezione conoscendo l’ID della collezione. Il percorso di questo endpoint è /collections/{collectionId}/items.

La rappresentazione HTML fornisce anche una mappa navigabile con gli elementi disponibili.

Nota

Questo endpoint è analogo a GetFeature in WFS 1 e WFS 2.

../../_images/server_wfs3_features.png

Fig. 3.5 Pagina dell’elenco degli elementi del server WFS3

Dettaglio elemento

Questo endpoint fornisce tutte le informazioni disponibili su un singolo elemento, compresi gli attributi dell’elemento e la sua geometria. Il percorso di questo endpoint è /collections/{collectionId}/items/{itemId}.

La rappresentazione HTML fornisce anche una mappa navigabile con la geometria degli elementi.

../../_images/server_wfs3_feature.png

Fig. 3.6 Pagina di dettaglio elementi server WFS3

3.4.3. Paginazione

La paginazione di una lunga lista di elementi è implementata nell’API OGC attraverso i link next` e prev, il server QGIS costruisce questi link aggiungendo limit e offset come parametri della query string.

Esempio di URL:

http://localhost/qgisserver/wfs3/collection_one/items.json?offset=10&limit=10

Nota

Il valore massimo accettabile per limit può essere configurato con l’impostazione di configurazione del server QGIS_SERVER_API_WFS3_MAX_LIMIT (vedi: qgis-server-envvar`).

3.4.4. Filtro delle geometrie

Gli elementi disponibili in una collezione possono essere filtrati/ricercati specificando uno o più filtri.

Filtro data e ora

Le collezioni con attributi data e/o datetime possono essere filtrate specificando un argomento datetime nella stringa della query. Per impostazione predefinita, il primo campo data/ora è usato per il filtraggio. Questo comportamento può essere configurato impostando una dimensione «Date» o «Time» nella sezione QGIS Server ► Dimension della finestra di dialogo delle proprietà del layer.

La sintassi del filtraggio di data e ora è completamente descritta nella Definizione API e supporta anche intervalli (i valori iniziali e finali sono inclusi) oltre a valori singoli.

Esempi URL:

Restituisce solo gli elementi con una dimensione di data corrispondente a 2019-01-01.

http://localhost/qgisserver/wfs3/collection_one/items.json?datetime=2019-01-01

Restituisce solo gli elementi con dimensione datetime che corrisponde a 2019-01-01T01:01:01.

http://localhost/qgisserver/wfs3/collection_one/items.json?datetime=2019-01-01T01:01:01

Restituisce solo gli elementi con dimensione datetime nell’intervallo 2019-01-01T01:01:01 - 2019-01-01T12:00:00.

http://localhost/qgisserver/wfs3/collection_one/items.json?datetime=2019-01-01T01:01:01/2019-01-01T12:00:00

Filtro rettangolo di delimitazione

Un filtro spaziale bounding box può essere specificato con il parametro bbox:

L’ordine degli elementi separati da virgola è:

  • Angolo inferiore sinistro, longitudine WGS 84

  • Angolo inferiore sinistro, latitudine WGS 84

  • Angolo superiore destro, longitudine WGS 84

  • Angolo superiore destro, latitudine WGS 84

Nota

Le specifiche OGC permettono anche uno specifico bbox a 6 elementi dove il terzo e il sesto elemento sono i componenti Z, questo non è ancora supportato dal server QGIS.

Esempio di URL:

http://localhost/qgisserver/wfs3/collection_one/items.json?bbox=-180,-90,180,90

Se il SR del riquadro di delimitazione non è WGS 84, un CRS diverso può essere specificato usando il parametro opzionale bbox-crs. L’identificatore del formato SR deve essere nel formato OGC URI:

Esempio di URL:

http://localhost/qgisserver/wfs3/collection_one/items.json?bbox=913191,5606014,913234,5606029&bbox-crs=http://www.opengis.net/def/crs/EPSG/9.6.2/3857

Filtro Attributo

I filtri degli attributi possono essere combinati con il filtro bounding box e sono nella forma generale: <attribute name>=<attribute value>. Filtri multipli possono essere combinati usando l’operatore AND`.

Esempio di URL:

filtra tutti gli elementi in cui l’attributo name è uguale a «my value»

http://localhost/qgisserver/wfs3/collection_one/items.json?attribute_one=my%20value

Le corrispondenze parziali sono supportate anche usando un operatore * («star»):

Esempio di URL:

filtra tutti gli elementi in cui l’attributo name finisce con «value»

http://localhost/qgisserver/wfs3/collection_one/items.json?attribute_one=*value

3.4.5. Ordinamento elemento

È possibile ordinare l’insieme dei risultati per valore di campo usando il parametro della query sortby.

I risultati sono ordinati in ordine crescente per impostazione predefinita. Per ordinare i risultati in ordine decrescente, si può impostare un flag booleano (sortdesc):

http://localhost/qgisserver/wfs3/collection_one/items.json?sortby=name&sortdesc=1

3.4.6. Selezione attributo

Gli attributi elemenelementi restituiti da una chiamata Lista elementi possono essere limitati aggiungendo una lista separata da virgole di nomi di attributi nell’argomento opzionale properties della query string.

Esempio di URL:

restituisce solo l’attributo name.

http://localhost/qgisserver/wfs3/collection_one/items.json?properties=name

3.4.7. Personalizzare le pagine HTML

La rappresentazione HTML usa un insieme di modelli HTML per generare la risposta. Il template viene analizzato da un motore di template chiamato inja. I template possono essere personalizzati sovrascrivendoli (vedi: Sovrascritture modello). Il template ha accesso agli stessi dati che sono disponibili alla rappresentazione JSON e alcune funzioni aggiuntive sono disponibili al template:

Funzioni personalizzate modello

  • path_append( path ): aggiunge un percorso di cartella all’url corrente

  • path_chomp( n ): rimuove il numero specificato «n» di componenti di cartella dal percorso url corrente

  • json_dump( ): stampa i dati JSON passati al modello

  • static( path ): restituisce l’URL completo del percorso statico specificato. Per esempio: «static( «/style/black.css» )» con un percorso radice «http://localhost/qgisserver/wfs3» restituirà «http://localhost/qgisserver/wfs3/static/style/black.css».

  • links_filter( links, key, value ): Restituisce i link filtrati da un elenco di link

  • content_type_name( content_type ): Restituisce un nome breve di un tipo di contenuto, per esempio «text/html» restituirà «HTML»

Sovrascritture modello

I modelli e le risorse statiche sono memorizzati nelle sottocartelle della cartella delle risorse API di default del server QGIS (/usr/share/qgis/resources/server/api/ su un sistema Linux), la cartella di base può essere personalizzata cambiando la variabile di ambiente QGIS_SERVER_API_RESOURCES_DIRECTORY.

Una tipica installazione di Linux avrà il seguente albero di cartelle:

/usr/share/qgis/resources/server/api/
└── ogc
    ├── schema.json
    ├── static
    │   ├── jsonFormatter.min.css
    │   ├── jsonFormatter.min.js
    │   └── style.css
    └── templates
        └── wfs3
            ├── describeCollection.html
            ├── describeCollections.html
            ├── footer.html
            ├── getApiDescription.html
            ├── getFeature.html
            ├── getFeatures.html
            ├── getLandingPage.html
            ├── getRequirementClasses.html
            ├── header.html
            ├── leaflet_map.html
            └── links.html

Per sovrascrivere i modelli puoi copiare l’intero albero in un’altra posizione e assegnare QGIS_SERVER_API_RESOURCES_DIRECTORY alla nuova posizione.

3.5. Parametri extra supportati da tutti i tipi di richiesta

I seguenti parametri extra sono supportati da tutti i protocolli.

  • FILE_NAME: se impostato, la risposta del server sarà inviata al client come un file allegato con il nome del file specificato.

Nota

Non disponibile per WFS3.

  • MAP: Analogamente a MapServer, il parametro MAP può essere usato per specificare il percorso del file del progetto QGIS. Puoi specificare un percorso assoluto o un percorso relativo per la posizione dell’eseguibile del server (qgis_mapserv.fcgi). Se non specificato, QGIS Server cerca i file .qgs nella cartella dove si trova l’eseguibile del server.

    Esempio:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&MAP=/home/qgis/projects/world.qgs&...
    

Nota

Puoi definire un QGIS_PROJECT_FILE come variabile d’ambiente per dire all’eseguibile del server dove trovare il file di progetto QGIS. Questa variabile sarà la posizione in cui QGIS cercherà il file di progetto. Se non è definita, userà il parametro MAP nella richiesta e infine cercherà la cartella eseguibile del server.

3.6. REDLINING

Questa funzione è disponibile e può essere usata con le richieste GetMap e GetPrint.

La funzione redlining può essere usata per passare geometrie ed etichette nella richiesta che vengono sovrapposte dal server sull’immagine standard restituita (mappa). Questo permette all’utente di mettere l’accento o magari aggiungere dei commenti (etichette) ad alcune aree, luoghi ecc. che non sono nella mappa standard.

La richiesta GetMap è nel formato:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi?map=/world.qgs&SERVICE=WMS&VERSION=1.3.0&
REQUEST=GetMap
...
&HIGHLIGHT_GEOM=POLYGON((590000 5647000, 590000 6110620, 2500000 6110620, 2500000 5647000, 590000 5647000))
&HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%23ea1173</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&HIGHLIGHT_LABELSTRING=Write label here
&HIGHLIGHT_LABELSIZE=16
&HIGHLIGHT_LABELCOLOR=%23000000
&HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&HIGHLIGHT_LABELBUFFERSIZE=1.5

L’equivalente di GetPrint è nel formato (si noti che il parametro mappaX: è aggiunto per dire quale mappa ha il redlining):

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi?map=/world.qgs&SERVICE=WMS&VERSION=1.3.0&
REQUEST=GetPrint
...
&map0:HIGHLIGHT_GEOM=POLYGON((590000 5647000, 590000 6110620, 2500000 6110620, 2500000 5647000, 590000 5647000))
&map0:HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%23ea1173</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&map0:HIGHLIGHT_LABELSTRING=Write label here
&map0:HIGHLIGHT_LABELSIZE=16
&map0:HIGHLIGHT_LABELCOLOR=%23000000
&map0:HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&map0:HIGHLIGHT_LABELBUFFERSIZE=1.5

Ecco l’immagine prodotta dalla richiesta di cui sopra in cui un poligono e un’etichetta sono disegnati sopra la mappa normale:

../../_images/server_redlining.png

Fig. 3.7 Risposta del server a una richiesta GetMap con parametri di redlining

Puoi vedere che ci sono diversi parametri in questa richiesta:

  • HIGHLIGHT_GEOM: Puoi aggiungere POINT, MULTILINESTRING, POLYGON ecc. Supporta le geometrie multiparte. Ecco un esempio: HIGHLIGHT_GEOM=MULTILINESTRING((0 0 0, 0 1, 1 1)). Le coordinate dovrebbero essere nel SR della richiesta GetMap/GetPrint.

  • HIGHLIGHT_SYMBOL: Questo controlla come la geometria è evidenziata e si può cambiare la larghezza del tratto, il colore e l’opacità.

  • HIGHLIGHT_LABELSTRING: Puoi passare il tuo testo di etichettatura a questo parametro.

  • HIGHLIGHT_LABELSIZE: Questo parametro controlla la dimensione dell’etichetta.

  • HIGHLIGHT_LABELFONT: Questo parametro controlla il carattere dell’etichetta (ad esempio Arial)

  • HIGHLIGHT_LABELCOLOR: Questo parametro controlla il colore dell’etichetta.

  • HIGHLIGHT_LABELBUFFERCOLOR: Questo parametro controlla il colore del buffer dell” etichetta.

  • HIGHLIGHT_LABELBUFFERSIZE: Questo parametro controlla la dimensione del buffer dell’etichetta.

3.7. Layer WMS esterni

QGIS Server permette di includere layer da server WMS esterni nelle richieste WMS GetMap e WMS GetPrint. Questo è particolarmente utile se un client web usa un livello di sfondo esterno nella mappa web. Per ragioni di prestazioni, tali livelli dovrebbero essere richiesti direttamente dal client web (non in cascata attraverso il server QGIS). Per la stampa, invece, questi livelli dovrebbero essere collegati in cascata attraverso il server QGIS per apparire nella mappa stampata.

I layer esterni possono essere aggiunti al parametro LAYERS come EXTERNAL_WMS:1. I parametri per i layer WMS esterni (ad esempio url, format, dpiMode, crs, layers, styles) possono essere dati successivamente come parametri di servizio <layername>:<parameter>. In una richiesta GetMap, questo potrebbe apparire così:

http://localhost/qgisserver?
SERVICE=WMS&REQUEST=GetMap
...
&LAYERS=EXTERNAL_WMS:basemap,layer1,layer2
&STYLES=,,
&basemap:url=http://externalserver.com/wms.fcgi
&basemap:format=image/jpeg
&basemap:dpiMode=7
&basemap:crs=EPSG:2056
&basemap:layers=orthofoto
&basemap:styles=default

Analogamente, i layer esterni possono essere usati nelle richieste GetPrint:

http://localhost/qgisserver?
SERVICE=WMS
...
&REQUEST=GetPrint&TEMPLATE=A4
&map0:layers=EXTERNAL_WMS:basemap,layer1,layer2
&map0:EXTENT=<minx,miny,maxx,maxy>
&basemap:url=http://externalserver.com/wms.fcgi
&basemap:format=image/jpeg
&basemap:dpiMode=7
&basemap:crs=EPSG:2056
&basemap:layers=orthofoto
&basemap:styles=default

3.8. QGIS Server catalog

Il QGIS Server Catalog è un semplice catalogo che mostra l’elenco dei progetti QGIS forniti dal QGIS Server. Fornisce un sito web user-friendly completamente navigabile con capacità di mappatura di base per sfogliare rapidamente i dataset presenti in quei progetti QGIS.

Il QGIS Server catalog usa le variabili QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES e QGIS_SERVER_LANDING_PAGE_PROJECTS_PG_CONNECTIONS (vedi Variabili d’ambiente)

../../_images/server_project_list.png

Fig. 3.8 Pagina dell’elenco dei progetti del Server Catalog

Puoi consultare i metadati associati a un progetto e i servizi che fornisce. Vengono forniti anche i link a questi servizi.

../../_images/server_project_metadata_services.png

Fig. 3.9 Server Catalog, metadati associati a un progetto e servizi (link a) che fornisce.

Sfogliando un progetto, viene elencato il dataset che serve.

../../_images/server_browse_dataset.png

Fig. 3.10 Sfogliare un dataset fornito da un progetto nel catalogo del server

Usa il clic destro su un layer per visualizzare la tabella degli attributi ad esso associati.

../../_images/server_attribute_table.png

Fig. 3.11 Tabella degli attributi associati a un layer

È possibile consultare le informazioni degli elementi nella mappa come mostrato nell’immagine qui sotto:

../../_images/server_info_results.png

Fig. 3.12 Consultazione delle informazioni di un elemento della mappa