Sistemi Informativi Geografici Anno accademico 2009/2010 Sistemi Informativi Geografici, Geodatabase e Web GIS Gianni Campanile ESRI Italia [email protected] Programma del seminario 1. 2. 3. 4. 5. 6. Cos’è un GIS Dati Geospaziali Indici spaziali Il Geodatabase La multiutenza nel GIS WebGIS Gianni Campanile In collaborazione con Pag. 1 Sistemi Informativi Geografici Anno accademico 2009/2010 Esri • • • • Esri Inc. Environmental Systems Research Institute Società privata Fondata nel 1969 Leader mondiale nel campo del software GIS • • • • Esri Italia Società privata Fondata nel 1990 Distributore ufficiale per l’Italia dei prodotti Esri Gianni Campanile ArcGIS: un sistema GIS completo Applications ArcGIS Desktop ArcGIS Engine ArcGIS Explorer Web Application ArcGIS Mobile ArcMap ArcCatalog + Extensions Custom GIS applications Lightweight GIS client Java .NET JavaScript Lightweight toolkit ArcGIS Server Services File File Desktop Workgroup Enterprise ArcSDE Personal ArcGIS Online ArcSDE technology Desktop Data (Geodatabase) Integrated server-based GIS Gianni Campanile In collaborazione con Pag. 2 Sistemi Informativi Geografici Anno accademico 2009/2010 1. Cos’è un GIS Definizioni, Evoluzione, Esempi Cos’è un GIS • GIS = Geographic (o Geographical) Information System • In Italiano: Sistema Informativo Geografico – A volte si usa Sistema Informativo Territoriale (SIT) ma non è corretto. • Rhind 1989: – Un insieme di hardware, software e procedure disegnate per supportare l’acquisizione, la gestione, la modifica, l’analisi, la modellazione e la visualizzazione di dati spaziali per risolvere problemi di pianificazione e gestione • USGS (United States Geological Survey), 2005: – Un sistema informatico in grado di assemblare, memorizzare, modificare e visualizzare informazioni geografiche, cioè dati identificati in base alla loro localizzazione geografica Gianni Campanile In collaborazione con Pag. 3 Sistemi Informativi Geografici Anno accademico 2009/2010 A cosa serve? • Mappatura di elementi geografici per una successiva analisi territoriale • Misure di fattori ambientali • Modellizzazione di processi alternativi per la pianificazione territoriale • Controllo dei cambiamenti nei processi ambientali • Ecc. Con un Sistema di Analisi Geografico, noi estendiamo le capacità di consultazione di database tradizionali includendo la possibilità di analizzare i dati basandosi sulla loro ubicazione. Gianni Campanile Perché il GIS è “speciale” • Si riferisce a dati “geografici”, sia in senso matematico (oggetti definiti tramite n-ple di numeri reali) che in senso geografico (la Terra) • I sistemi GIS trattano dati che si riferiscono ad oggetti o fenomeni del mondo reale Gianni Campanile In collaborazione con Pag. 4 Sistemi Informativi Geografici Anno accademico 2009/2010 Le tappe importanti del GIS Il GIS ha più di 1Mln di utenti Inizio del GIS sul web Primo sistema commerciale basato su DBMS Applicazione dei concetti di topologia CGIS: Primo sistema GIS Prima mappa prodotta al computer Gianni Campanile Componenti del GIS • 1. I geodati • 2. La geovisualizzazione • 3. Il geoprocessing Gianni Campanile In collaborazione con Pag. 5 Sistemi Informativi Geografici Anno accademico 2009/2010 Video Layer Gianni Campanile Misure su rilievi Gianni Campanile In collaborazione con Pag. 6 Sistemi Informativi Geografici Anno accademico 2009/2010 Determinazione Skyline Gianni Campanile I non-GIS Google Earth/Maps, o Bing sono GIS ? NO • Le mappe sono solo i dati di base • Servono livelli informativi specifici, dati, modelli, processi per fare un GIS Gianni Campanile In collaborazione con Pag. 7 Sistemi Informativi Geografici Anno accademico 2009/2010 2. Dati Geospaziali Modelli, Tipi di dati, Strutture dati e memorizzazione Modellare la realtà Realtà I dati vanno “strutturati” e “modellati” per essere Informazione Implementazione Schema Analisi Gianni Campanile In collaborazione con Pag. 8 Sistemi Informativi Geografici Anno accademico 2009/2010 Come modellare ? Dal continuo al discreto Curve • Gli strumenti di cui disponiamo per visualizzare una mappa sono discreti: – Monitor – Stampanti • Si devono sfruttare algoritmi specifici per la discretizzazione di dati continui Algoritmo di Douglas-Peucker Gianni Campanile Quali formati ? Formato Raster • Formato Vettoriale – Rappresentazione discreta della realtà – Più costoso, tempi di realizzazione lunghi – Più dettaglio sul territorio – Più informazioni associate all’elemento geografico – Più adatto alla costruzione del database geografico – Usa celle quadrate per rappresentare la realtà – Più adatto ad analisi territoriali mirate – Più adatto per informazioni territoriali continue – Richiede molto spazio in memoria – Una sola informazione per ogni cella Y Nodo Vertici X,Y X,Y X, Y Arco Y Nodo Righe X,Y X Origine X Origine Colonne Gianni Campanile In collaborazione con Pag. 9 Sistemi Informativi Geografici Anno accademico 2009/2010 Raster data types 0 • Continuous – Values indicate 83 quantity of a variable – Examples: Reflected light, elevation, water runoff • Discrete – Values indicate quality of a variable – Examples: Soil type, colormap value, ‘yes’ or ‘no’ suitability • User interprets data as 153 continuous or discrete Gianni Campanile 255 0 VALUE . 153 . SOIL_CODE . NoA . 255 Quali formati raster ? Il raster per il GIS non è una semplice immagine (ad.es. JPG), perché deve essere ortorettificato e georeferenziato Il più diffuso formato raster nel GIS è il GeoTIFF, cioè un TIFF (Tagged Image File Format) georeferenziato. Gianni Campanile In collaborazione con Pag. 10 Sistemi Informativi Geografici Anno accademico 2009/2010 Vettoriale • Un vettoriale è un insieme di coordinate • E’ il programma di visualizzazione che interpreta le coordinate • Tutti gli elementi geografici si possono rappresentare con tre tipologie geometriche: Punti Linee Poligoni Gianni Campanile Quali formati vettoriali ? • Vi sono diversi formati vettoriali a seconda del loro utilizzo: • Gestione – “file” (ad.es. Shape, DWG) – Database/Geodatabase (ad.es. Oracle, DB2, SQL Server, MySQL, ArcSDE, PostGIS) con diversi formati geometrici: ▪ SDO ▪ ST_Geometry ▪ WKB ▪ etc. • Interscambio – ad.es. DXF, GML • Web – GML, SVG, KML, WFS Gianni Campanile In collaborazione con Pag. 11 Sistemi Informativi Geografici Anno accademico 2009/2010 Formato Shape • Formato dati definito da ESRI • E’ il formato dati più utilizzato nel mondo • E’ composto da 3 file (in formato 8.3) con lo stesso basename : – Un file di “dati” spaziali (con estensione .shp) – Un file “indice” (con estensione .shx) – Un file di dati alfanumerici (con estensione .dbf e in formato dBase III/dBase IV) • Permette di memorizzare oggetti anche complessi (multipolygon, donuts, etc.) • Un file viene utilizzato per definire tutti gli oggetti di un certo tipo Gianni Campanile Struttura del file .shp (1/2) • E’ composta da un header di file e da molti record ognuno con un header di record • I record possono avere anche lunghezze diverse Gianni Campanile In collaborazione con Pag. 12 Sistemi Informativi Geografici Anno accademico 2009/2010 Struttura del file .shp (2/2) • Ogni record ha un header… • …e una struttura che dipende dal tipo di oggetto: Gianni Campanile Struttura del file .shx • E’ composta da un header di file e da molti record uguali • Non indicizza i dati, ma solo i record. Ogni record contiene il riferimento ad un record nel file .shp • Serve per trovare rapidamente un record nel file shp, perché questi non hanno lunghezza uguale Gianni Campanile In collaborazione con Pag. 13 Sistemi Informativi Geografici Anno accademico 2009/2010 Struttura del file .dbf • E’ un file in formato dBase III/dBase IV • Deve avere lo stesso numero di record dei files .shp e .shx • Contiene tutti i dati alfanumerici Gianni Campanile 3. Indici Spaziali Da 1 a 2 dimensioni, indici per dati raster, indici per dati vettoriali Gianni Campanile In collaborazione con Pag. 14 Sistemi Informativi Geografici Anno accademico 2009/2010 Gli Indici Un indice è qualcosa di “utile” per le ricerche che verranno effettuate • • Interrogazioni alfanumeriche: – Trova il signor “Rossi Francesco” – Trova il signor “Francesco Rossi” – Trova tutti i “Rossi” con età >40 Interrogazioni spaziali: – Spaziale per oggetto: ▪ Dammi le coordinate dell’obelisco di S. Giovanni – Spaziale puntuale: ▪ Dammi gli oggetti alle coordinate x,y – Range Spaziale: ▪ Dammi gli oggetti compresi nel rettangolo di vertici opposti P(x,y) P’(x’, y’) ▪ Dammi gli oggetti che distano < x da un punto P Gianni Campanile Da 1 a 2 dimensioni • Un indice su dati alfanumerici è un ordinamento basato su una “vicinanza” alfanumerica che ci fa comodo • Un indice su dati spaziali deve essere un ordinamento basato su una “vicinanza” spaziale. • Vanno bene gli indici “normali” ? – Ad.es. indicizzare su x;y (come su Cognome;Nome) ? Gianni Campanile In collaborazione con Pag. 15 Sistemi Informativi Geografici Anno accademico 2009/2010 Esempi di Ordinamento raster Row Spiral Row-Prime Morton Cantor Diagonal Peano-Hilbert Gianni Campanile Indici per dati raster: Quad-tree • Decomposizione di una regione in un albero in cui ogni nodo (tranne le foglie) ha esattamente 4 figli e rappresenta un quadrato uguale. Il processo continua finché ogni quadrato è omogeneo Gianni Campanile In collaborazione con Pag. 16 Sistemi Informativi Geografici Anno accademico 2009/2010 Esempio completo Quad-tree Gianni Campanile Operazioni con Quad-tree Gianni Campanile In collaborazione con Pag. 17 Sistemi Informativi Geografici Anno accademico 2009/2010 Algoritmo intersezione Input: Binary quadtrees Q, R q ← root of Q, r ← root of R queue L ← [(q, r )] while L is not empty do remove the first node pair (x, y) from L if x or y is a white leaf then add white leaf to output quadtree S if x is a non-white leaf then add y and all subnodes to output quadtree S if y is a non-white leaf then add x and all subnodes to output quadtree S if x and y are non-leaf nodes then add a new non-leaf node to output quadtree S for pairwise descendants x' of x and y ' of y do add (x ', y ') to the end of L Output: A binary quadtree S that represents the intersection Q ∩R Gianni Campanile Indici per oggetti puntuali • Se si devono memorizzare punti, si possono utilizzare le seguenti strutture: – Fixed grid ▪ Partizione della regione in una griglia regolare – Grid File ▪ Come la fixed, ma la griglia è variabile – Point quad tree ▪ Simile al region quad-tree – 2D tree ▪ Albero binario Gianni Campanile In collaborazione con Pag. 18 Sistemi Informativi Geografici Anno accademico 2009/2010 Fixed Grid • Partizione in una griglia regolare • Punti che condividono la stessa cella (bucket) sono memorizzati insieme • Buona performance per le interrogazioni spatial range • Dimensione della partizione dipende da: – Numero di punti – Ampiezza media del range • Non performante se i punti non sono uniformi Gianni Campanile Grid File Estende la Fixed Grid rendendo arbitrarie le suddivisioni della griglia, dipendenti dalla posizione dei punti Gianni Campanile In collaborazione con Pag. 19 Sistemi Informativi Geografici Anno accademico 2009/2010 Point Quad-tree • • • • • Unisce l’approccio della griglia con un albero multidimensionale Ogni nodo intermedio ha 4 discendenti Ogni quadrante è centrato su un punto La costruzione ha complessità O( n log r); la ricerca O (log n) Il numero dei discendenti cresce esponenzialmente al crescere della dimensione dello spazio • A seconda della disposizione dei punti molti rami possono essere vuoti Gianni Campanile Esempio del Point Quad Tree (1/3) Dati di input: Gianni Campanile In collaborazione con Pag. 20 Sistemi Informativi Geografici Anno accademico 2009/2010 Esempio del Point Quad Tree (2/3) Primi 5 passaggi: Gianni Campanile Esempio del Point Quad Tree (3/3) Costruzione completa: Gianni Campanile In collaborazione con Pag. 21 Sistemi Informativi Geografici Anno accademico 2009/2010 Albero 2D • • • • L’albero 2D è un albero binario (ha sempre 2 discendenti) La profondità è maggiore del Quad-tree I rami vuoti sono in media di meno Nel piano, le coordinate vengono confrontate alternativamente a seconda del livello: x ai livelli pari e y a quelli dispari (root = 0) Gianni Campanile Esempio di Albero 2D Gianni Campanile In collaborazione con Pag. 22 Sistemi Informativi Geografici Anno accademico 2009/2010 2D-tree: algoritmo di range (1/2) Gianni Campanile 2D-tree: algoritmo di range (2/2) Livello 0 Right Node Gianni Campanile In collaborazione con Pag. 23 Sistemi Informativi Geografici Anno accademico 2009/2010 Strutture per oggetti lineari • Per le strutture lineari le strutture precedenti non sono adatte • Si può usare il PM-quadtree • Ce ne sono vari tipi: PM1, PM2 e PM3 • PM1: si suddivide una regione nel minimo di quadranti in modo che siano verificate: 1. Ogni foglia del quadtree rappresenta una regione che contiene al più un vertice 2. Se una foglia del quadtree rappresenta una regione che contiene un vertice, può contenere solo elementi lineari che contengono il vertice 3. Se una foglia del quadtree rappresenta una regione che non contiene un vertice, allora può contenere solo un elemento lineare Gianni Campanile Costruzione del PM-quadtree • Nella figura a., il quadrante evidenziato viola la condizione 1 • Nella figura b., il quadrante evidenziato viola la condizione 2 • Nella figura c., il quadrante evidenziato viola la condizione 3 Gianni Campanile In collaborazione con Pag. 24 Sistemi Informativi Geografici Anno accademico 2009/2010 Strutture per oggetti complessi • • • Il problema più generale richiede ancora altre soluzioni Non si può analizzare l’intero insieme dei dati, ma bisogna ridurre il problema Si utilizzano il MBB (Minimum Bounding Box: il più piccolo rettangolo che contiene interamente l’oggetto e che ha i lati paralleli agli assi cartesiani) e gli indici R-tree, R+-tree e BSP-Tree • Usando gli MBB, alcune interrogazioni sono semplificate • Ad.es. Trovare tutti gli oggetti completamente contenuti nel cerchio Gianni Campanile Esempio di uso Obiettivo: Non esaminare tutte le geometrie 4 step di raffinamento: Filter A In collaborazione con Feature class 1. Tile Tile 2. Envelope Envelope 3. Geometry Envelope 4. Geometry Geometry Gianni Campanile Pag. 25 Sistemi Informativi Geografici Anno accademico 2009/2010 4.Geodatabase Database spaziali, Geodatabase, Struttura di un GeoDB Gianni Campanile Database spaziale Table = Feature Class Column = property • Un database spaziale è composto di tabelle bidimensionali (righe e colonne) • Ogni tabella rappresenta una classe di dati geografici (Feature Class) Row = object • Ogni riga rappresenta un oggetto geografico (Feature) identificato da un ID (Feature ID o FID) • Una o più colonne mantengono le Geometry column coordinate Gianni Campanile In collaborazione con Pag. 26 Sistemi Informativi Geografici Anno accademico 2009/2010 Database spaziale e GIS • Un sistema GIS ha però bisogno di altre informazioni per rispondere a domande come: – Quali sono gli edifici che sono lungo questa strada ? – Se si rompe questa tubatura, quali utenti devo avvertire ? – Quali sono le farmacie raggiungibili in meno di 5 minuti da questo punto ? – Voglio un’unica immagine di quest’area composta da tutte le immagini satellitari prima del 2008 – .... Gianni Campanile Topologia • Cos’è la topologia ? – Lo studio delle relazioni spaziali tra gli oggetti • In un GIS, è importante poter definire delle regole topologiche sugli oggetti (ad.es. due edifici non possono sovrapporsi etc.) Gianni Campanile In collaborazione con Pag. 27 Sistemi Informativi Geografici Anno accademico 2009/2010 Geodatabase • Un Geodatabase è un database spaziale che contiene tutte le strutture per gestire un sistema GIS • Possono far parte di un Geodatabase: – Oggetti vettoriali – Oggetti Raster – Proiezioni definite – Dominio degli attributi – Topologia – Connettività – Network – Annotazioni – Misure – Modelli di Geoprocessing – … Un Geodatabase è molto di più di un Database Spaziale! Gianni Campanile Estendere un Database Spaziale • Abbiamo visto come passare da un DBMS ad un Database Spaziale • In un Database Spaziale abbiamo le feature tables contenenti gli oggetti e gli indici spaziali • In un Geodatabase possiamo memorizzare molte più informazioni • Come passiamo da un Database Spaziale ad un Geodatabase ? • Proviamo ad implementare le seguenti caratteristiche – Definire proiezioni per ogni Feature Class – Regole topologiche – Regole di connessione Gianni Campanile In collaborazione con Pag. 28 Sistemi Informativi Geografici Anno accademico 2009/2010 Proiezioni definite per feature class • Relazione tra un tipo di Feature Table e la sua proiezione Tipo Oggetto 0,n 1,1 ha Proiezione Contiene la lista delle Feature Tables Gianni Campanile Topologia • Relazione tra due tipi di Oggetti e una regola topologica 0,n Tipo Oggetto rispetta 0,n 0,n Regole Topologiche Gianni Campanile In collaborazione con Pag. 29 Sistemi Informativi Geografici Anno accademico 2009/2010 Connettività • Relazione tra due tipi di Oggetti con una quantità minima, massima e un tipo di connessione (ad.es. ad un estremo, vertice interno, etc.) 0,n Tipo Oggetto ha 0,n 0,n min Tipo di connessione max Gianni Campanile 5. Multiutenza nel GIS Tipi di lock, Versioning, Replica In collaborazione con Pag. 30 Sistemi Informativi Geografici Anno accademico 2009/2010 Multiutenza • La natura dei dati geografici crea problemi nella multiutenza in aggiornamento: – Le regole topologiche influenzano vicendevolmente gli oggetti – Un eventuale lock è di natura geografica, quindi coinvolge un numero variabile di tabelle e di righe – Alcune modifiche sono lunghe anche mesi (Long Transactions) • Questi problemi non sempre possono essere risolti dal database spaziale perché è difficile determinare quali dati “bloccare” durante un aggiornamento • Una transazione è un gruppo di istruzioni eseguite in modo atomico, cioè tutte completate o tutte annullate • In un normale DBMS ogni singola operazione di modifica (insert, update, delete) viene eseguita come transazione • Con la Start Transaction e End Transaction di SQL è possibile definire l’inizio e la fine di una transazione • Una transazione standard effettua una serie di lock di sicurezza, è quindi un pessimistic locking; se la transazione è lunga (long transaction) serve un approccio diverso: optimistic versioning Gianni Campanile Pessimistic vs Optimistic • Pessimistic (Transaction): – Si effettua un lock per impedire i conflitti, anche se non si sa se avverranno – Nessun utente può accedere ai dati (in lettura sì se è attivata la dirty reading) durante una transazione – La storia del DB è una sequenza lineare di stati atomici • Optimistic (Versioning) – Si mantengono in tabelle apposite le modifiche effettuate sui dati (journaling) – Eventuali conflitti vengono risolti successivamente – Si crea un albero degli stati Gianni Campanile In collaborazione con Pag. 31 Sistemi Informativi Geografici Anno accademico 2009/2010 Versioning • Il versioning è una tecnica per creare più versioni “in linea” della stessa banca dati • E’ utile anche per mantenere proposte di varianti in un progetto • Viene gestito tramite le Delta tables, cioè tabelle che mantengono le modifiche per ogni versione • Questo tipo di versioning è diverso dal versioning utilizzato per l’ottimizzazione della lettura di un DB Gianni Campanile Il Versioning - editing multiutente Feature class Particelle Default Business Mario Versione di Mario Sara State 1 (add) State 2 (delete) State 3 (merge) State 4 (add) Versione di Sara Gianni Campanile In collaborazione con F S A 1 3 2 3 4 D Delta Tables A Pag. 32 Sistemi Informativi Geografici Anno accademico 2009/2010 Version Reconciliation •Quando versioni diverse devono essere unite, si possono generare dei conflitti •Il processo di risoluzione dei conflitti si chiama Posting (dal figlio al padre) o Reconciling (dal padre al figlio) Gianni Campanile Repliche tra Geodatabase • La tecnica del Reconcile&Post permette di gestire le repliche di database • La replica permette di distribuire copie di dati tra due o più geodatabases (“anche di diversa tipologia”) • Si possono modificare due o più database in modo indipendente e mantenerli sincronizzati • Vi sono 3 modalità di replica: CheckoutCheckin Parent Two Way Parent One Way Parent Child Una sola volta Child Più volte Più volte Child Gianni Campanile In collaborazione con Pag. 33 Sistemi Informativi Geografici Anno accademico 2009/2010 Spatial DBMS < Geodatabase < GIS • Uno Spatial Database NON E’ un Geodatabase • I dati sono solo una delle componenti del GIS, quindi un Geodatabase NON E’ UN GIS • Un GIS comprende anche tool e procedure per l’analisi dei dati spaziali (Geoprocessing) Gianni Campanile 6. WebGis Ottimizzazione e programmazione In collaborazione con Pag. 34 Sistemi Informativi Geografici Anno accademico 2009/2010 Ottimizzazione Ottimizzare l’accesso ai dati è è molto importante nel GIS perché spesso bisogna trattare… • • • • • Molti tipi di oggetto (feature classes) Molti oggetti (features) Oggetti molto grandi (raster) Oggetti con molti punti Oggetti con diverse rappresentazione Gianni Campanile Possibili soluzioni • Velocizzare l’accesso ai dati – Potenziando l’Hardware – Creando indici opportuni • Utilizzare filtri “verticali” – Filtri sui dati (query ad hoc) – Eliminazione punti coincidenti • Utilizzare filtri “orizzontali” – Visibilità per livelli di scala – Piramidi (raster) – Cache per le mappe di base Gianni Campanile In collaborazione con Pag. 35 Sistemi Informativi Geografici Anno accademico 2009/2010 Filtri verticali • Filtri sui dati – Attributi: clausole where (Definition query) che selezionano solo gli oggetti che rispondono ad un certo criterio – Area: seleziona solo gli oggetti che ricadono in un’area (automatico per il map frame) Spatial filter • Punti coincidenti – Algoritmi di retrieve ottimizzati: vengono recuperati solo i punti distinti. Non modificabile dall’utente Gianni Campanile Filtri orizzontali • Visibilità – Accensione/Spegnimento di layer a scale predefinite • Piramidi – Creazione per i raster di livelli di visualizzazione intermedi – Le piramidi non riguardano solo il web • Cache – Creazione di livelli predefiniti di visualizzazione – Diverse modalità: completa, parziale, fused, etc. – Utilizzata per il web Gianni Campanile In collaborazione con Pag. 36 Sistemi Informativi Geografici Anno accademico 2009/2010 Dettaglio: Pyramids • Reduced resolution copies of original raster – Pixel size doubles at each level • Improves query performance – ArcGIS requests data resolution to match display resolution – Number of pixels fetched is static as user zooms • Pyramids are not used during analysis 5 x 5 pixel block Gianni Campanile Programmazione Mashup ? • Programmazione Desktop: – Personalizzazione del desktop ▪ Wizard, opzioni – Geoprocessing ▪ Composizione di Tool elementari (ad.es. Model Builder) – Nuovi tool o workflow complessi ▪ Classi C++/Java (ad.es. ArcObjects) • Programmazione Web: – Web application complesse ▪ Classi C++/Java (ad.es. ADF) – Geoprocessing ▪ Web Services SOAP (ad.es. Geocoding) – Web API ▪ AJAX, Scripting, Mashup Gianni Campanile In collaborazione con Pag. 37 Sistemi Informativi Geografici Anno accademico 2009/2010 Architettura Web GIS Server Side Desktop • • • • • 3D Viewers Browser Php Java .Net Classi ADF … Mobile Web Server Dati Locali Altri GIS Server ArcGIS Server ArcGIS Server ArcEGON Geodatabase Mashup ?? Mashup ? • Letteralmente “poltiglia” • Significa integrare dati provenienti da diverse fonti • Viene implementata tramite linguaggi di scripting (Javascript, Flex, Silverlight) • E’ una programmazione “client-side” (o perlomeno così sembra) Una cosa da parrucchieri ? ... si riutilizzano risorse web esistenti ! Gianni Campanile In collaborazione con Pag. 38 Sistemi Informativi Geografici Anno accademico 2009/2010 Architettura Web GIS client side Desktop 3D Viewers Browser Mobile Dati Locali ArcGIS online Mashup Altri GIS Server • • • • • Silverlight Javascript Flex API … Web Server ArcGIS Server ArcGIS Server ArcEGON Geodatabase Esempio <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Create a Map</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h4>Work flow:</h4> <ul> <li>Create a map.</li> <li>Add an ArcGISTiledMapServiceLayer.</li> </ul> </body> </html> Gianni Campanile In collaborazione con Pag. 39 Sistemi Informativi Geografici Anno accademico 2009/2010 Esempio <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script> <script type="text/javascript"> dojo.require("esri.map"); var myMap, myTiledMapServiceLayer; function init() { myMap = new esri.Map("mapDiv"); myTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer ("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_Wo rld_2D/MapServer"); myMap.addLayer(myTiledMapServiceLayer); } dojo.addOnLoad(init); </script> ..... <div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div> Gianni Campanile Mappe e altro Mashup ? • http://www.arcgis.com/ Gianni Campanile In collaborazione con Pag. 40 Sistemi Informativi Geografici Anno accademico 2009/2010 Grazie Gianni Campanile [email protected] In collaborazione con Pag. 41