Sistemi Informativi Geografici Anno accademico 2009/2010 Programma del seminario 1. 2. 3. 4. 5. Sistemi Informativi Geografici e Geodatabase Cos’è un GIS Dati Geospaziali Indici spaziali Il Geodatabase La multiutenza nel GIS Gianni Campanile ESRI Italia [email protected] Gianni Campanile Chi ? ArcGIS: un sistema GIS completo Applications • • • • ESRI Inc. Environmental Systems Research Institute Società privata Fondata nel 1969 Leader mondiale nel campo del software GIS ArcGIS Desktop ArcMap ArcCatalog + Extensions • ESRI Italia • Società privata • Distributore ufficiale per l’Italia dei prodotti ESRI ArcGIS Engine ArcGIS Explorer Web Application ArcGIS Mobile Custom GIS applications Lightweight GIS client Java .NET JavaScript Lightweight toolkit ArcGIS Server Services File File Desktop Workgroup Enterprise ArcSDE Personal Gianni Campanile ArcGIS Online ArcSDE technology Desktop Data (Geodatabase) Integrated server-based GIS Gianni Campanile Cos’è un GIS 1. Cos’è un GIS Definizioni, Evoluzione, Esempi • 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. 1 Sistemi Informativi Geografici Anno accademico 2009/2010 A cosa serve? I non-GIS Google Earth/Maps, o Bing sono GIS ? NO • Le mappe sono i dati base • Servono livelli informativi specifici, dati, modelli, processi per fare un GIS • 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 Gianni Campanile Le tappe importanti del GIS Perché il GIS è “speciale” Il GIS ha più di 1Mln di utenti • 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 Inizio del GIS sul web Applicazione dei concetti di topologia CGIS: Primo sistema GIS Prima mappa prodotta al computer Gianni Campanile Gianni Campanile GIS e IT Mobile e Location based • I livelli logici: Primo sistema commerciale basato su DBMS • Le architetture: Sistemi Client/Server Dati e servizi dipendenti dalla posizione del richiedente (ad.es. GPS per auto, tariffe telefoniche localizzate, etc.) Sono un’intersezione del Mobile, del GIS e del Web Internet Wireless Web Service Dati e strumenti Desktop Professional Productivity Gianni Campanile In collaborazione con Sistemi informativi GIS Services Gianni Campanile Pag. 2 Sistemi Informativi Geografici Video Layer Gianni Campanile Misure su rilievi Gianni Campanile Routing 3D Gianni Campanile In collaborazione con Anno accademico 2009/2010 Modello 3D Raffineria Gianni Campanile Determinazione Skyline Gianni Campanile Editing Gianni Campanile Pag. 3 Sistemi Informativi Geografici Anno accademico 2009/2010 Componenti del GIS • 1. I geodati • 2. La geovisualizzazione • 3. Il geoprocessing 2. Dati Geospaziali Modelli, Tipi di dati, Strutture dati e memorizzazione Gianni Campanile Dati e Informazione Modellare la realtà Realtà I dati vanno “strutturati” e “modellati” per essere Informazione Implementazione Schema Analisi Gianni Campanile Gianni Campanile Come modellare ? Dal continuo al discreto Curve • Gli strumenti di cui disponiamo per visualizzare una mappa sono discreti: – Monitor – Stampanti Algoritmo di DouglasPeucker per discretizzare una curva A structure that forms a geometric domain A structure that does not form a geometric domain Gianni Campanile In collaborazione con Gianni Campanile Pag. 4 Sistemi Informativi Geografici Anno accademico 2009/2010 Quali formati ? Raster data types 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 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 255 0 Righe X,Y X X Origine Origine Colonne Gianni Campanile Gianni Campanile VALUE . 153 . SOIL_CODE . NoA . 255 Vettoriale Quali formati raster ? Il raster per il GIS non è una semplice immagine (ad.es. JPG), perché deve essere ortorettificato e georeferenziato • Un vettoriale è un insieme di coordinate • E’ il programma di visualizzazione che interpreta le coordinate Il più diffuso formato raster nel GIS è il GeoTIFF, cioè un TIFF (Tagged Image File Format) georeferenziato. Gianni Campanile Gianni Campanile Rappresentare la realtà con forme vettoriali • Tutti gli elementi geografici si possono rappresentare con tre tipologie geometriche Punti Linee Gianni Campanile In collaborazione con Quali formati vettoriali ? • 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 Poligoni Gianni Campanile Pag. 5 Sistemi Informativi Geografici Anno accademico 2009/2010 Struttura del file .shp (1/2) 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) • E’ composta da un header di file e da molti record ognuno con un header di record • I record possono avere anche lunghezze diverse • 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 (2/2) • Ogni record ha un header… 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 • …e una struttura che dipende dal tipo di oggetto: Gianni Campanile Gianni Campanile 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 In collaborazione con 3. Indici Spaziali Da 1 a 2 dimensioni, indici per dati raster, indici per dati vettoriali Gianni Campanile Pag. 6 Sistemi Informativi Geografici Anno accademico 2009/2010 Da 1 a 2 dimensioni 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 • 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 Esempi di Ordinamento raster 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 Row Row-Prime Spiral Morton Cantor Diagonal Peano-Hilbert Gianni Campanile Esempio completo Quad-tree Gianni Campanile In collaborazione con Gianni Campanile Operazioni con Quad-tree Gianni Campanile Pag. 7 Sistemi Informativi Geografici Anno accademico 2009/2010 Indici per oggetti puntuali 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 • 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 Gianni Campanile 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 Grid File Estende la Fixed Grid rendendo arbitrarie le suddivisioni della griglia, dipendenti dalla posizione dei punti Gianni Campanile Gianni Campanile Esempio del Point Quad Tree (1/3) 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) Dati di input: Gianni Campanile In collaborazione con Gianni Campanile Pag. 8 Sistemi Informativi Geografici Anno accademico 2009/2010 Esempio del Point Quad Tree (3/3) Esempio del Point Quad Tree (2/3) Primi 5 passaggi: Costruzione completa: Gianni Campanile Limiti del Point Quad-Tree • Il problema del Point Quad-Tree è che il numero dei discendenti cresce esponenzialmente al crescere della dimensione dello spazio • Per uno spazio a k dimensioni, il numero dei discendenti è 2 k. • Ad. es. un cubo (k=3) va diviso in 8 parti ad ogni iterazione • A seconda della disposizione dei punti molti rami possono essere vuoti • Si possono usare strutture alternative: Albero 2D, etc. Gianni Campanile Esempio di Albero 2D Gianni Campanile In collaborazione con Gianni Campanile Albero 2D • L’albero 2D (o in generale kD) è 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 2D-tree: algoritmo di range (1/2) Gianni Campanile Pag. 9 Sistemi Informativi Geografici Anno accademico 2009/2010 2D-tree: algoritmo di range (2/2) 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 Gianni Campanile Esempio di 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 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 Gianni Campanile R-tree • Struttura dati multidimensionale simile al B-tree • Le foglie rappresentano i veri rettangoli da indicizzare, mentre i nodi intermedi rappresentano rettangoli che contengono tutti i discendenti • I rettangoli costruiti possono intersecarsi • Una suddivisione è buona se: – Minimizza l’area totale dei rettangoli costruiti – Minimizza l’area di l’intersezione dei rettangoli costruiti • Se l’intersezione è eccessiva, le ricerche sono inefficienti • Usando gli MBB, alcune interrogazioni sono semplici • Ad.es. Trovare tutti gli oggetti completamente contenuti nel cerchio Gianni Campanile In collaborazione con Gianni Campanile Pag. 10 Sistemi Informativi Geografici Anno accademico 2009/2010 R-tree esempio di uso 4.Geodatabase Database spaziali, Geodatabase, Struttura di un GeoDB Goal: Avoid scanning all geometries Four stages of elimination Filter 1. Tile Feature class Tile 2. Envelope Envelope 3. Geometry 4. Geometry Envelope Geometry Gianni Campanile A Gianni Campanile Database spaziale Geodatabase • Un database spaziale è composto di tabelle bidimensionali (righe e colonne) • Ogni tabella rappresenta una classe di dati geografici (layer) • Ogni riga rappresenta un oggetto geografico (Feature) identificato da un ID (Feature ID o FID) • Una o più colonne mantengono le coordinate Table = Object Class Column = property Row = object Geometry column • 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 Gianni Campanile Cosa c’è in un Geodatabase Topologia Geodatabase elements Geodatabase • 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.) Tables Feature dataset Raster datasets Spatial reference Raster catalogs Feature classes Polygon Line Point Annotation Route Dimension Relationship classes Additional geodatabase elements Survey datasets GPS datasets Network datasets Toolboxes Tool Geometric networks Topology Network datasets Model Script Behavior Attribute defaults Attribute domains Split/merge policy Gianni Campanile In collaborazione con Terrain datasets Schematics Representations Connectivity rules Relationship rules Topology rules Gianni Campanile Pag. 11 Sistemi Informativi Geografici Anno accademico 2009/2010 Proiezioni definite 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 – Proiezioni definite – Dominio degli attributi – Regole topologiche – Regole di connessione • Relazione tra un tipo di Feature Table e la sua proiezione Tipo Oggetto ha Gianni Campanile Dominio attributi Topologia Relazione tra un tipo di attributo e la lista dei valori definiti Tipo Attributo • Relazione tra due tipi di Oggetti e una regola topologica 0,n 1,1 0,n Proiezione Contiene la lista delle Feature Tables Gianni Campanile • 0,n 1,1 Valori ha Tipo Oggetto rispetta 0,n 0,n Regole Topologiche Contiene la lista degli Attributi Gianni Campanile Gianni Campanile 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.) 5. Multiutenza nel GIS Tipi di lock, Versioning, Replica 0,n Tipo Oggetto ha 0,n 0,n min Tipo di connessione max Gianni Campanile In collaborazione con Pag. 12 Sistemi Informativi Geografici Anno accademico 2009/2010 Pessimistic vs Optimistic 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 • 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 Gianni Campanile Versioning Il Versioning - editing multiutente Feature class Particelle Default • 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 Business Mario State 1 (add) State 2 (delete) State 3 (merge) State 4 (add) Versione di Mario Gianni Campanile Versione di Sara A 1 3 2 3 4 D Delta Tables Gianni Campanile Version Reconciliation F S Sara A Posting edits Versione padre •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) Post Post edits edits dalla dalla versione versione figlio figlio alla alla versione versione padre padre Versione figlio Gianni Campanile In collaborazione con Gianni Campanile A Pag. 13 Sistemi Informativi Geografici Anno accademico 2009/2010 Reconciling edits Gestione dei Conflitti Versione padre Sulle geometrie e sugli attributi Reconcile Reconcile edits edits dalla dalla versione versione padre padre alla alla versione versione figlio figlio Visualizzazione grafica del conflitto Versione figlio Creo Creo una una nuova nuova versione versione figlio figlio Visualizzazione dei campi in conflitto Gianni Campanile Gianni Campanile A A REPLICA – 3 modalità Repliche tra Geodatabase • La tecnica del Post&Reconcile permette di gestire le repliche di database • La replica permette di distribuire copie di dati tra due o più geodatabases (“anche di diversa tipologia”) CheckoutCheckin Parent Two Way Parent Child Una sola volta • Si possono modificare due o più database in modo indipendente e mantenerli sincronizzati Child Più volte One Way Gianni Campanile Parent Più volte Child Gianni Campanile 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) 6. Uso Ottimizzazione e Programmazione Gianni Campanile In collaborazione con Pag. 14 Sistemi Informativi Geografici Ottimizzazione • Molti tipi di oggetto (feature classes) • Molti oggetti (features) • Alcuni oggetti possono essere molto grandi (raster) • Alcuni oggetti possono avere molti punti • Ogni oggetto può avere una diversa rappresentazione E poi... Anno accademico 2009/2010 Possibili soluzioni • Accesso – HW – Indici • Filtri verticali – Filtri sui dati – Eliminazione punti coincidenti • Filtri orizzontali – Visibilità – Piramidi (raster) – Cache A nessuno piace aspettare!! Gianni Campanile Gianni Campanile In dettaglio: filtri sui dati per area 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) • 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 • Viene applicato un filtro spaziale per ridurre i dati da trasferire Spatial filter Gianni Campanile 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 Pag. 15 Sistemi Informativi Geografici Anno accademico 2009/2010 Dettaglio: Pyramid resampling methods Nearest Dettaglio: Cache neighbor • Creata secondo un tiling scheme Value of nearest pixel For discrete data Does not create new values Fastest overall Must use if data has colormap Bilinear interpolation Weighted average of four nearest pixels For continuous data Fastest for continuous data Cubic convolution Smooth curve fitted to sixteen nearest pixels May produce most visuallypleasing output Gianni Campanile Gianni Campanile Programmazione Desktop Programmazione Web Mashup ? Mashup ? • Personalizzazione del desktop • Geoprocessing • Nuovi tool o workflow complessi • Web application complesse – Wizard, opzioni – Classi C++/Java (ad.es. ADF) – Composizione di Tool elementari (ad.es. Model Builder) • Geoprocessing – Classi C++/Java (ad.es. ArcObjects) – Web Services SOAP (ad.es. Geocoding) • Web API – AJAX, Scripting, Mashup Gianni Campanile Gianni Campanile Mashup ?? Esempio 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 • • • • • • • • • • • • • • <!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=utf8"/> </head> <body> <h4>Work flow:</h4> <ul> <li>Create a map.</li> <li>Add an ArcGISTiledMapServiceLayer.</li> </ul> </body> </html> Gianni Campanile Pag. 16 Sistemi Informativi Geografici Anno accademico 2009/2010 Esempio Mappe e altro Mashup ? <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> • http://resources.esri.com/arcgisonlineservices/ ..... <div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div> Gianni Campanile Gianni Campanile Grazie Gianni Campanile [email protected] In collaborazione con Pag. 17