-----------------------------------

Acquista i software ArcGIS tramite Studio A&T srl, rivenditore autorizzato dei prodotti Esri.

I migliori software GIS, il miglior supporto tecnico!

I migliori software GIS, il miglior supporto tecnico!
Azienda operante nel settore GIS dal 2001, specializzata nell’utilizzo della tecnologia ArcGIS e aderente al programma Esri Partner Network (EPN) di Esri Inc.

-----------------------------------



giovedì 21 gennaio 2010

Servizi WFS parte seconda: quando il gioco si fa duro...

NOTE E REVISIONI
- 26/11/2012: ho effettuato una prova di connessione con la versione 10.1 di ArcGIS (nel caso specifico con il servizio "Infrastrutture stradali"), verificando, con soddisfazione, che funziona tutto a meraviglia!
E' stato risolto anche l'inconveniente legato alla sostituzione delle virgole nella stringa di richiesta: ora, infatti, il BBOX può essere dichiarato nei parametri che definiscono il "Search Envelope" (come è giusto che sia), evitando quindi di specificare le coordinate nella richiesta stessa.

- 01/04/2011: inserito un passaggio in cui ho simulato il download dei dati utilizzando la versione 10 di ArcView.

Cari utenti ArcGIS,
BUON 2010!!!

Apro "ufficialmente" il nuovo anno con questo post che, a tutti gli effetti, potete considerare come la seconda parte dell'articolo pubblicato il 30 novembre scorso.
In quell'occasione vi ho parlato dei servizi WFS erogati dal Portale Cartografico Nazionale (PCN), avvisandovi però che i tematismi di maggior dettaglio avrebbero richiesto parecchio tempo per completare il download.

In questa sede cercherò di illustrarvi una possibile soluzione, rispondendo così a quei lettori che hanno incontrato difficoltà nel caricamento degli strati informativi più "pesanti".
La logica è abbastanza semplice: occorrerà impostare la connessione WFS limitandone l'estensione territoriale.

Che poi - pensandoci bene - si tratta proprio dell'esigenza più comune: molto spesso non serve scaricare "tutto" un tematismo anche perchè, nel caso del PCN, i servizi WFS comprendono l'intero territorio nazionale o, nella migliore delle ipotesi, uno dei due fusi.
Nella maggior parte dei casi è invece più che sufficiente una "porzione" limitata, ad esempio un comune, una provincia o una regione.

Un "filtro spaziale" di questo tipo si basa sulla richiesta  BBOX (Bounding Box), appositamente definita nelle specifiche WFS, WCS e WMS (per i dettagli fate riferimento alla documentazione pubblicata da Open Geospatial Consortium ).

La possibilità di impostare un filtro su un'area di interesse è evidenziata nelle Capabilities di tutti i servizi erogati dal PCN.
Provate, ad esempio, a verificare le Capabilities del tematismo "rete_stradale": nella parte finale del file XML, all'interno della sezione ogc:Filter_Capabilities, troverete indicata anche la richiesta BBOX.

Già che ci siete verificate il sistema di riferimento (SRS) adottato per questo strato informativo ovvero EPSG:4326.
Chi non avesse confidenza con questi codici, può visitare la pagina web EPSG Geodetic Parameter Registry: scegliendo la scheda retrieve by code e inserendo "4326", scoprirete che a questo codice è associato il sistema di coordinate geografiche nel datum WGS84.

Sempre consultando le Capabilities, nella sezione FeatureTypeList, noterete che questo servizio WFS - impostato su specifiche in versione 1.0.0 - è composto in realtà da 4 diversi livelli:
  • strade_locali
  • strade_provinciali
  • strade_statali
  • autostrade
Passiamo ora alla fase "operativa" ribadendo però, giusto per evitare incomprensioni, che per connettersi ai servizi WFS NON è richiesto l'acquisto dell'estensione Data Interoperability, è però necessario che tale estensione sia installata (considerazione valida per ArcView, ArcEditor e ArcInfo).

