24 GEOmedia n°4-2017
REPORT
N
oi tutti conosciamo i tile di mappa e li utiliz-ziamo per velocizzare il processo di rendering delle mappe, a scale predefinite. Ma cosa succede quando un utente desidera conoscere di più degli oggetti che vede a schermo? Deve effettuare un’operazione di identify, magari su un numero considerevole di layer cartoga-fici.Fino ad ora questo processo era lento, e veniva elaborato da server e database interrogando indici spaziali, filtrando risultati e effettuando clip, con l’unico scopo di ritornare all’utente del-le informazioni aggiuntive su un
ristretto numero di oggetti. Da oggi, con l’utilizzo di una nuova buona pratica chiamata
Identification Tiles tutto questo
sarà solo un ricordo.
Mediante l’utilizzo degli
Identi-fication Tiles infatti il processo
di identify può essere deman-dato completamente al client e l’unico compito rimanente del server di mappa è quello di repository di informazioni sta-tiche.
Il processo di identificazione tramite WMS
Il protocollo WMS, definisce la richiesta GetFeatureInfo per dare la possibilità al client di ricevere le informazioni di una data posizione su una mappa. Ogni client è obbligato nella ri-chiesta a fornire i nomi dei layer nei quali effettuare la ricerca ed una zona dalla quale estrarre le informazioni desiderate. Questa tipologia di richieste ge-nera un grande quantitativo di elaborazione lato server di map-pa per essere evasa:
il server di mappa esegue una interrogazione sul database per ogni layer richiesto per ogni layer il database
uti-lizza l’indice spaziale per fil-trare i record che soddisfano il filtro della richiesta se trova dei risultati li
comu-nica al server di mappa il server di mappa compila la
risposta da inviare al client e la invia
Dopo tutta questa
elaborazio-ne il client deve interpretare la risposta e visualizzarla in modo opportuno all’utente.
Il processo di identificazione tramite Identification Tiles
La buona pratica degli
Identi-fication Tiles definisce come
memorizzare nelle immagini dei tiles tutte le informazioni necessarie ad ottenere un identi-ficativo univoco per ogni feature all’interno di una mappa. Ogni feature viene obbligatoriamente individuata con un UUID ver-sione 4 e queste informazioni sono già disponibili nei tile di identificazione.
Il processo diventa quindi il se-guente:
il client conosce la posizione che l’utente vuole identificare il client calcola il
corrispon-dente Identification Tile e lo richiede al server
il server lo invia, è un’imma-gine statica che può facilmen-te essere cachata a tutti i livelli il client estrae
dall’identifica-tion tile gli Identificativi delle feature presenti
il client richiede al server le features utilizzando l’identi-ficativo
il server ad ogni richiesta risponde con un JSON, in-formazione statica che può essere cacheata a tutti i livelli. Quindi il server di mappa ri-sponde solo con informazioni statiche e non viene eseguita alcuna elaborazione a livello di database.
Individuare e trasmettere velocemente le chiavi primarie delle features di una mappa in modo trasparente per l’utilizzatore finale. Il processo supporta nativamente molteplici layer, senza alcun peggioramento nelle performance.
di Massimiliano Bernabe
Come velocizzare a dismisura il
processo di identify su una mappa
Il processo di creazione di una tile cache di mappa utilizzando identificativi univociGEOmedia n°4-2017 25
REPORT
Limitazioni nell’uso di Identifi-cation Tiles
Non tutte le basi di dati sono pronte per essere interrogate tra-mite Identification Tiles , ma for-tunatamente è facile trasformare una qualsiasi base dati in modo da diventare compatibile. Esiste infatti un’unica limitazione: ogni feature all’interno della base dati deve essere univocamente iden-tificata mediante uno UUID versione 4.
Creare una cache di Identification Tiles
Gli Identification Tiles sono una directory di immagini PNG che seguono la nomenclatura slip-py map. Ogni PNG contiene moltissimi UUID, codificati in modo da essere facilmente inter-pretati dall’applicazione client: in ogni immagine viene individuata una griglia 64x64 dove ogni cella è composta da 16 pixel.
Ognuna delle celle ha abbastanza spazio informativo per contenere al massimo tre UUID diversi ed alcune informazioni di control-lo. Risulta quindi obbligatorio utilizzare il formato PNG in quanto senza perdita di informa-zione. Non è possibile utilizzare altri formati più compressi come il jpeg.
Gestione delle richieste alfanumeriche
Usare gli Identification Tiles per interrogare una banca dati rende
molto facile il reperimento dei alcune informazioni fonda-mentali (gli identificativi) delle features, avendo la loro posizio-ne. Ma come si può rimuovere completamente la dipendenza tra il server di mappa e il data-base? L’ultimo passo dunque è quello di esportare il contenuto del database in molti file JSON, da memorizzare direttamente sul server di mappa. I filesystem moderni gestiscono tranquilla-mente diversi milioni di piccoli file organizzati in sottodirectory. Col fine di individuare una nomenclatura utilizzabile in ge-nerale, si devono seguire queste regole:
ogni feature del database vie-ne esportata in un unico file JSON
il nome di ogni file JSON è la rappresentazione in esadeci-male dell’UUID della feature che contiene
i nomi dei file son in minu-scolo, ed hanno estensione “.json”
usare i primi tre caratteri del nome del file come nome della sottodirectory che lo contiene, in questo modo si limita il numero di file nella directory dei dati.
Fumo o arrosto?
L’utilizzo degli Identification Tiles è una pratica molto innovativa ed ancora non è standardizzata in nessun protocollo riconosciu-to a livello internazionale, ma ci sono già delle implementazioni e
degli esempi funzionanti, di cui uno rilasciato con licenza EUPL V.1.1.
Di questa implementazione sono disponibili:
tutti gli script e le procedure SQL per generare gli
Identi-fication Tiles a partire da un
database Postgis
una implementazione java-script di esempio
Non sono invece presenti al mo-mento dei plugin per le maggiori librerie javascript (OpenLayers, Leaflet, ...) che integrano questa funzionalità.
Conclusioni
In conclusione considero questa una vera innovazione nel campo dei sistemi informativi territoria-li, ed anche se al corollario man-cano moltissime integrazioni con i maggiori framework, è una pratica che vale la pena di consi-derare ed implementare, in par-ticolare nel caso di applicazioni che devono essere utilizzate da quantità di utenti in contempo-ranea e per le quali i dati di base sono relativamente fissi.
PAROLE CHIAVE
GIS; maps; layer cartografici; identification tiles;
ABSTRACT
The article describes how to quickly locate and transmit the primary features of a map to the end user. It supports natively multiple layers without any deterioration in performance.
AUTORE
Massimiliano Bernabe