• Non ci sono risultati.

Come velocizzare a dismisura il processo di identify su una mappa Il processo di creazione di una tile cache di mappa utilizzando identificativi univoci

N/A
N/A
Protected

Academic year: 2021

Condividi "Come velocizzare a dismisura il processo di identify su una mappa Il processo di creazione di una tile cache di mappa utilizzando identificativi univoci"

Copied!
2
0
0

Testo completo

(1)

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 richiestoper 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 univoci

(2)

GEOmedia 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

Riferimenti

Documenti correlati

– Write-non-allocate: la linea non viene portata in cache (viene solo aggiornata la memoria centrale). Ha senso in considerazione del

sua divisione in due cellule, tempo caratteristico della specie e delle condizioni colturali..

Un blocco dato può occupare qualsiasi posizione nella linea (stesso meccanismo delle cache associative). Def: una cache set-associativa in cui un blocco può andare in n posizioni

// Create a broadcast variable based on the content of dictionaryRDD // Pay attention that a broadcast variable can be instantiated only // by passing as parameter a local

In the coarsest level of detail, �log 2 h �, the entire tree forms the unique recursive subtree.. Level of detail k is derived by starting with the entire tree, recursively

all’esclusione di ricostruzioni alternative nel rispetto della regola dell’al di là di ogni ragionevole dubbio; alla visione sostanzialistica delle previsioni nor- mative rispetto

È un punto importante: da un lato si prende atto che l’obbligatorietà dell’azione penale, da tempo, è un valore asimmetrico rispetto alla realtà ed ampiamente derogato nella prassi,

• Dati nella cache L1 (~ 2 cicli per l’accesso) – Necessarie q=0.5 (cioe’ 2 flop per dato trasferito) per. avere il 50%