Ammettiamo quindi di effettuare il download limitando l'operazione alla rete stradale che interessa il comune di Monza (che caso!).
Come prima operazione dobbiamo definire l'area di interesse e per farlo esistono diversi metodi.
Visto che siamo in tema di PCN, suggerirei di rispolverare il mio articolo del 6 febbraio 2009 : caricare in ArcMap i dati del portale cartografico nazionale.

Fra tutte le mappe disponibili, ritengo che la più adatta ai nostri scopi sia quella denominata "Default". Caricandola in ambiente ArcMap otterete il risultato qui sotto:


Si tratta di un servizio di mappa comprendente l'intero territorio nazionale: quindi la base ottimale per definire tutti i BBOX di nostro interesse.
Inoltre, come potete notare dalle proprietà del dataframe (scheda Coordinate System), questo servizio è pubblicato in coordinate geografiche nel datum WGS84, in linea quindi con le nostre esigenze.

Per ottenere i parametri richiesti dall'istruzione BBOX, ho effettuato uno zoom sul comune di Monza e, utilizzando lo strumento New Rectangle, contenuto nella toolbar Draw, ho disegnato un rettangolo tale da comprendere l'intero confine comunale.
Per conoscere le caratteristiche geometriche di questo grafico, è sufficiente accedere alle Properties dell'oggetto e visualizzare la scheda Size and PositionA tale scopo basterà attivare il pulsante Select Elements (freccia nera) ed effettuare un doppio click all'interno del rettangolo.


I parametri da inserire nella richiesta BBOX sono: Xmin, Ymin, Xmax, Ymax.
Quindi, con riferimento alla figura qui sopra, otterremo il seguente risultato: 9.22, 45.55, 9.33, 45.64
Vi faccio notare che, trattandosi di coordinate geografiche, l'unità di misura è il decimal degree (dd), ovvero, tradotto in italiano, il grado sessadecimale.

NOTA inserita il 26/11/2012: con ArcGIS 10.1 NON è più necessario esplicitare le coordinate nella stringa di richiesta MA, come è giusto che sia, si agisce direttamente sui parametri che definiscono il Search Envelope (Minimum X, Minimum Y, Maximum X, Maximum Y), avendo poi cura di attivare il flag Clip to Search Envelope.

A questo punto siamo in grado di impostare la connessione WFS limitando il download all'area scelta come esempio.
I passaggi da effettuare sono tutti sintetizzati nella seguente figura:


Rispetto a quanto avevo indicato nel post del 30 novembre scorso, l'unica differenza consiste nell'impostare diversamente la stringa inserita nella casella Dataset.
In questo caso specifico la stringa corretta è la seguente:
http://wms.pcn.minambiente.it/cgi-bin/mapserv.exe?map=/ms_ogc/wfs/rete_stradale_wfs.map&service=wfs&version=1.0.0&request=getfeature&bbox=9.22,45.55,9.33,45.64

In pratica occorre sostituire la parte request=getCapabilities con version=1.0.0&request=getfeature&bbox=9.22,45.55,9.33,45.64
(nota inserita il 26/11/2012: come già anticipato, con ArcGIS 10.1 NON è più necessario esplicitare le coordinate nella stringa di richiesta).

Si noti che omettendo la stringa &bbox=9.22,45.55,9.33,45.64 , si indica al sistema di effettuare il download dell'intero tematismo (nota: questa sintassi, a parità di risultato, è formalmente più corretta rispetto a quella utilizzata nell'articolo del 30 novembre).
Se volete verificare di persona, provate a selezionare, nella Tables List, solo il layer delle autostrade.
Il risultato che otterrete è illustrato nella figura qui sotto:


Tornando invece al comune di Monza, il download dell'intera rete stradale interessa circa 9.400 archi e richiede, nel mio caso, circa 2 minuti per essere completato (il tempo, ovviamente, dipende dalla banda disponibile sulla propria linea internet).
Visualizzando l'anteprima del tematismo strade_locali, si ottiene il risultato qui sotto:


