Sviluppo di un software di generalizzazione cartografica in ambiente GIS Open Source Agripolis 16 novembre 2011 Sandro Savino Dipartimento di Ingegneria dell’Informazione Università di Padova Generalizzazione cartografica “ the selection and simplified representation of detail appropriate to scale and/or the purpose of a map ” International Cartographic Association, 1973 La generalizzazione cartografica è quel processo che permette di produrre una nuova cartografia a partire da una cartografia esistente, a scala maggiore. 14 Nov 2012 Generalizzazione cartografica: esempio Scala: 1:100000, 1:200000, 1:500000 14 Nov 2012 Generalizzazione Cartografica: vantaggi Vantaggi: – Tempi di produzione più veloci – Utilizzo di informazioni già presenti – Consistenza del dato alle varie scale l’ideale in produzione e aggiornamento della cartografia campo di ricerca internazionale: generalizzazione cartografica automatica 14 Nov 2012 Generalizzazione cartografica: complessità La generalizzazione è un processo molto complesso: – Molti tipi di operatori – Non ci sono procedure definite – Forte componente “visiva” 14 Nov 2012 Generalizzazione cartografica Edificato singolo e a gruppi Strade Fiumi e scoline 14 Nov 2012 Progetto CARGEN CARGEN (2006, Dipartimento di Ingegneria dell’Informazione, Regione Veneto, IGM): sviluppo e sperimentazione di metodi automatici di generalizzazione alle scale 1:25000 e 1:50000 • Dopo aver provato software vendor ci siamo rivolti al FOSS (free open source software) In particolare la piattaforma Java, OpenJump, JTS, Eclipse, PostGIS 14 Nov 2012 Piattaforma di sivluppo Librerie (es. JTS) jdbc Algoritmi Storage dei dati Produzione e debug Plugins Dati (es. Shape) Visualizzazione, caricamento dati 14 Nov 2012 Librerie: JTS • JTS: Java Topology Suite • Core spaziale di PostGIS • Standard SFS, oggetto Geometry specializzato in – – – – Point / MultiPoint LineString / LinearRing / MultiLineString Polygon / MultiPolygon GeometryCollection • Funzioni per la manipolazione geometrica (buffer, intersezione, unione, ...) • Funzioni di indicizzazione e ricerca (Quad-tree, R-Tree, Kd-Tree) • Funzioni per il calcolo delle relazioni topologiche (DE-9IM) • Funzioni di calcolo robusto http://www.vividsolutions.com/jts/discussion.htm 14 Nov 2012 OpenJump ed Eclipse • OpenJUMP: – GIS OS realizzato in Java estendibile con plugin – Utilizza librerie JTS (Java Topology Suite) – Plugin sono collezioni di classi Java compresse in formato .jar da inserire nella cartella • Integrando OpenJump Eclipse è possibile – Realizzare plugin e usarli senza creare il file .jar – Eseguire OpenJUMP in modalità debug – In modalità debug le modifiche al codice vengono automaticamente “iniettate” in OpenJump 14 Nov 2012 Plugin e algoritmi • E’ facile trasformare algoritmi in plugin • Metodi principali dei plugin: – initialize() chiamato alla creazione della barra dei menù – execute() chiamato quando l’utente seleziona il plugin dal menù • è facile creare una semplice interfaccia per interagire con l’utente usando l’oggetto MultiInputDialog, o in alternativa usare i JDialog di Java SWING – run() metodo interrompibile (thread) chiamato dopo execute() • qui si può inserire l’esecuzione del codice dell’algoritmo • E’ possibile creare plugin “lancia e dimentica” o sviluppare algoritmi con una complessa interattività con l’utente 14 Nov 2012 Plugin e algoritmi Esempio di plugin a “step”: utile per analizzare la progressione dell’algoritmo 14 Nov 2012 Plugin: logger Plugin per la registrazione delle trasformazioni effettuate durante il processo di generalizzazione ESECUZIONE PROCESSO Registrazione su file di ogni modifica subita da un oggetto geometrico Backtracking POST PROCESSO Trasferimento dei dati raccolti in una tabella così da poterli sfruttare per generare il backtracking 14 Nov 2012 12 Dicembre 2011 Canton Fabio 9 Plugin: logger Backtracking 14 Nov 2012 Plugin: logger Altre funzionalità: Draw: Permette di disegnare le geometrie sul GIS OpenJump ZoomTo: In grado di spostare la visualizzazione in background durante l’esecuzione del processo 14 Nov 2012 12 Dicembre 2011 Canton Fabio 15 Plugin vestizione Plugin per l’assegnazione automatica di simboli e stili colorati ai dati generalizzati • Permette di valutare visivamente i risultati degli algoritmi simboli rotazioni 14 Nov 2012 14 Nov 2012 Scala 1:5000 14 Nov 2012 Scala 1:25000 14 Nov 2012 Scala 1:50000 Esempio vestizione 14 Nov 2012 Conclusioni • Con il FOSS è possibile sviluppare soluzioni a problemi grossi • Esistono librerie eccellenti per l’elaborazione spaziale (ad es. JTS) • È possibile realizzare un ambiente di sviluppo a misura delle proprie esigenze 14 Nov 2012