====== GetFeatureinfo: query su WMS ======
Alcuni server WMS supportano le query tramite la richieste di tipo **GetFeatureinfo**.
La query viene eseguita rispetto al punto (X, Y), che sono le coordinate in pixel della mappa nelle dimensioni e bounding box specificate. La query viene fatta nel dintorno del punto, con la tolleranza indicata nel mapfile.
Il risultato può essere composto in formato testo, http oppure GML. Noi proveremo con quest'ultimo.
Con MapServer è necessario configurare alcuni parametri nel **mapfile**. Nel nostro caso aggiungiamo la complicazione dovuta al fatto che il layer è in un sistema di riferimento (**EPSG:3003**) diverso da quello che useremo nella query (**EPSG:4326**).
LAYER
NAME "entita_lineari"
DATA "275040el"
STATUS ON
TYPE LINE
TEMPLATE "void"
TOLERANCEUNITS pixels
TOLERANCE 10
DUMP TRUE
PROJECTION
"+init=epsg:3003 +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"
END
METADATA
"wms_title" "Entità lineari"
"wms_srs" "EPSG:4326"
"gml_include_items" "all"
#"wms_include_items" "all"
END
END
Se il client effettua richieste in formato text/plain (non GML), pare che per ottenere risposta sia necessario il parametro ''wms_include_items''.
La richiesta WMS assume la seguente forma:
**''%%http://localhost/cgi-bin/mapserv?map=/var/www/wms_query.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureinfo&SRS=EPSG:4326&BBOX=11.16398206,43.74906364,11.33432601,43.79898334&LAYERS=entita_lineari&QUERY_LAYERS=entita_lineari&FEATURE_COUNT=100&X=150&Y=100&WIDTH=1024&HEIGHT=480&INFO_FORMAT=gml%%''**
Questi i parametri utilizzati:
SERVICE=WMS
VERSION=1.1.1
REQUEST=GetFeatureinfo
SRS=EPSG:4326
BBOX=11.16398206,43.74906364,11.33432601,43.79898334
LAYERS=entita_lineari
QUERY_LAYERS=entita_lineari
FEATURE_COUNT=100
X=150
Y=100
WIDTH=1024
HEIGHT=480
INFO_FORMAT=gml
Attenzione: il numero di feature (oggetti) ritornati dipende dalla dimensione del dintorno del punto (la **''TOLERANCE''** del mapfile) e dal parametro **''FEATURE_COUNT''** (numero massimo di feature ritornati) della query.
Il risultato è qualcosa del tipo:
11.173595,43.788665 11.197719,43.790197
275030
0301
150872
11.180460,43.788754 11.189372,43.789513
275030
0102
151559
===== Query su raster =====
In modo analogo si possono effettuare query su layer raster, questo un esempio di risultato:
1681609.346909,4707664.375214 1681609.346909,4707664.375214
1681609.3
4707664.4
0
0
255
255
255
Questo il risultato di una query su un layer **TIFF** di tipo **Int16**, il colore (red, green, blue) deriva da una classificazione:
-1.000000,-1.000000 -1.000000,-1.000000
0.2503605
44.916937
902
902
5
247
6
123