ATTENZIONE: nel caso doveste accedere nuovamente alle Connection Properties, dovete considerare che ArcCatalog interpreta come "separatori di richieste" le virgole che, invece, separano le 4 coordinate del BBOX.
Così facendo le sostituisce con una serie di apici (in corrispondenza di ogni virgola, ma anche all'inizio e alla fine di tutta la stringa) che rendono poi inutilizzabile la connessione.
Purtroppo l'unico rimedio che ho trovato è quello di correggere manualmente la stringa
(nota inserita il 26/11/2012: problema risolto con ArcGIS 10.1 !!!).

NOTA A POSTERIORI: come si evince dall'immagine qui sotto, ho provato ad effettuare la stessa operazione anche con la versione 10 di ArcView (vi ricordo che quando pubblicai l'articolo utilizzavo la versione 9.3.1) e confermo che la procedura funziona correttamente.
L'unica differenza - comunque ininfluente ai nostri fini  - riguarda la maschera "Settings", che ora si chiama "Parameters" e che prevede un maggior numero di impostazioni.
Inoltre, come appare evidente in figura, NON è stato ancora risolto il problema degli apici.
Per aggirare l'ostacolo ho anche provato ad impostare il BBOX inserendo le coordinate nel riquadro "Use Search Envelope" ma, dopo alcuni tentativi infruttuosi, mi sono quasi convinto che questa modalità non funzioni. Difficile dire se sia colpa di ESRI o del PCN...
(nota inserita il 26/11/2012: problema risolto con ArcGIS 10.1 !!!).


Per una visione complessiva di tutta la rete stradale, dobbiamo invece ricorrere ad ArcMap.
Qui sotto vedete la rappresentazione dei quattro livelli di strade (nota: il progetto è lo stesso utilizzato per ricavare i parametri necessari alla richiesta BBOX).


Risulta evidente che il donwload ha interessato tutte le strade che intersecano l'area specificata: se ne deduce che l'istruzione BBOX non esegue tagli (clip). Quindi, in altri termini, è sufficiente che una parte dell'elemento sia interna all'area di interesse per essere compreso nel download.

Nulla vieta, applicando la stessa procedura al servizio Comuni fuso 32, di scaricare anche il confine comunale di Monza (nota: in questo caso dovrete inserire gli estremi del BBOX esprimendoli in coordinate cartografiche UTM).
Potrete poi utilizzare il comando Clip di ArcToolBox (lo trovate in Analysis Tools - Extract)  per effettuare il "taglio" delle strade esattamente in corrispondenza del confine comunale...
Ma questo è un altro argomento!

Diamo invece un'occhiata agli attributi associati alle strade, esattamente come rappresentato nella figura qui sotto.


Ai fini pratici ritengo che gli attributi più interessanti siano il Nome e la Tipologia.

Diversi archi risultano privi di nome ma, da una rapida analisi del grafo, mi sembra di poter affermare che si tratta quasi sempre di elementi secondari, spesso di estensione molto ridotta.

Invece, per quanto concerne la suddivisione per tipologia, ritengo particolarmente utile quella impostata sul layer delle strade locali.
La distinzione avviene in 4 categorie:
  • Extraurbana
  • Urbana Scorrimento
  • Urbana Quartiere
  • Locale
La figura qui sotto mostra una semplice tematizzazione basata proprio su questo attributo:


Analizzando meglio la mappa ottenuta - una zona che, ovviamente, conosco molto bene - mi sono subito accorto di alcuni errori: ad esempio via Manara, la strada in cui ha sede la nostra azienda, non è affatto una strada statale!!!

