Sviluppo di un software di generalizzazione cartografica

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