Ancora più evidente Piazzale Virgilio (al centro dell'immagine) che, a seguito dei lavori effettuati nell'estate 2008, si presenta oggi come una grande e unica rotonda. Esattamente come indicato nello stradario World Street Map (vedi immagine qui sotto), uno dei tanti layers disponibili gratuitamente sul portale ArcGis Online.
Se non vi ricordate come accedere a questi servizi di mappa, molti dei quali recentemente arricchiti e aggiornati (tra questi proprio World Street Map), fate riferimento all'articolo con il quale ho aperto il blog.


Quest'ultima considerazione mette in evidenza una critica già sollevata in merito ai dati pubblicati dal PCN, ma non solo! Riguarda infatti un pò tutti i soggetti che producono dati, sottoscritto compreso...
Non mi riferisco agli errori in sè stessi, ci mancherebbe!
Vorrei solo evidenziare come il corretto utilizzo di un dato non possa prescindere da una "buona" documentazione dello stesso ovvero, in termini più tecnici, da un buon METADATO.

Quest'ultimo, nel caso specifico, dovrebbe rispondere a domande del tipo:
- a quale data è aggiornata la rete stradale?
- come è stato ottenuto il tematismo?
- come devo interpretare ogni singolo attributo?
- quali criteri sono stati adottati per la suddivisione in tipologie?
- come è pianificata la manutenzione del dato?
- ecc...

Provate ora a visualizzare il "Metadato Completo" che il PCN pubblica in merito a questo tematismo, il link è il seguente: http://www.pcn.minambiente.it/mdSearch/mdView.jsp?ID=727
Secondo voi risponde "veramente" alle domande qui sopra?
Alcune risposte sono facili da immaginare, altre richiederebbero un'analisi di maggior dettaglio, altre ancora sono impossibili da ottenere.
Ma la questione è ben altra: NON dobbiamo "immaginare", dobbiamo poter "leggere" le risposte.

Ad esempio, preso atto che nel metadato non viene indicata la pianificazione in merito al rilascio di nuove releases, come possiamo essere certi che i dati sui quali stiamo lavorando in ArcMap siano effettivamente allineati all'ultima versione disponibile?
Purtroppo, in mancanza di informazioni precise, siamo costretti ad inventarci una procedura alternativa.
Ad esempio, nel caso specifico, suggerirei di agire "ogni tanto" sul tasto Clear Cache che trovate nella scheda Data Interoperability delle Options: in questo modo ArcGIS sarà costretto ad effettuare un nuovo download.

Se invece ritenete di trasferire in un geodatabase i dati - magari per lavorarci in maniera più strutturata - vi segnalo un'alternativa alla soluzione che avevo illustrato il 30 novembre scorso.
Per salvare le features direttamente in un geodatabase, quindi senza l'obbligo di utilizzare ArcMap, potete utilizzare lo strumento Quick Import di ArcToolBox (lo trovate nel ToolBox Data Interoperability Tools e, a dispetto del nome, anche in questo caso NON serve l'acquisto della licenza Data Interoperability) .

Vi faccio notare che anche questa procedura prevede la possibilità di impostare una richiesta BBOX, avete anzi due alternative: utilizzare la logica illustrata in questo post oppure agire sulle impostazioni della connessione, modalità questa più semplice ed intuitiva.
Agendo sul tasto Settings della connessione WFS, apparirà la solita scheda Input Settings for WFS ma, questa volta, in una versione più "ricca":  infatti, come si nota nell'immagine qui sotto, compare anche il riquadro Use Search Envelope, all'interno del quale è possibile specificare le coordinate che definiscono il BBOX (in realtà ho provato a farlo e mi sembra - salvo miei errori - che questa modalità non funzioni...).
Nota inserita il 26/11/2012: problema risolto con ArcGIS 10.1 !!!


Concludo ricordandovi che le informazioni contenute in questo articolo sono parziali: anche in questo caso l'argomento è "immenso" e meriterebbe una trattazione molto più approfondita!
Lascio però spazio ai vostri commenti/richieste per ampliare e descrivere meglio quanto sopra.

Un caro saluto.
PaoloGIS

AREA FORUM (vedi anche post del 10/1/2014)

Post più letti nell'ultimo mese: