Guida all’uso del GeoUML Validator (versione software 2.0) 1 febbraio 2012 pagina 1 di 42 Autori Politecnico di Milano – Giuseppe Pelagatti (coordinatore), Spatial DB Group Alberto Belussi, Jody Marca, Mauro Negri Coordinamento CISIS – CPSG Comitato di Progetto delle attività CISIS –CPSG Struttura di interna Maurizio De Gennaro (Regione del Veneto – coordinatore tecnico), Massimo Attias (CISIS-referente area geografica e progetti) Stefano Olivucci (Regione EmiliaRomagna), Raffaella Gelleti, Marco Lunardis, Massimo Zia (Regione Friuli Venezia Giulia), Massimiliano Basso, Alessandra Chiarandini (INSIELRegione FVG), Simone Patella (Regione Lazio), Gianbartolomeo Siletto (Regione Piemonte), Mauro Vasone (CSI Piemonte), Marco Guiducci, Andrea Peri (Regione Toscana), Gianfranco Amadio, Domenico Bertoldi, Gianluca Riscaio, Sandra Togni (Regione Umbria), David Freppaz (Regione Valle d’Aosta), Virgilio Cima, Umberto Trivelloni (Regione del Veneto), Leonardo Donnaloia, Claudio Mazzi, Pierpaolo Milan (CISIS) Massimo Attias, (coordinatore supporto struttura), Leonardo Donnaloia, Claudio Mazzi, Pierpaolo Milan, Antonio Rotundo (CISIS) pagina 2 di 42 INDICE 1. INTRODUZIONE 2. L’INTERFACCIA DEL VALIDATOR E CARICAMENTO SI UNA SPECIFICA 2.1 I menù del Validator 2.2 La gestione della specifica 3. ESPLORAZIONE DI UNA SPECIFICA 3.1 Visualizzazione contenuto della specifica 3.2 Ricerca di elementi nella specifica 4. CONFIGURAZIONE ED ESECUZIONE DEL VALIDATOR 4.1 La configurazione delle connessioni 4.2 La configurazione del validatore 4.3 La configurazione dei parametri metrici 4.4 L’esecuzione della validazione 5. ELABORAZIONE E INTERPRETAZIONE DELLA DIAGNOSTICA 5.1 Modalità di elaborazione della diagnostica 5.2 Funzionamento del Validator e organizzazione del DB di reportistica 5.3 Tabelle Analitiche e Tabelle Sintetiche 5.4 Identificazione dei singoli errori 5.5 Contenuto generale delle tabelle di reportistica in base alla fase in cui sono prodotte 5.5.1 Tabelle generate in fase di caricamento 5.5.2 Tabelle generate in fase di normalizzazione 5.5.3 Tabelle generate in fase di validazione 5.6 Descrizione dettagliata delle singole tabelle del database di reportistica. 5.6.1 Tabelle per il controllo strutturale generate dai caricatori dei MI del validatore 5.6.2 Tabelle per la verifica dei valori degli attributi generate dai caricatori dei MI del validatore 5.6.3 Tabelle generate nel processo di normalizzazione 5.6.4Tabelle generate dai controlli sul DBN APPENDICE 1. INSTALLAZIONE, GEOUMLVALIDATOR ESECUZIONE E AGGIORNAMENTO 1.1 Requisiti 1.2 Installazione 1.3 Esecuzione del programma 1.4 Creazione dei database di appoggio 1.5 Aggiornamento delle versioni e specifiche APPENDICE 2. CONFIGURAZIONE E UTILIZZO DI IREPORT 2.1 Inclusione delle librerie per accedere alla tecnologia Apache Derby 2.2 Connessione al database dei report preconfezionati 2.3 Generare dei documenti pagina 3 di 42 DEL Premessa GeoUMLvalidator è un programma sviluppato dal gruppo di ricerca SpatialDBgroup, DEI, Politecnico di Milano nell’ambito di un progetto co-finanziato col Centro Interregionale per i Sistemi Informatici, Geografici e Statistici (CISIS). Le versioni del Validator, della documentazione e informazioni aggiuntive sono disponibili sul sito spatialdbgroup.polimi.it. Questa guida fa riferimento inoltre ai seguenti documenti: - GeoUML Methodology e Tools. Organizzazione Complessiva, 1 febbraio 2012 - Guida alla lettura di uno schema GeoUML, 1 febraio 2012 - Il Modello GeoUML. Regole di Interpretazione delle Specifiche di Contenuto per i Database Geotopografici, approvato dal Comitato per le regole tecniche sui dati territoriali delle Pubbliche Amministrazioni, 27/4/2010 - Guida ai Modelli implementativi di tipo Flat, 1 febbraio 2012 - Guida all’uso del GeoUML Catalogue (versione software 2.0), 1 febbraio 2012 pagina 4 di 42 1. INTRODUZIONE Il GeoUML validator (chiamato Validator nel seguito) è uno strumento in grado di operare il controllo di conformità intrinseca di un generico Data Product (chiamato nel seguito dataset) relativamente ad una specifica di contenuto SC gestita dal GeoUML catalogue. Come mostrato nella seguente figura, la Specifica Concettuale, le DPS e i relativi mapping generati dal GeoUMLcatalogue sono esportati nel file di Specifica .scs e sono importati dal Validator che li carica in un proprio database interno. Il Validator poi carica un dataset da validare, strutturato secondo le regole (incluso il modello implementativo) definito da una delle DPS e ne verifica la congruenza alla specifica, generando come risultato una serie di informazioni diagnostiche. GeoUML catalogue SC.scs Data Product da validare GeoUML validator Informazioni diagnostiche La comprensione del comportamento del Validator e l’interpretazione della diagnostica richiedono una conoscenza del modello GeoUML. Le versioni del Validator Il Catalogue viene distribuito in due versioni: il Validator completo di tutte le funzioni che permette l’importazione di una specifica di contenuto generato col Catalogue, la configurazione dei controlli da eseguire, la validazione dei dati e la produzione della diagnostica. - il Validator “chiuso” che possiede tutte le funzionalità di validazione del Validator, ad eccezione della funzione di importazione. Questo Validator può quindi applicare i controlli a data Product che siano conformi alla sola specifica che è stata incorporata nel Validator. Il processo di validazione Il Validator utilizza per il proprio funzionamento da uno a due Database di Appoggio: 1. il DB di caricamento, detto DBF, che costituisce un database di transito utilizzato nel processo di trasferimento del dataset verso il DBN 2. il DB normalizzato, detto DBN, sul quale vengono eseguiti i controlli di corrispondenza dei dati alla specifica I database di appoggio devono essere creati in un DBMS PostGIS installato sullo stesso server del Validator oppure essere messi a disposizione da un server remoto. Osservazioni: 1) per alcuni tipi di modelli implementativi non è necessaria la disponibilità di un DBF, perché il caricamento viene effettuato direttamente sul DBN. Al momento pagina 5 di 42 questa semplificazione riguarda solamente i modelli implementativi di tipo SQL multigeometria. 2) per supportare la validazione di dati relativi a diverse DPS (ad esempio, per validare sia dati in formato Shapefile, sia dati contenuti in un DB) è possibile definire propri database di Appoggio per ogni DPS; in alternativa, gli stessi database di Appoggio possono essere utilizzati per più DPS, ma i processi di validazione dovranno essere eseguiti sequenzialmente (questo aspetto è approfondito nella sezione dedicata alla configurazione). La configurazione dei database di Appoggio e di altri parametri di validazione sono preliminari all’esecuzione di una validazione, tuttavia non è necessario ridefinirli quando il Validator è usato per validare più volte uno stesso dataset aggiornato. Teoricamente il funzionamento del Validator sarebbe da dividere in 2 parti: portare i dati nel DBN e quindi eseguire tutti i controlli sul DBN. In pratica il processo è leggermente più complicato, perché intervengono due problematiche: • in primo luogo, per portare i dati nel DBN è risultato opportuno prima caricarli in un DB di caricamento (DBF), più simile al modello della Sorgente, e poi ristrutturarli • in secondo luogo, per eseguire sia il caricamento del DBF che la trasformazione in DBN devono essere eseguiti alcuni controlli di validità minima dei dati indispensabili per poterli caricare In base a queste considerazioni il processo di validazione è diviso i 3 fasi: 1) fase di caricamento: il dataset da validare viene letto e caricato nel DBF; durante questa fase vengono eseguiti tutti i controlli necessari per garantire la caricabilità del dato. In particolare si controlla la conformità delle strutture della sorgente a quelle previste dal MI scelto. Si controllano anche i singoli valori degli attributi e della componente spaziale prima di procedere al loro caricamento nel database di caricamento; 2) fase di normalizzazione: il contenuto del DBF viene letto, ristrutturato e caricato in DBN; durante questa fase vengono eseguiti alcuni controlli sui valori dei singoli oggetti ricostruiti, completando quindi il controllo dei singoli valori degli attributi descrittivi e delle componenti spaziali. 3) fase di validazione: durante questa fase vengono eseguiti sui dati presenti in DBN tutti i restanti controlli. In particolare è possibile effettuare la verifica delle proprietà inerenti l’insieme degli oggetti di una classe o delle relazioni tra le diverse classi (ad es., le proprietà strutturali quali l’univocità degli attributi e i vincoli topologici). Il peso relativo delle diverse fasi dipende dal Modello Implementativo del dataset; se tale modello è molto simile a quello del DBN (ad esempio nei MI SQL monogeometria) la fase di normalizzazione è molto leggera, mentre può essere pesante in caso contrario (in particolare nel MI Shape Topologico). I controlli svolti nelle fasi di caricamento e normalizzazione sono esclusivamente interni ad ogni singolo oggetto mentre i controlli che coinvolgono molti oggetti sono tutti svolti nella fase di validazione. La descrizione dei controlli che vengono svolti è trattata nella sezione del documento dedicata alla interpretazione della diagnostica. pagina 6 di 42 Struttura della guida La Sezione 2 del documento descrive il menù del Validator e la gestione delle specifiche nello strumento. Sezione 3 richiama le funzionalità che permettono la visualizzazione della specifica concettuale caricata nel Validator. Sezione 4 descrive come configurare i database PostGIS necessari alla validazione e come connetterli allo strumento, l’eventuale connessione del database da validare nel caso dei modelli implementativi SQL e infine le modalità di esecuzione della validazione. La Sezione 5 descrive le modalità di elaborazione della diagnostica e il significato degli errori attraverso la descrizione della struttura del database della reportistica DERBY. Appendice 1 illustra come installare, esecuguire e aggiornare il GeoUMLvalidator. Appendice 2 spiega come attivare Ireport per generare i documenti che riportano i dati della diagnostica descrittiva in forma sintetica e analitica. pagina 7 di 42 2. L’INTERFACCIA DEL VALIDATOR E CARICAMENTO DI UNA SPECIFICA 2.1 I menù del Validator Dopo l’avviamento del Validator si presenta con una finestra vuota, grigia, e la barra laterale sinistra e il menù principale nella parte in alto. La barra laterale sinistra visualizza una serie di TABS orientati alla visualizzazione degli elementi principali della specifica di contenuto caricata nel Validator, con una struttura uguale a quella del Catalogue; le altre componenti di una specifica sono invece visualizzabili tramite il menù Visualizza. Il menù Configurazione permette di configurare i parametri e i database necessari all’esecuzione della validazione e permette inoltre l’esecuzione della validazione. Il menù Genera permette la generazione del DB di reportistica dopo la validazione, mentre il menù File offre funzioni per la gestione della specifica utilizzata. Menù a tendine Nome della specifica Elenco strati e temi della specifica Elenco classi Elenco dei vincoli spaziali Elenco degli Strati topologici Figure specifica Elenco delle Data Product specifications 2.2 La gestione della specifica Il Validator è distribuito senza una specifica precaricata e mette quindi a disposizione funzioni per il caricamento di una specifica generata dal Catalogue, per la cancellazione della specifica caricata e per trasformare il Validator originale in un Validator chiuso. Queste funzioni sono rese disponibili dal menù File come mostrato dalla figura. pagina 8 di 42 Importazione di una specifica. Il caricamento di una specifica nel Validator richiede di selezionare il menù File alla voce Importa la specifica. La scheda di importazione, mostrata sotto, richiede poi l’individuazione del file della specifica (di tipo .SCS o di tipo .ZIP se compattato) e l’attivazione dell’importazione tramite il click sul bottone Importa. Si noti che una specifica può essere caricata in un Validator versione X.* se e solo se è stata creata da un Catalogue versione X.*, altrimenti viene rifiutata l’importazione; si rimanda alla guida all’uso del Catalogue per le modalità di allineamento della versione di una specifica (sezione importazione ed esportazione) e all’appendice 1 di questa guida. L’importazione di una specifica non altera le configurazioni dei database definite in precedenza, mentre vanno ridefinite le altre configurazioni. Si ricorda che il Validator può caricare una specifica in uno qualsiasi dei propri stati: working, pre-release, released (vedere la guida al GeoUMLcatalogue per una descrizione dettagliata), tuttavia la funzione di chiusura del Validator richiede che la specifica caricata sia in stato released. Cancellazione della specifica Selezionando il menù File alla voce Proprietà è possibile inoltre cancellare la specifica presente nel Validator, generando una specifica vuota; questa funzione va attivata solo qualora in presenza di molteplici importazioni si verifichino problemi nell’esecuzione di una nuova importazione. Per la cancellazione è necessario premere il bottone cancella tutto il contenuto del databasee successivamente il bottone Salva modifiche della stessa scheda. La cancellazione non annulla la configurazione dei database e dei parametri metrici. Congelamento di una specifica Per permettere ad un soggetto privato di utilizzare il Validator su un dataset (ad esempio, in produzione) è necessario che l’estensore della specifica esporti dal Catalogue Editor la specifica nello stato “released”, la importi nel Validator, poi attivi la pagina 9 di 42 voce Congela SC del menù File. A questo punto deve terminare l’esecuzione del Validator e rieseguire nuovamente il Validator; quest’ultima operazione trasforma il Validator in un Validator chiuso. Il Validator chiuso può essere utilizzato su più Dataset purchè siano tutti associati alla stessa specifica caricata nel Validator chiuso poiché è disabilitata la funzione di importazione. Si noti che nel caso in cui sia necessario cambiare la specifica presente in un Validator chiuso è necessario ricreare il Validator chiuso con le modalità spiegate prima. pagina 10 di 42 3. ESPLORAZIONE DI UNA SPECIFICA Dopo l’importazione di una specifica il Validator permette di visualizzare il contenuto della specifica secondo le stesse modalità del GeoUML Catalogue Viewer. Il Validator permette di visualizzare gli elementi della specifica di contenuto caricata anche attraverso una funzione di ricerca, ma non ne permette la stampa se non attraverso una funzione generale di stampa della scheda corrente del Validator attivata alla voce Print del menù File e che permette la stampa di un elemento della specifica quando questo è visualizzato nella scheda corrente. 3.1 Visualizzazione contenuto della specifica Per visualizzare la descrizione degli elementi concettuali della specifica di contenuto associato si usa principalmente la barra laterale. Per accedere ad una delle voci di primo livello presenti sulla barra laterale è sufficiente un singolo click del mouse sulla voce selezionata. Ad esempio, nella figura sulla destra è mostrato il risultato di un click sulla voce “Classi”. Da questo elenco, con un click su una classe si ottiene l’apertura di una scheda che contiene le informazioni relative a quella classe. In generale, una volta aperta una qualsiasi scheda, è possibile analizzare gli elementi informativi GeoUML presenti su tale scheda selezionandoli con un click; in questo modo si apre una nuova scheda relativa all’elemento selezionato. Questo metodo permette l’esplorazione delle specifiche, ad esempio permette, data una classe, di selezionare un attributo o una componente spaziale, e di visualizzarne tutte le caratteristiche (ad es., attributi dipendenti dalla geometria e poi i valori di domini enumerati, ecc...). Si noti che le associazioni sono visibili solo accedendo alle classi coinvolte. Oltre agli elementi formali della specifica il Validator permette di visionare le descrizioni, le immagini e i diagrammi associati agli elementi della specifica. Ulteriori informazioni inerenti la specifica di contenuto disponibili nel menù principale sono: - i dati di identificazione della specifica (nome, versione, autore, creazione, lingua, …) che si ottengono selezionando dal menù visualizza la voce Specifica (vedi figura a destra). - La presenza dell’introduzione generale alla specifica di contenuto e di eventuali allegati alla specifica stessa è verificabile selezionando dal menù Visualizza la voce Struttura documenti; se sono presenti appare un box relativo (box RTF introduzione o RTF allegati) in fondo alla scheda; si noti che l’introduzione e gli allegati non possono essere visualizzati con il Validator. - I livelli di scala definiti per la specifica, che sono visualizzabili selezionando dal menù Visualizza la voce Livelli di scala. - I valori di interpretazione dei valori nulli (ad esempio, “91 – Non conosciuto …” delle specifiche del National Core) se sono stati definiti nella specifica, visibili selezionando dal menù Visualizza la voce Valore nullo. pagina 11 di 42 3.2 Ricerca di elementi nella specifica La barra laterale sinistra permette di accedere a specifici elementi che vengono individuati negli elenchi mostrati selezionando un opportuno TAB, tuttavia il Validator permette di accedere agli elementi della specifica anche attraverso una funzionalità di ricerca per nome attivata dal menù Visualizza alla voce Cerca che mostra la scheda della figura a lato. La scheda permette di indicare il nome cercato (ad es., EDIFC) e di specificare se il nome si riferisca al valore di uno specifico campo di identificazione (codice, codice alfanumerico, descrizione) o al valore di uno qualsiasi dei tre. Inoltre si può indicare in quale parte della specifica cercare (ad esempio, in tutta la specifica come mostrato in figura), oppure nei soli attributi o associazioni. La ricerca mostrerà poi tutti gli elementi individuati (ad esempio, una classe e sei attributi descrittivi nella figura) suddivisi per tipologia e con un click sulla tipologia prima e sullo specifico elemento poi sarà possibile come con la barra laterale accedere ai dati di dettaglio dello specifico elemento. Si noti che selezionando “Tutto il catalogo” nel campo in si restringe la ricerca agli elementi formali: Classi, Associazioni, DataType, DominiGerarchici, Domini, Vincoli, Eventi, Tratti e Sottoaree. pagina 12 di 42 4. CONFIGURAZIONE ED ESECUZIONE DEL VALIDATOR L’esecuzione di una validazione richiede che siano state eseguite tutte le operazioni previste in Appendice 1 inerenti la creazione dei database di appoggio utilizzati dal Validator. Dopo la creazione dei database di appoggio e l’importazione di una specifica si devono: - memorizzare nel validatore i parametri necessari alla connessione al dataset da validare (modelli implementativi SQL) e ai database di appoggio; - agganciare ogni DPS al dataset e ai database di supporto; - definire i parametri per l’esecuzione dei controlli metrici e di distanza minima (per il modello implementativo Shape_Topo). 4.1 La configurazione dei database Selezionare il menù, mostrato nella figura a destra, Configurazione alla voce Gestione Configurazioni Database che permette la visualizzazione della scheda delle connessioni effettuate mostrata sotto (in figura non sono presenti connessioni). Si noti che questa operazione richiede che prima siano stati creati i database come descritto in Appendice 1 in base alla tecnologia del modello implementativo del dataset da controllare. La creazione di una nuova connessione avviene premendo il bottone Nuova che appare nella scheda precedente, il quale estende la precedente scheda con la scheda per la generazione della configurazione corrente descritta nella prossima figura; questa operazione di creazione va ripetuta per ogni database di appoggio. In figura si mostra la compilazione della scheda per il database Postgres di caricamento in base ai dati di esempio utilizzati in Appendice 1; vengono selezionati il tipo di database (PostGIS ad indicare Postgres con l’inserimento delle librerie geometriche di PostGIS), l’utilizzo (Caricamento e nella seconda configurazione sarà Normalizzazione), la porta (assegnata dal Validator), l’URL (per convenzione IP 127.0.0.1 perché i database di appoggio sono nel nostro esempio sullo stesso calcolatore del Validator, altrimenti sarebbe necessario l’IP reale), il nome assegnato (vedi Appendice 1), l’utente e la password dell’amministratore di Postgres e lasciando in bianco il campo schema. pagina 13 di 42 Dopo aver compilato i campi è conveniente premere il bottone Prova connessione per verificare la correttezza dei parametri e infine premere Salva per memorizzare la connessione creata. Nel caso in cui il dataset sia stato creato con un modello implementativo Shape è necessario ripetere l’operazione precedente anche per il secondo database di appoggio per la normalizzazione selezionando nuovamente il bottone Nuova. Si noti che nella parte inferiore della scheda a lato rimangono visibili i parametri dell’ultima connessione salvata che possono essere nuovamente modificati e salvati. Infine se il dataset da validare è stato realizzato con un modello implementativo SQL Flat allora è necessario configurare la connessione anche al database contenente i dati da validare; in tal caso il tipo di database potrà essere PostGIS o Oracle, l’utilizzo sarà sorgente (nel caso Oracle questa voce sarà omessa in quanto sorgente per default) e in questo caso si dovrà specificare il nome dello schema se i dati sono messi in un particolare schema del database selezionato. Attenzione nel caso di dataset SQL per il modello implementativo SQL Flat multigeometria si deve configurare solo il database di Appoggio di caricamento. Le connessioni create sono elencate nella parte alta della scheda in righe colorate in caricamento, giallo normalizzazione, bianco base al parametro di uso (rosso sorgente); nella figura sotto appare l’elenco delle connessioni dopo la creazione della connessione al database di Appoggio per il caricamento dei dati. Si noti che per correggere i dati di una connessione esistente è sufficiente selezionarla nella lista con un doppio click del mouse. 4.2 La configurazione del validatore Selezionando la voce Configurazione del validatore del menù Configurazione si definiscono i parametri che permettono l’associazione di una DPS al proprio dataset sorgente e ai database di Appoggio. La prima operazione consiste nella selezione di una delle DPS presenti nella specifica. Nel caso di DPS con modello implementativo Shape, ad esempio, appare la seguente figura pagina 14 di 42 E’ necessario per questo tipo di DPS indicare il pathname completo della cartella che contiene il dataset (shape). Inoltre si devono selezionare due dei database precedentemente creati e configurati come database di caricamento e normalizzazione e salvare i dati. Nel caso di DPS di modelli implementativi SQL Flat multigeometria si devono selezionare, come indicato nella figura sotto, la DPS, il database sorgente precedentemente configurato e il solo database di caricamento. Nel caso del modello implementativo SQL monogeometria si richiedono invece entrambi i database di Appoggio. Attenzione. E’ possibile che più DPS condividano uno o entrambi i database di Appoggio ma con i seguenti vincoli del Validator: - DBF condiviso. Se viene caricato (anche normalizzato) il dataset della DPS1 allora all’atto del caricamento del dataset della DPS2 (che condivide il DBF) vengono eliminati dal database interno del validatore tutti i dati che si riferiscono al dataset della DPS 1 incluso i risultati della diagnostica. - DBN condiviso. Il caricamento dei due dataset nel relativo DBF avviene senza restrizioni. Se il dataset della DPS1 viene normalizzato allora all’atto della normalizzazione del dataset della DPS2 (che condivide DBN) vengono eliminati tutti i dati che si riferiscono al dataset della DPS1. Questi vincoli impongono di ripetere dei controlli eventualmente già eseguiti imponendo una sequenzializzazione delle validazioni. Pertanto se si vogliono validare in parallelo più dataset di DPS differenti è conveniente utilizzare database di Appoggio non condivisi tra le DPS. pagina 15 di 42 4.3 La configurazione dei parametri metrici La selezione del menu Configurazione alla voce Parametri dei controlli geometrici fa apparire la seguente scheda che è suddivisa in due parti: - nella prima parte devono essere indicati i valori metrici da utilizzare come soglia nei controlli metrici; si noti che il controllo relativo sarà eseguito se viene selezionato il checkbox a sinistra del parametro; - la seconda parte riguarda il controllo della distanza minima disponibile solo per il modello implementativo Shape_Topo e richiede di definire il valore di soglia e di selezionare il checkbox relativo per abilitare il controllo. Dopo l’effettuazione delle scelte si deve premere il bottone Salva i parametri. La scheda propone sempre alcuni valori di default che possono essere sempre riselezionato attraverso il bottone Reimposta parametri di default. 4.4 L’esecuzione della validazione Per eseguire la validazione del dataset si deve selezionare la voce Esecuzione del menù Configurazione per far apparire la scheda mostrata a lato. La scheda richiede di selezionare una delle DPS configurate con la voce configurazione validatore; se si sceglie una DPS non configurata apparirà la scritta “Non configurata” accanto alla DPS selezionata e non appariranno i bottoni per l’esecuzione dei controlli.. Nella stessa scheda è possibile indicare il numero di processi concorrenti (livello di multithreading al quale opera il Validator); la scelta ottimale dipende dalle caratteristiche della macchina (Hardware) utilizzata e non può essere indicata in generale. Un criterio ragionevole può essere il seguente, a condizione di una disponibilità adeguata di RAM: Numero di Processi Concorrenti = Numero di Processori o di Core + 1. Il Validator permette l’esecuzione sequenziale di tutti i controlli (bottone Caricamento + Normalizzazione + Validazione completa), oppure l’esecuzione parziale dei controlli come indicato nella seguente lista: 1. i controlli della fase di caricamento dei dati dal dataset al database di appoggio di caricamento (bottone Importazione); in questa fase sono eseguiti i controlli sui singoli valori descrittivi e geometrici del dataset da validare. pagina 16 di 42 2. I controlli della fase di normalizzazione sono effettuati sulla trasformazione strutturale dei dati (eccetto Oracle multigeometria) e sulla ricostruzione delle geometrie del modello implementativo Shape_Topo; i dati trasformati sono poi caricati nel database di normalizzazione (bottone Normalizzazione) 3. I controlli strutturali (ad es., vincoli primary key, foreign key) (bottone Solo struttura). 4. Il controllo dei vincoli spaziali (bottone Solo vincoli); si noti che il bottone Completa esegue i controlli strutturali e i vincoli spaziali). Il Validator controlla che i controlli 2, 3, 4 siano eseguiti dopo l’importazione e i controlli 3 e 4 dopo i controlli della normalizzazione. Tenere inoltre presente che • la fase di caricamento popola un nuovo DBF, eliminando il contenuto di quello preesistente; • la fase di normalizzazione crea un nuovo DBN, eliminando quello preesistente. Si noti che la possibilità di eseguire separatamente le diverse fasi permette di correggere i dati di input di una fase, ripetendola anche più volte, prima di passare alla successiva. Quando si attiva l’esecuzione di uno dei precedenti controlli viene mostrata una finestra di log nella quale appare una sintesi delle operazioni eseguite (nella figura a lato è mostrata la finestra per il controllo di Importazione). Il log delle operazioni può essere esaminato a video allargandone le dimensioni o essere estratto selezionandolo e utilizzando il comando CTRL C; si tratta tuttavia di segnalazioni utili soprattutto in caso di problemi dell’esecuzione. Inoltre se si vuole interrompere l’esecuzione dei controlli in corso è necessario premere il bottone Ferma; si noti che l’interruzione può richiedere anche due minuti al fine di non lasciare il validatore in uno stato inconsistente per riprendere la validazione. pagina 17 di 42 5. ELABORAZIONE E INTERPRETAZIONE DELLA DIAGNOSTICA 5.1 Modalità di elaborazione della diagnostica Le operazioni di validazione producono una serie di informazioni diagnostiche che il Validator salva nel database interno. Il Validator permette di esportare la diagnostica in una Directory a scelta dell’utente, selezionando la voce Database reportistica del menu Genera. Tale funziona visualizza una scheda che chiede di selezionare la DPS per la quale si vuole la diagnostica e la cartella (bottone “Sfoglia”) dove memorizzare tale diagnostica. E infine premere il bottone Genera. Si noti che questa funzione permette di generare la diagnostica per tutte le DPS per le quali è stata eseguita una validazione dei dati. L’analisi dei dati della diagnostica può essere effettuata secondo diverse modalità. Nella cartella selezionata viene creato un database con tecnologia Apache DERBY, open source e quindi usabile liberamente contenente i dati della diagnostica che sarà chiamato database della reportistica. La maggior parte delle informazioni diagnostiche prodotte dal Validator sono corredate di geometria, cioè contengono la geometria dell’oggetto errato. Dato che DERBY non è un Database spaziale, le geometrie sono memorizzate in formato standard WKB in un “binary object (blob)”. La seguente figura illustra i 4 modi in cui può essere analizzato il contenuto del database di Reportistica: Validator Genera database reportistica Openjump Database Client (es. Squirrel) Database Reportistica (+ Plugin per Derby) (Apache Derby) IReport Report Generator (+ Configurazione per GeoUMLreport) 1. Database client. Uso di un generico Database Client, cioè di uno strumento in grado di interrogare un DB in tecnologia DERBY (esistono numerosi strumenti di questo tipo); questo metodo è il più potente ed è consigliabile per utenti esperti nell’accesso ai database relazionali, però non permette di analizzare direttamente le geometrie (che possono essere analizzate sui dati del dataset sorgente, ad esempio). pagina 18 di 42 2. GIS client. Uso di un Client per dati territoriali in grado di accedere ai dati di un database DERBY; per il GIS Openjump è messo a disposizione sul sito www.spatialdbgroup.polimi.it un plugin per accedere ai dati di DERBY. In questo modo è possibile esplorare i dati geometrici. 3. Documento di report. Uso di un qualsiasi Report Generator per prodursi un documento di report adatto alle proprie esigenze; questo metodo è indicato per chi dovrà ripetere molte volte particolari analisi sulla diagnostica, ma richiede la prima volta un utente capace di configurare il Report Generator. 4. GeoUMLreport. Si tratta di un modello di report preconfigurato con il report generator IReport reso disponibile dal Validator per un primo accesso alla diagnostica ad esclusione delle geometrie adatto all’utente non esperto negli altri strumenti e non fornisce alcuna forma di flessibilità. In Appendice vengono fornite le istruzioni per l’installazione di Ireport e la produzione dei due documenti di reportistica (analitico e di sintesi). Si noti che i report fanno riferimento alle tabelle di diagnostica di DERBY descritte nel seguito e il report sintetico riporta l’indicazione di quanti oggetti e con quale incidenza percentuale violano un controllo, mentre quello analitico riporta sostanzialmente il contenuto delle tabelle del database della reportistica ad eccezione dei casi in cui il 100% degli oggetti risulta sbagliato. 5.2 Funzionamento del Validator e organizzazione del DB di reportistica Prima di analizzare in dettaglio la struttura e il significato del database di reportistica è opportuno prendere in considerazione come l’impostazione di tale database sia legata ai principi di funzionamento del Validator, in particolare ai seguenti: • Il Validator può trovare errori in ognuna delle 3 fasi descritte precedentemente: caricamento, normalizzazione e validazione • Dato che le fasi di caricamento e normalizzazione dipendono dal Modello Implementativo, anche il tipo di errori riscontrabile in queste due fasi preliminari dipende dal MI; tuttavia, la struttura delle tabelle del DB di reportistica destinate a tener traccia di questi errori è unica per tutti i MI. Inoltre: o Il validatore controlla solo le strutture fisiche richieste e gli attributi previsti dallo specifico MI considerato; strutture fisiche aggiuntive o attributi aggiuntivi nella sorgente non sono quindi considerati. o Le strutture fisiche dedicate alla descrizione dei domini enumerati non sono considerate dal validatore che le carica direttamente dalla specifica (file .scs) per i controlli di dominio. • In presenza di un errore il Validator tenta di procedere nell’analisi; per questo motivo nelle fasi di caricamento e normalizzazione a fronte di un dato errato il Validator se possibile carica un valore scelto opportunamente (spesso è il valore NULLO) nel corrispondente campo del DBF o DBN, in modo da poter proseguire nell’analisi. Naturalmente, questo approccio comporta che: o Nelle fasi successive si possono generare molti ulteriori errori dovuti agli errori precedenti o In certe situazioni il Validator deve fermarsi perché non è in grado di procedere • La diagnostica prodotta dal Validator deve servire a rintracciare gli errori sia a livello concettuale che a livello fisico; il Validator riscontra infatti gli errori sui dati, quindi nel modello fisico, ma spesso l’interpretazione degli errori richiede di rintracciare le categorie concettuali che il dato fisico deve rappresentare; pertanto, la comprensione della diagnostica richiede di conoscere le regole del MI utilizzato. pagina 19 di 42 AVVERTENZA: Dato che la struttura delle tabelle di reportistica è unica, indipendentemente dal MI utilizzato, nelle spiegazioni seguenti in alcuni casi vengono indicati diversi contenuti possibili di una tabella, dovuti ai diversi MI; per semplicità, tali alternative sono riportate senza specificare a quali MI si riferiscono – se il lettore conosce o è interessato a un solo MI deve riconoscere le affermazioni rilevanti per lui trascurando quelle non rilevanti. Ad esempio, l’identificatore di un oggetto in una classe si chiama ClassID in alcuni MI e UUID in altri; indicando come valore di un campo “ClassID oppure UUID” si lascia all’utente di riconoscere l’elemento che gli interessa. 5.3 Tabelle Analitiche e Tabelle Sintetiche Il Database di reportistica consiste di tabelle dedicate alla segnalazione analitica dell’errore e di tabelle di sintesi; le Tabelle sintetiche sono in corrispondenza biunivoca con le tabelle analitiche per le quali ha senso fornire il livello sintetico e hanno un nome costituito dal concatenamento del nome della corrispondente tabella analitica con il suffisso “SIN”. Le tabelle analitiche descrivono, in generale, il dettaglio di ogni singolo errore incontrato specificandone la gravità, l’elemento concettuale e fisico interessato e l’identificazione dell’oggetto coinvolto e riportano, ove possibile, una geometria che riporti l’oggetto errato o l’area dove si verifica l’errore. Le tabelle sintetiche forniscono a livello di componenti come le classi, ad esempio, l’indicazione del numero totale di errori e della loro incidenza percentuale; si noti che nel caso di un errore che coinvolga tutti gli oggetti di una classe (incidenza del 100%) l’errore viene segnalato solo nelle tabelle sintetiche. Le tabelle analitiche servono quindi per individuare e correggere i singoli errori, mentre le tabelle sintetiche servono per individuare le aree di maggior criticità e stabilire se si tratti di errori metodologici e infine per valutare complessivamente la qualità del dataset sorgente. 5.4 Identificazione dei singoli errori La segnalazione degli errori trovati dal validatore avviene a doppio livello, sia identificando l’oggetto fisico, il suo attributo e la struttura fisica di appartenenza, sia associando tali elementi ai corrispondenti elementi concettuali della specifica. Inoltre, viene generalmente fornito l’identificatore dell’istanza di oggetto che ha causato l’errore. I riferimenti alle strutture fisiche e concettuali degli oggetti con errore sono i seguenti: SFPHYSTRUCTNAME: nome della struttura fisica della sorgente alla quale appartiene l’oggetto con errore. SFPHYATTRNAME: nome dell’attributo della struttura fisica che contiene l’errore. SCELEMENNAME: nome dell’elemento concettuale collegato alla struttura fisica SCELEMTYPE: tipo dell’elemento concettuale (in generale classe, strato, associazione). SCATTRNAME: nome dell’attributo dell’elemento concettuale associato all’attributo fisico. SCATTRTYPE: tipo dell’attributo concettuale. Nel caso degli attributi descrittivi (mono o multivalore) normali di classe o associazione, di componente spaziale, a tratti, eventi, sottoaree, nel caso dei ruoli e delle componenti spaziali (MI Shape_Flat e SQL_Flat) saranno riportati i nomi dell’attributo pagina 20 di 42 concettuale e del relativo attributo fisico prodotto dal mapping e analogamente per i nomi delle classi, associazioni, strati e delle relative strutture fisiche. Il campo SCATTRTYPE qualifica il tipo di attributo o ruolo; ad esempio, possibili valori sono: attributo di classe, attributo enumerato o enumerato gerarchico di classe, di datatype, ruolo, attributo a tratti, attributo multivalore, enumerato multivalore, datatype multivalore, attributo geometrico, attributo geometrico collassato a linea o a punto, geometria di strato topologico. Nel caso del MI Shape_Flat nella colonna del nome dell’attributo fisico associato alla componente spaziale si mette per convenzione il codice alfanumerico della componente spaziale concettuale (classi) e la costante “geometria” (strati) per identificare la geometria dello shape file. I modelli implementativi introducono nel mapping nuovi attributi fisici che comunque vengono, dove possibile, associati all’elemento concettuale di riferimento. In particolare: - i MI Shape_Flat e MI SQL_Flat introducono attributi geometrici per descrivere la geometria minima degli attributi a eventi, tratti e a sottoaree che vengono associati concettualmente alla componente spaziale sulla quale sono definiti specificando in SCATTRTYPE: Geometria eventi minimi, Geometria dei tratti minimi, Geometria delle sottoaree minime; anche in questo caso si adottano le convenzioni precedenti sui nomi degli attributi fisici per il MI Shape_Flat. - Gli identificatori fisici ClassID, TopoID, EventID, SegmentID, SubRegID nei MI SQL_Flat monogeometria, Shape_Flat e MI Shape_Topo (UUID e UUIDref nel MI SQL ORACLE_Flat multigeometria) associati ai valori di SCATTRTYPE: identificatore univoco della classe, identificatore dello strato topologico, identificatore degli eventi puntiformi minimi, identificatore degli attributi a tratti minimi, identificatore degli attributi a sottoaree minime (rispettivamente).Questi attributi vengono convenzionalmente associati all’attributo concettuale ObjectID. - Gli attributi fisici ClassREF (UUIDREF nel MI SQL ORACLE_Flat multigeometria) delle tabelle degli attributi multivalore e datatype multivalore, delle tabelle dei tratti, eventi e sottoaree minime e delle tabelle delle componenti spaziali separate nei MI SQL_Flat monogeometria e Shape_Flat vengono associati rispettivamente all’attributo multivalore e alla componente spaziale a cui si riferiscono le tabelle. Il MI Shape_Topo crea una struttura topologica nella quale un insieme di geometrie è riunita in un unico shape, pertanto l’attributo geometrico della geometria topologica, l’identificatore “primid” della singola geometria elementare, la coppia di attributi <primid, geoid> della tabella di composizione per la costruzione delle geometrie degli oggetti non hanno una relazione diretta con un particolare elemento della specifica concettuale; per questo motivo si adotta la convenzione di riportare nelle colonne di diagnostica del nome dell’attributo e dell’elemento concettuale il nome dell’insieme topologico al quale si riferiscono, specificando nel tipo dell’attributo concettuale il ruolo dell’attributo fisico nell’ambito dell’insieme topologico: “geometria insieme geometrico”, “primid”, “geoid nel dbf di composizione”; nel tipo dell’elemento concettuale per convenzione si specifica invece “Insieme geometrico”. Si noti che per la geometria nella colonna del nome dell’attributo fisico si riporta per convenzione “geometria” come nel caso del MI Shape_Flat. Infine gli attributi fisici delle componenti spaziali delle classi (strati) o delle geometrie minime dei tratti (eventi, sottoaree) non contengono la geometria effettiva, ma il geoid che identifica la geometria e pertanto il campo SCATTRTYPE riporta: geoid della classe, geoid dello strato pagina 21 di 42 topologico, geoid degli eventi minimi, geoid dei tratti minimi, geoid delle sottoaree minime. L’identificazione dell’oggetto che ha causato l’errore avviene nei seguenti modi: l’identificatore dell’oggetto è memorizzato nella colonna OBJID (OBJID1 se la tabella prevede due identificatori) il nome dell’attributo usato per l’identificazione è memorizzato nella colonna SFPHYATTIDNAME (SFPHYATTID1NAME se la tabella prevede due identificatori) Nel seguito sono riportati gli attributi dell’oggetto fisico utilizzati per l’identificazione di ogni tipo di oggetto concettuale; se diversi MI prevedono diversi attributi fisici questi vengono riportati in alternativa tra loro, lasciando al lettore di riconoscere quello di interesse per il suo MI Classi: ClassID o UUID, Strati: TopoID, attributi a tratti: SegmentID, attributi a sottoaree: subregid, attributi a eventi: eventid, attributi multi valore: Classref o UUIDref, geometrie esterne (nei MI che la prevedono): ClassREF associazioni: si usano i due identificatori dei due oggetti che determinano l’istanza di associazione coinvolta – campi OBJID1 e OBJID2 - e i nomi dei due campi identificatori in SFPHYATTRID1NAME, SFPHYATTRID2NAME rispettivamente. 5.5 Contenuto generale delle tabelle di reportistica in base alla fase in cui sono prodotte La tabella INFO riporta dati inerenti la specifica di contenuto considerata, la DPS utilizzata per la validazione con i relativi parametri. Le tabelle PARAMETERSTEP e PROCESSSTEP riportano rispettivamente le informazioni sulla validazione eseguita; in particolare, esse riportano rispettivamente i parametri dell’esecuzione della validazione e lo stato e il tempo di esecuzione delle varie fasi di validazione (Import process, Normalization process, Check process structure, Check process constraints). Le tabelle degli errori sono descritte nelle sottosezioni seguenti. 5.5.1 Tabelle generate in fase di caricamento Tabella ELEMENTSTATE Elenca le strutture fisiche previste dal MI riportandone l’assenza o la presenza, e in questo caso il numero di record presenti. Tabella ATTRIBUTESTRUCTURE Riporta errori nella definizione del tipo degli attributi descrittivi, dei ruoli, delle componenti spaziali e degli attributi descrittivi aggiuntivi generati dal MI. Tabella WRONGATTRIBUTEVALUE riporta gli errori dovuti al fatto che un valore di un attributo descrittivo dichiarato nella tabella ATTRIBUTESTRUCTURE con ERROR= compatibilità possibile non sia congruente col tipo richiesto. pagina 22 di 42 Tabella GEOMETRYERROR riporta gli errori rilevati sulle geometrie delle componenti spaziali della sorgente, degli attributi a tratti, eventi, sottoaree dei MI SQL e MI Shape_Flat e le geometrie (archi e nodi) degli insiemi topologici. Tabella GEOCOMPATIBILITYWARNING (solo per i MI SQL_Flat) riporta le segnalazioni inerenti le geometrie che hanno un tipo diverso da quello richiesto, ma ritenuto compatibile (ad esempio, la geometria è di tipo multipoint e contiene un solo punto e il tipo richiesto è point). La geometria viene convertita al tipo richiesto e poi sottoposta ai controlli descritti nella sezione precedente e i cui errori saranno memorizzati nella tabella GEOMETRYERROR. Tabella METRICWARNING non riporta errori, ma segnalazioni inerenti alcuni controlli metrici effettuati sulle geometrie che sono state caricate nel DBF; tali segnalazioni sono da considerare dei possibili warning rispetto a possibili geometrie errate e non comportano l’eliminazione della geometria dal DBF. Tabella MINIMUMDISTANCESHAPETOPO (solo per il MI Shape_TOPO) Riporta le geometrie che non soddisfano la distanza minima. 5.5.2 Tabelle generate in fase di normalizzazione La normalizzazione è un processo importante soprattutto nel MI Shape_Topo e che prevede la ricostruzione delle geometrie delle classi, strati e delle geometrie minime a partire dagli archi e dai nodi della sorgente (tabelle GEOCOMPATIBILITYWARNINGNORM, GEOMETRYERRORNORM e METRICWARNINGNORM). Nel MI SQL_Flat multigeometria non esiste questa fase e nei MI SQL_Flat_monogeometria (Oracle e Postgis) e Shape_Flat la normalizzazione è responsabile della riaggregazione delle componenti spaziali di una classe che nella sorgente sono memorizzate in strutture separate nella tabella della classe; ciò riguarda il caso di classi multigeometria, le componenti spaziali collassate e gli aggregati (Tabella STRUCTURALCONSTRAINTVIOLATIONNORM). Tabella ELEMENTSTATEDBF Riporta tutte le strutture fisiche previste dal MI e generate come tabelle nel DBF. La struttura è sostanzialmente identica alla tabella elementstate. Nei MI Shapeflat e Shape_Topo la tabella elemenstatedbf aggiunge anche le tabelle di NULL INTERPRETATION (_NI) assenti nella tabella elementstate caricandovi i valori dedotti dall’analisi dei valori degli attributi. La cardinalità di una struttura fisica coincide con quella definita in elementstate per quelle presenti nella sorgente e 0 per quelle assenti. Tabella GEOCOMPATIBILITYWARNINGNORM Vedere analoga tabella del caricamento. Tabella GEOMETRYERRORNORM (solo MI Shape_Topo) ha la stessa struttura dell’equivalente tabella del caricamento, ma fa riferimento anche alle geometrie ricostruite durante la fase di normalizzazione in base alle primitive topologiche Tabella METRICWARNINGNORM (solo MI Shape_Topo) ha la stessa struttura dell’equivalente tabella del caricamento, ma riporta le segnalazioni metriche rilevate sulle geometrie ricostruite pagina 23 di 42 Tabella STRUCTURALCONSTRAINTVIOLATIONNORM riporta gli errori incontrati nella riaggregazione degli attributi geometrici delle classi 5.5.3 Tabelle generate in fase di validazione Tabella ELEMENTSTATEDBN Riporta tutte le strutture fisiche previste dal MI normalizzato del validatore e memorizzate nel DB. Tabella STRUCTURALCONSTRAINTVIOLATION Riporta gli errori rispetto ai vincoli strutturali del GeoUML, ad esempio i vincoli di cardinalità Tabella FKCONSTRAINTVIOLATION Riporta i riferimenti errati tra oggetti Tabella GEOUMLCONSTRAINTNOTVERIFIED Tabella GEOMETRICCONSTRAINTVIOLATION Riporta le violazioni dei vincoli della specifica concettuale 5.6 Descrizione dettagliata delle tabelle del database di reportistica 5.6.1 Tabelle per il controllo strutturale generate dai caricatori dei MI del validatore Tabella ELEMENTSTATE Struttura < ELEMENNAME, SCELEMTYPE, SFPHYSTRUCTNAME, CARDINALITY, STATE> Elenca le strutture fisiche previste dal MI riportandone l’assenza (state=assente, cardinality = NULL) o la presenza (state = presente, cardinality = numero record presenti nella struttura fisica). Nel caso delle strutture fisiche _NI (null value interpretation nei MI SQL_Flat) SCELEMTYPE riporterà “Attributi nulli” e SCELEMENNAME oltre al nome della classe (strato, associazione) potrà specificare il nome dell’attributo concettuale nel caso di tabella _NI associata alla struttura fisica di un attributo multivalore (semplice, datatype e attributo di attributo geometrico) oppure la stringa concatenata “Attributi a tratti di” (Attributi a sottoaree di, Eventi puntiformi di) seguito dal nome dell’associata componente spaziale e dal nome della classe nel caso in cui la tabella _NI sia associata alla tabella dei tratti (eventi, sottoaree) minime. Es. <CARDINALITY,SCELEMENNAME, SCELEMTYPE, SFPHYSTRUCTNAME, STATE> 6 Area di circolazione ciclabile Classe AC_CIC presente Rete stradale liv.1 Classe RT_ST1 assente Attributi a sottoaree di Sup_estensione 74 (Classe “Bosco”) Attributi nulli BOSCO_BOSCO_SUP_SR_NI presente Tabella ATTRIBUTESTRUCTURE Struttura < SCELEMNAME, SCELEMTYPE, SCATTRNAME, SCATTRTYPE, SFPHYSTRUCTNAME, SFPHYATTRNAME, ERRLEV, ERROR > pagina 24 di 42 Riporta eventuali errori nella definizione del tipo degli attributi descrittivi, dei ruoli, delle componenti spaziali e degli attributi descrittivi aggiuntivi generati dal MI. Il controllo di tipo delle componenti spaziali o delle geometrie dei tratti (eventi, sottoaree) minimi consiste nella sola verifica che l’attributo sia di tipo geometrico (ulteriori controlli sono delegati a controlli successivi) nei MI Oracle_SQL_Flat mono/multi geometria e Postgis_SQL_Flat monogeometria. Nei MI SHape_Flat e Shape_Topo invece si controlla la corrispondenza della specifica tipologia (ad es., polyline) prevista rispetto a quella della sorgente. Si possono verificare 4 casi: - l’attributo previsto non esiste nella sorgente (ERRLEVEL=E(error) e ERROR=assente): nel DBF viene definito l’attributo e in ogni record sarà caricato NULL nell’attributo; - l’attributo è di tipo incompatibile (ERRLEVEL = E(error) e ERROR=tipo incompatibile): tutti i valori dell’attributo nella sorgente sono sostituiti da NULL nel DBF; - l’attributo descrittivo ha un tipo diverso, ma compatibile (ERRLEVEL=W(warning) e ERROR= tipo compatibile): il tipo della sorgente è più restrittivo di quello richiesto e quindi sarà convertito nel DBF (ad esempio tipo consegnato è una string(m) e quello richiesto è string(n) con n>m). Questo tipo di segnalazione viene effettuata anche quando una componente spaziale richiesta è di tipo multipoint e la sorgente è dichiarata di tipo point (nei soli MI SHape_Flat e Shape_Topo); - l’attributo descrittivo ha un tipo diverso, ma potenzialmente compatibile (ERRLEVEL=W(warning) e ERROR= compatibilità possibile): il tipo della sorgente è meno restrittivo di quello richiesto, ma i valori dell’attributo potrebbero essere compatibili; (ad esempio tipo consegnato è una string(m) e quello richiesto è string(n) con n<m). Questo tipo di segnalazione viene effettuata anche quando una componente spaziale richiesta è di tipo point e la sorgente è dichiarata di tipo multipoint (nei soli MI SHape_Flat e Shape_Topo); 5.6.2 Tabelle per la verifica dei valori degli attributi generate dai caricatori dei MI del validatore Si noti che: - i valori NULLI presenti negli attributi (descrittivi o geometrici) della sorgente vengono ricopiati nel DBF senza generare alcuna diagnostica; saranno i controlli successivi a verificare la correttezza di tale mancanza di informazione; - la stringa di caratteri (o di numeri) vuota (“”) in qualsiasi attributo descrittivo (incluso ClassID, SegmentID, eventID,subregID) provoca l’inserimento di un NULL nel DBF senza generazione di diagnostica; - una geometria vuota viene sostituita dal valore NULL nel DBF senza generazione di diagnostica Tabella WRONGATTRIBUTEVALUE Struttura <SCELEMNAME,SCELEMTYPE,SCATTRNAME,SCATTRTYPE, SFPHYSTRUCTNAME,SFPHYATTRNAME, ERRLEV, ERROR, WRONGVALUE, SFPHYATTRID1NAME, SFPHYATTRID2NAME, OBJID1, OBJID2, > Questa tabella riporta gli errori dovuti al fatto che un valore di un attributo descrittivo dichiarato nella tabella ATTRIBUTESTRUCTURE con ERROR= compatibilità pagina 25 di 42 possibile non sia congruente col tipo richiesto. Il valore descrittivo errato viene riportato nel campo WRONGVALUE. Si distinguono due casi: - valore incompatibile (ERRLEVEL=E(error) e ERROR= boolean sconosciuto) applicato a valori di tipo boolean: il valore logico è stato codificato con un valore non riconoscibile e quindi viene sostituito con NULL nel DBF; - valore convertito: in questo caso il valore della sorgente viene adattato al tipo richiesto; ad esempio, se il tipo richiesto è string(n) e la stringa della sorgente è più lunga, la stringa viene troncata alla lunghezza n segnalando ERROR= tronco a lunghezza n. Il valore viene quindi modificato e inserito nel DBF e pertanto nella tabella si riporta solo una segnalazione ERRLEVEL=W(warning) e in ERROR si riporterà l’operazione eseguita. I campi SFPHYATTRID1NAME, SFPHYATTRID2NAME, OBJID1, OBJID2 sono usati per l’identificazione dell’oggetto a cui appartiene l’attributo. Tabella GEOMETRY ERROR Struttura <SCELEMNAME,SCELEMTYPE,SCATTRNAME,SCATTRTYPE SFPHYSTRUCTNAME,SFPHYATTRNAME, ERRLEV, ERROR, GEOMETRY SFPHYATTRIDNAME, OBJID> Questa tabella riguarda gli errori rilevati sulle geometrie delle componenti spaziali della sorgente, degli attributi a tratti, eventi, sottoaree dei MI SQL e MI Shape_Flat e le geometrie (archi e nodi) degli insiemi topologici del MI Shape_Topo. In particolare si effettuano due tipi di controlli: - nei MI SQL_Flat si verifica che la geometria contenuta in un attributo geometrico della sorgente corrisponda al tipo richiesto dal MI; nei MI Shape questo controllo è effettuato nella verific effettuata per la tabella AttributeStructure; - per tutti i MI: controllo delle caratteristiche dell’ESFM del GeoUML. Le geometrie errate sono memorizzate nel campo GEOMETRY definito di tipo “blob” e codificato in WKB. L’oggetto interessato è identificato nei campi SFPHYATTRIDNAME, OBJID. Si hanno due tipi di errore: 1. geometria incompatibile (ERRLEVEL=F(fatal) e ERROR=geometria errata): la geometria è eliminata e viene inserito NULL nel DBF; La verifica di tipo degli attributi descrittivi e delle geometrie dei MI Shape avviene prima e gli esiti sono memorizzati nella tabella ATTRIBUTESTRUCTURE. Il controllo del tipo delle geometrie dei MI SQL_Flat viene effettuato durante la valutazione della qualità della singola geometria, pertanto il tipo derivato dalla geometria può risultare corretto (nessuna segnalazione e il valore viene caricato nel DBF), incompatibile (Fatal error precedente) o compatibile; in questo ultimo caso si esegue una conversione del tipo (segnalazione nella tabella GEOCOMPATIBILITYWARNING) e il valore viene caricato nel DBF. 2. violazione proprietà GeoUML: viene segnalato l’errore e nel caso in cui sia di livello Fatal si inserisce NULL nel DBF, mentre nel caso sia di livello error la geometria è comunque inserita nel DBF. Nella seguente tabella si elencano le tipologie di violazione delle proprietà GeoUML, riportando i valori di ERROR e ERRLEVEL, la descrizione del controllo eseguito sui valori dei diversi tipi geometrici; si noti che un pagina 26 di 42 controllo definito per un tipo GeoUML si applica anche alle sue specializzazioni definite nella gerarchia dei tipi del GeoUML e che nel MI Shape_Topo in questa tabella si riportano gli errori delle geometrie degli insiemi topologici (punti, curve) e non quelli delle componenti spaziali o delle geometrie minime poiché non sono ancora state ricostruite. Tipo geometrico GeoUML Descrizione controllo Error Error level Esistenza dei valori per X e Y e non Z in tutti i punti (vertici, estremi) della geometria Tutti i tipi 3D e le superfici B3D Esistenza dei valori per X e Y e Z in tutti i punti (vertici, estremi) della geometria Tutti i tipi ad eccezione dei punti, multipunto e Rimozione di vertici adiacenti nella dei punti negli aggregati dimensione del tipo (2D/3D) duplicati in ogni curva/frontiera Tutti i tipi di tipo curva e le curve degli Esistenza di almeno 2 vertici in ogni curva aggregati componente coordinata 2D errata F coordinata 3D errata F Vertici 2D/3D adiacenti duplicati W Meno di due vertici F GU_CPSurface2D, GU_CXSurface2D, Esistenza di almeno 4 vertici in ogni GU_CPSurfaceB3D, GU_CXSurfaceB3D frontiera - anche sulle frontiere proiettate Superfici di un GU_Aggregate2D e delle superfici B3D non considerando GU_Aggregate3D vertici duplicati GU_CPCurve2D/3D, GU_CXCurve2D/3D Assenza di selfoverlapping in ogni curva GU_CNCurve2D/3D,Curve in componente GU_Aggregate2D/3D (curve semplici, anelli e frontiere di superfici già garantite da altro controllo) GU_CXCurve2D, GU_CXCurve3D, Assenza di overlap tra due curve GU_CXRing2D, GU_CXRing3D, componenti GU_CNCurve2D, GU_CNCurve3D (frontiere delle superfici già garantite da altro controllo) GU_CPSimpleCurve2D/3D,GU_CPRing2D/3D, Ogni curva/frontiera componente sia GU_CXRing2D/3D, GU_CPSurface2D, semplice GU_CXSurface2D, GU_CPSurfaceB3D, GU_CXSurfaceB3D Superfici di GU_Aggregate2D/3D GU_CPRing2D/3D, GU_CXRing2D/3D, Ogni curva/frontiera componente sia chiusa GU_CPSurface2D, GU_CXSurface2D, GU_CPSurfaceB3D, GU_CXSurfaceB3D, Superfici di GU_Aggregate2D/3D GU_CNCurve2D/3D Connessione della curva complessa Meno di 4 vertici F Tutti i tipi 2D GU_CPSurface2D GU_CXSurface2D GU_CPSurfaceB3D GU_CXSurfaceB3D Superfici di un GU_Aggregate2D e di un GU_Aggregate3D curva2D/3D sovrapposta, E curva complessa 2D/3D sovrapposta E curva2D (anello2D) non E semplice, curva3D (anello3D) non semplice, frontiera esterna 2D (interna 2D) non semplice, frontiera 3D non semplice curva2D (3D) non chiusa, E Frontiera 2D (3D) non chiusa, oppure quando anello 2D/3D non chiuso curva complessa 2D (3D) non connessa Esistenza della frontiera esterna in ogni frontiera esterna 2D (3D) F superficie componente mancante Assenza di buchi esterni alla propria superficie 2D con buco E superficie componente esterno Assenza di buchi che toccano la frontiera intersezione 2D errata E esterna della propria superficie componente frontiera esterna e interna in più di un punto Assenza di buchi che contengono altri buchi buco 2D innestato E della stessa superficie Assenza di buchi che toccano un altro buco intersezione 2D errata tra E della stessa superficie in più di un punto buchi Ogni superficie componente sia superficie 2D non path- E PathConnected connessa Le superfici componenti possono toccarsi al Intersezione 2D errata tra E più in punti superfici pagina 27 di 42 Tabella GEOCOMPATIBILITYWARNING (solo per i MI SQL_Flat) Struttura < SCELEMNAME, SCELEMTYPE, SCATTRNAME, SCATTRTYPE SFPHYSTRUCTNAME, SFPHYATTRNAME, ERROR, GEOMETRY, SFPHYATTRIDNAME, OBJID> Questa tabella riporta le segnalazioni inerenti le geometrie che hanno un tipo diverso da quello richiesto, ma ritenuto compatibile (ad esempio, la geometria è di tipo multipoint e contiene un solo punto e il tipo richiesto è point). La geometria viene quindi convertita al tipo richiesto e poi sottoposta ai controlli descritti nella sezione precedente che segnaleranno gli errori nella tabella GEOMETRYERROR. Attualmente si riporta la geometria convertita (campo GEOMETRY), l’identificazione dell’oggetto interessato (campi SFPHYATTRIDNAME, OBJID) e nel campo ERROR il valore “conversione di tipo” TABELLA METRICWARNING Struttura <SCELEMNAME,SCELEMTYPE,SCATTRNAME,SCATTRTYPE SFPHYSTRUCTNAME,SFPHYATTRNAME, ERROR, GEOMETRY SFPHYATTRIDNAME, OBJID> Questa tabella non riporta errori, ma segnalazioni inerenti alcuni controlli metrici effettuati sulle geometrie che sono state caricate nel DBF; tali segnalazioni sono da considerare dei possibili warning rispetto a possibili geometrie errate e non comportano l’eliminazione della geometria dal DBF. In particolare, sono segnalati gli oggetti che hanno valori sotto soglia in alcuni controlli metrici, riportandone la geometria e l’identificazione dell’oggetto di appartenenza. I valori di soglia sono inseriti in fase di parametrizzazione del GeoUML validator. I tipi di errore riportati nel campo ERROR sono: segmento o curva sotto soglia, cuspide, perimetro poligono sotto soglia, area sotto soglia, troppi vertici. L’identificazione dell’oggetto interessato avviene tramite i campi SFPHYATTRIDNAME, OBJID. Tabella MINIMUMDISTANCESHAPETOPO (solo MI Shape_Topo) Struttura <DISTANCETYPE, GEOMETRYSETNAME1, PRIMIDNAME1, PRIMIDVALUE1, GEOMETRYSETNAME2, PRIMIDNAME2, PRIMIDVALUE2, DISTANCEVALUE, DISTANCEGEOMETRY BLOB> La tabella riporta le geometrie primitive che non soddisfano la distanza minima all’interno di ogni insieme topologico. Questa tabella associa la diagnostica alle solo primitive fisiche che saranno poi usate per la ricostruzione delle componenti spaziali degli elementi concettuali. Per ogni violazione riporta il tipo (DISTANCETYPE) delle primitive confrontate (punto/punto, punto/segmento, segmento/segmento), gli shape delle due primitive (GEOMETRYSETNAME), l’identificatore delle due primitive (PRIMIDVALUE), il valore della distanza calcolata (DISTANCEVALUE) e infine il segmento che visualizza la distanza tra le due primitive (DISTANCEGEOMETRY BLOB). pagina 28 di 42 5.6.3 Tabelle generate nel processo di normalizzazione La normalizzazione è un processo importante soprattutto nel MI Shape_Topo e che prevede la ricostruzione delle geometrie delle classi, strati e delle geometrie minime a partire dagli archi e dai nodi della sorgente (tabelle GEOCOMPATIBILITYWARNINGNORM, GEOMETRYERRORNORM e METRICWARNINGNORM). Inoltre è verificata la congruenza delle strutture fisiche utilizzate nella ricostruzione, specificando eventuali errori nella tabella STRUCTURALCONSTRAINTVIOLATIONNORM. Nel MI SQL_Flat multigeometria non esiste questa fase e nei MI SQL_Flat_monogeometria (Oracle e Postgis) e Shape_Flat la normalizzazione è responsabile della riaggregazione delle componenti spaziali di una classe che nella sorgente sono memorizzate in strutture separate nella tabella della classe; ciò riguarda quindi le classi con più componenti spaziali, le componenti spaziali collassate e gli aggregati (Tabella STRUCTURALCONSTRAINTVIOLATIONNORM). TABELLA ELEMENTSTATEDBF Struttura < ELEMENNAME, SCELEMTYPE, SFPHYSTRUCTNAME, CARDINALITY > Riporta tutte le strutture fisiche previste dal MI e generate come tabelle nel DBF. Per ogni struttura si riporta l’elemento concettuale di appartenenza col tipo e la cardinalità (cardinality =0 se la struttura era assente in elementstate o presente, ma senza record). La struttura è sostanzialmente identica alla tabella elementstate. Nei MI Shape-flat e Shape_Topo la tabella elemenstatedbf aggiunge anche le tabelle di NULL INTERPRETATION (_NI) assenti nella tabella elementstate caricandovi i valori dedotti dall’analisi dei valori degli attributi. La cardinalità di una struttura fisica coincide con quella definita in elementstate per quelle presenti nella sorgente e 0 per quelle assenti. TABELLA GEOCOMPATIBILITYWARNINGNORM (solo MI Shape_Topo) Struttura: < SCELEMNAME, SCELEMTYPE, SCATTRNAME, SCATTRTYPE SFPHYSTRUCTNAME, SFPHYATTRNAME, ERROR, GEOMETRY, SFPHYATTRIDNAME, OBJID> Questa tabella ha lo stesso obiettivo della tabella GEOCOMPATIBILITYWARNING applicata alle geometrie ricostruite, il cui tipo viene riconosciuto dopo la ricostruzione e nel caso in cui sia diverso dal richiesto, ma compatibile viene convertito segnalandolo in questa tabella. Successivamente è sottoposto ai controlli della qualità geometrica della tabella GEOMETRYERRORNORM. L’identificazione dell’oggetto interessato avviene tramite i campi SFPHYATTRIDNAME, OBJID. TABELLA GEOMETRYERRORNORM (solo MI Shape_Topo) Struttura <SCELEMNAME,SCELEMTYPE,SCATTRNAME,SCATTRTYPE SFPHYSTRUCTNAME,SFPHYATTRNAME, ERRLEV, ERROR, GEOMETRY SFPHYATTRIDNAME, OBJID> La tabella GEOMETRYERRORNORM ha la stessa struttura dell’equivalente tabella del caricamento e riporta: pagina 29 di 42 - gli errori incontrati nella topologia degli insiemi topologici ad eccezione della verifica della qualità degli edge (curva semplice - verificato in caricamento); le geometrie errate sono comunque conservate nel DBF. ERRLEVEL è sempre E e i valori di ERROR sono i seguenti (la diagnostica non riporta in generale e, in generale, la dimensione della geometria derivabile peraltro dallo shape di appartenenza: - segmento verticale: segmento 3D verticale; - toposhape dj or tc on boundary error: archi che violano la relazione DJ or TC sui boundary; - primitiva topologica duplicata: nodi che violano la relazione DJ - node – edge consistency error: nodo che viola relazione di DJ or TC con arco - geometry 3d2d consistency error: la proiezione planare di un arco 3D non trova il corrispondente arco 2D o la proiezione planare di un nodo 3D non trova il corrispondente nodo 2D. - l’incompatibilità del tipo della geometria ricostruita dagli archi/nodi dell’insieme topologico (ERROR = SELECT_DERIVATION_ERROR); - Errore nella derivazione dei poligoni 3d che rileva una differenza tra la frontiera del poligono generato e quella che si genererebbe unendo le primitive 3d che lo compongono nella tabella di composizione. ERROR = “DERIVATION_ERROR_BOUNDARY”; - gli errori della geometria ricostruita nel rispettare le caratteristiche del modello ESFM del GEOUML (i valori di ERROR sono quelli specificati per la tabella GEOMETRYERROR). A differenza della tabella GEOMETRYERROR del caricatore la colonna GEOMETRY riporta la geometria errata della sorgente per gli errori sulle primitive topologiche e la geometria errata dopo la sua ricostruzione negli altri casi. L’identificazione dell’oggetto interessato avviene tramite i campi SFPHYATTRIDNAME, OBJID. TABELLA METRICWARNINGNORM (solo MI Shape_Topo) Struttura <SCELEMNAME,SCELEMTYPE,SCATTRNAME,SCATTRTYPE SFPHYSTRUCTNAME,SFPHYATTRNAME, ERROR, GEOMETRY SFPHYATTRIDNAME, OBJID> La tabella METRICWARNINGNORM ha la stessa struttura dell’equivalente tabella METRICWARNING del caricamento, ma riporta le segnalazioni metriche rilevate sulle geometrie ricostruite L’identificazione dell’oggetto interessato avviene tramite i campi SFPHYATTRIDNAME, OBJID. Tabella STRUCTURALCONSTRAINTVIOLATIONNORM Struttura <SCCONSTRAINTDESCR, SCLIVSCALA SCELEMNAME, SCELEMTYPE, SCATTRNAME, SCATTRTYPE, SFPHYSTRUCTNAME, SFPHYATTRNAME, ERROR, ERRLEV, VALUE, SFPHYID1, SFPHYID2, OBJID1, OBJID2> pagina 30 di 42 Un primo tipo di errori rilevati in questa tabella riguarda la riaggregazione di più attributi geometrici (anche quelli prodotti dal mapping per il collassamento o quelli di un aggregato) di una stessa classe che vengono riuniti nella struttura fisica della classe (fusi nel caso dell’aggregato); la riaggregazione utilizza i valori dell’attributo ClassREF della struttura fisica della geometria separata e l’attributo ClassID della struttura fisica della classe. L’identificazione del record della geometria da riaggregare che presenta un errore avviene tramite i campi SFPHYID1, SFPHYID2, OBJID1, OBJID2, mentre nel campo VALUE si riporta il valore di ClassREF della struttura fisica della geometria separata. SCCONSTRAINTDESCR riporta “chiavi esportate” per segnalare un problema inerente la correlazione tra strutture fisiche diverse. Non tutte le situazioni anomale che si possono verificare generano diagnostica, pertanto si dettagliano le situazioni anomale e il comportamento del validatore: - più record della struttura fisica della geometria si riferiscono ad uno stesso oggetto della classe; un valore geometrico non può essere scomposto su più record. Viene segnalato “riferimento duplicato” nel campo ERROR e ERRLEV = E e le geometrie sono eliminate e viene inserito un NULL nell’attributo geometrico riaggregato nel record della classe; - nessun record della struttura fisica della geometria si riferisce ad un oggetto della classe. In questo caso viene inserito NULL nell’attributo geometrico riaggregato nel record della classe senza segnalazione di diagnostica; - un record della struttura fisica della geometria si riferisce ad un identificatore di oggetto che è duplicato in più oggetti della classe. La geometria viene riportata nell’attributo geometrico riaggregato di tutti gli oggetti che condividono l’identificatore senza alcuna segnalazione diagnostica; - un record della struttura fisica della geometria non trova alcun oggetto corrispondente della classe. La geometria è eliminata senza alcuna segnalazione diagnostica. Un secondo tipo di errore riguarda le corrispondenze tra strutture fisiche degli insiemi topologici. Anche in questo caso SCCONSTRAINTDESCR riporta “chiavi esportate” e ERRLEVEL è sempre “E”.. In particolare i casi segnalati sono i seguenti: - una primitiva geometrica non è utilizzata per ricostruire alcuna componente spaziale o geometria dei tratti,… L’identificatore PRIMID di una primitiva di uno shape topologico non viene referenziato nel campo PRIMID della tabella di composizione. Il campo ERROR riporta: PRIMID not in component; - una geometria ricostruita referenzia una primitiva topologica che non esiste. Un valore di PRIMID della tabella di composizione non si relaziona ad alcun identificatore di primitiva nello shape. Il campo ERROR riporta: COMPONENT PRIMID not in topological shape; - una geometria ricostruita non appartiene a nessun attributo geometrico di classe, strato, di geometria minima. L’identificatore GEOID di una geometria ricostruita presente nella tabella di composizione non viene referenziato da nessun oggetto di classe, strato e da nessun tratto, evento, sottoarea minimo dell’insieme topologico considerato. Il campo ERROR riporta: Component GEOID not in geometry; pagina 31 di 42 - - una classe, strato tratto, evento, sottoarea referenzia una geometria ricostruita che non esiste. In una classe, strato, geometria minima si riferisce un GEOID assente nella tabella di composizione corrispondente. Il campo ERROR riporta: geometry GEOID not in component. Incongruenza tra una geometria 3D e la corrispondente 2D nel caso degli insiemi topologici 5.6.4Tabelle generate dai controlli sul DBN Tabella ELEMENTSTATEDBN Struttura < SCELEMENNAME, SCELEMTYPE, SFPHYSTRUCTNAME, CARDINALITY> La tabella riporta tutte le strutture fisiche previste dal MI normalizzato del validatore e memorizzate nel DBN. Nel caso di MI Shape_Topo il DBN non contiene più le tabelle dell’insieme topologico in quanto sono state materializzate le geometrie nelle tabelle di classe, strato, tratti, eventi, sottoaree. Nei MI Shape_Flat e SQL_Flat monogeometria il DBN contiene in generale meno tabelle del DBF in quanto le classi con più attributi geometrici e presenti in strutture fisiche separate vengono riunite in una sola struttura fisica normalizzata nel DBN. Lo scopo di questa tabella è quello di fornire le cardinalità delle nuove strutture dati generate utili ad una valutazione dell’incidenza percentuale degli errori generati dai controlli strutturali e dai controlli dei vincoli spaziali. Per ogni struttura fisica si riporta cardinality =0 se la struttura è vuota o erano vuote o inesistenti le strutture dati di generazione nella tabella elemenstateDBF. Nei MI SQL_Flat multigeometria esse coincidono con quelle del DBN. Tabella STRUCTURALCONSTRAINTVIOLATION Struttura <SCCONSTRAINTDESCR, SCLIVSCALA SCELEMNAME, SCELEMTYPE, SCATTRNAME, SCATTRTYPE SFPHYSTRUCTNAME, SFPHYATTRNAME, ERROR, ERRLEV, VALUE, SFPHYID1, SFPHYID2, OBJID1, OBJID2 ERRLEVEL è sempre “E” per tutte le segnalazioni di questa tabella. CONSTRAINTDESCR = Cardinalità. Assenza NULL in attributi concettuali obbligatori o in attributi aggiunti dal MI e definiti obbligatori dal MI. 1. Obbligatorietà degli identificatori ClassID (UUID nel MI SQL_FLAT Oracle multigeometria) delle classi, TopoID (UUID nel MI SQL_FLAT Oracle multigeometria) degli strati, eventid, subregid, segmentID nelle corrispondenti tabelle degli eventi, tratti, sottoaree. Il campo ERROR= Valori nulli nell’object ID; si noti che in questo caso non è possibile identificare il record errato e quindi i campi di identificazione contengono NULL e il campo VALUE contiene per convenzione “#uuid nulli”; 2. Obbligatorietà degli attributi descrittivi e dei ruoli nelle classi e nelle associazioni e dei ruoli negli strati. VALUE = NULL, ERROR = cardinalità minima violata. 2.1 attributi monovalore e ruoli delle classi, strati e associazioni. L’oggetto con errore è identificato tramite il valore di ClassID (UUID) per attributi pagina 32 di 42 monovalore e ruoli di una classe, TopoID(UUID) per i ruoli degli strati, col valore di ClassREF (UUIDref) congiunto a eventid (subregid, segmentID) nelle tabelle per eventi (tratti, sottoaree) e con la coppia <ruolo1, ruolo2> per le associazioni. 2.2 attributi multivalore (anche datatype) delle classi e delle associazioni si segnalano due situazioni di errore sulla tabella multivalore che si differenziano nell’identificazione: - righe con NULL nell’attributo descrittivo (o in uno degli attributi nel datatype). L’identificazione della riga avviene tramite ClassREF (UUIDref) per gli attributi delle classi e tramite la coppia <ruolo1, ruolo2> nel caso di associazione; - inesistenza di un record nella tabella per un oggetto. In questo caso è identificato l’oggetto mancante tramite ClassID (UUID) per gli attributi delle classi e tramite la coppia <ruolo1, ruolo2> nel caso di associazione. 3. Obbligatorietà degli attributi ClassREF (UUIDref nel MI SQL_FLAT Oracle multigeometria) delle tabelle degli attributi multivalore (anche datatype), delle tabelle degli eventi, tratti, sottoaree associate a classi o ad associazioni e obbligatorietà dei ruoli delle tabelle delle associazioni. Il campo ERROR= Valori nulli nei riferimenti a object ID; si noti che in questo caso non è possibile identificare il record errato e quindi i campi di identificazione contengono NULL e il campo VALUE contiene per convenzione “#ref nulli”; CONSTRAINTDESCR = Univocità. Assenza di duplicazione negli attributi concettuali dichiarati primary key e in quelli multivalore anche datatype; inoltre si controlla l’univocità anche sugli identificazione introdotti dai MI. 1. Duplicati negli identificatori ClassID (UUID) per le classi, TopoID(UUID) per gli strati, ERROR= Valori duplicati nell’object ID, VALUE = #ripetizioni UUID. I campi di identificazione riporteranno il valore dell’identificatore duplicato. 2. Duplicati negli identificatori eventid (subregid, segmentID) nelle tabelle degli eventi (tratti, sottoaree). ERROR = UUID degli eventi duplicati (UUID dei tratti duplicato, UUID delle sottoaree duplicati, VALUE = #ripetizioni UUID. I campi di identificazione riporteranno il valore dell’identificatore duplicato. 3. Righe duplicate nella tabella multivalore (anche datatype). ERROR = valori duplicati, VALUE = #duplicati, l’identificazione del record avviene tramite il valore di ClasseREF (UUIDref). 4. Duplicazione della geometria di eventi, tratti, sottoaree. ERROR = eventi con duplicazione geometrica (tratti con duplicazione geometrica, sottoaree con duplicazione geometrica). I campi di identificazione riporteranno il valore dell’identificatore degli eventi, tratti, sottoaree duplicati. 5. Più righe di una tabella di associazione si riferiscono alla stessa coppia di oggetti. ERROR = valori duplicati nei riferimenti all’object ID, VALUE = #duplicati, i campi identificatori contengono gli identificatori dei due ruoli coinvolti. Tabella FKCONSTRAINTVIOLATION Struttura < SCCONSTRAINTDESCR, SCLIVSCALA, SCELEMNAME,SCELEMTYPE,SCATTRNAME,SCATTRTYPE SFPHYSTRUCTNAME,SFPHYATTRNAME, ERROR, ERRLEVEL, VALUE SFPHYID, SFPHYID2, OBJID1, OBJID2> pagina 33 di 42 ERRLEVEL è sempre “E” per tutte le segnalazioni di questa tabella. CONSTRAINTDESCR = chiavi esportate. Queste segnalazioni riguardano i ruoli o gli attributi ClassREF (UUIDref) che non referenziano oggetti esistenti. Per questi errori ERROR = Riferimento a object ID inesistente, 1. Ruoli in classe o strato riportano un identificatore di un oggetto che non esiste nello strato o nella classe referenziata (includendo le classi sue specializzazioni). VALUE contiene l’identificatore non trovato, i campi identificatori riportano l’identificatore dell’oggetto della classe, strato errato. 2. Almeno uno dei due ruoli di un’associazione contiene un identificatore che non esiste nello strato o nella classe referenziata (includendo le classi sue specializzazioni). Questa segnalazione produce due record di diagnostica. VALUE contiene nei due record il valore dei due ruoli, i campi identificatori riportano la coppia dei valori dei due ruoli. 3. L’attributo ClassREF (UUIDref) delle tabelle degli eventi, tratti, sottoaree o delle tabelle multivalore (anche datatype) riporta un identificatore di un oggetto inesistente nella classe (o sue specializzazioni) referenziata. VALUE contiene l’identificatore non trovato, i campi identificatori riportano l’eventid, segmentid, subregid dell’evento, tratto, sottoarea o del multivalore errato. 4. La coppia di attributi che correlano un attributo multivalore (anche datatype) ad una istanza di associazione non trova una corrispondente coppia nell’associazione. VALUE=NULL e i campi identificatori riportano la coppia dei valori errati. CONSTRAINTDESCR = chiavi esportate. Queste segnalazioni riguardano gli attributi con dominio enumerato che contengono un valore inesistente nel dominio. Per questi errori ERROR = Riferimento a codice inesistente, VALUE riporta il valore inesistente I campi identificatori della diagnostica riportano il ClassID degli oggetti col codice errato, l’eventid (segmentid, subregid) dell’evento (tratto, sottoarea) con il codice errato, o il ClassREF nel caso di attributi multivalore (anche datatype) col codice errato. Nel caso delle associazioni i campi identificatori contengono la coppia di ruoli di identificazione dell’associazione. Tabella GEOUMLCONSTRAINTNOTVERIFIED Struttura < SCCONSTRAINTNAME, INFOMESSAGE, CONSTRAINTTYPE> Questa tabella elenca i vincoli spaziali che non sono stati eseguiti in quanto assente l’elemento vincolato o vincolante. Il campo SCCONSTRAINTNAME riporta la descrizione del vincolo non verificato (ad es., GZ_STR.Posizione ( DJ) perOgni GZ_STR.Posizione). INFOMESSAGE segnala se sia assente l’elemento vincolato (D) o quello vincolante (G) e infine CONSTRAINTTYPE riporta il tipo di vincolo (ad es., composedOf, exists). pagina 34 di 42 Tabella GEOMETRICCONSTRAINTVIOLATION Struttura <SCCONSTRAINTNAME, CONSTRAINTTYPE, SCLIVSCALA SCVINCOLATANAME, SCELEMTYPE, SCATTRNAME, SCATTRTYPE, SFPHYSTRUCTNAME, SFPHYATTRNAME, GEOMETRY> Questa tabella contiene una riga per ogni violazione riscontrata di un Vincolo Spaziale GeoUML. SCCONSTRAINTNAME riporta la descrizione del vincolo controllato (ad es., CANALE.Percorso.BND ( IN) unione ND_IDR.Posizione), CONSTRAINTTYPE riporta il tipo di vincolo (ad es., composedOf, exists) e infine GEOMETRY riporta la geometria vincolata errata. pagina 35 di 42 Appendice 1. Installazione, esecuzione e aggiornamento del GeoUMLvalidator 1.1 Requisiti • Installazione di una Java runtime machine JRE versione1.5 o superiore • Sistemi operativi Windows, Unix-like (linux, MacOS10 o superiori, Sun Solaris..) • 50MB liberi ad installazione effettuata per i file temporanei. • Installazione dei sistemi Postgres e PostGIS • Creazione dei database di appoggio • Per la validazione di dataset Oracle è necessario aggiungere al Validator la libreria proprietaria Oracle JDBC (ojdbc14.jar ) scaricabile da: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html Dopo averla scaricata deve essere inserirla nella cartella lib del Validator 1.2 Installazione del GeoUML Validator completo (per la pubblica amministrazione) Dopo aver effettuato il download dal sito spatialdbgroup.polimi.it del file .zip contenente il programma è sufficiente estrarre il contenuto del file in una cartella scelta dall’utente. L’estrazione genera una cartella chiamata GeoUML-Validator contenente il programma, la licenza accettata all’atto del download (GeoUML per soggetti di diritto pubblico.txt) e la licenza da far controfirmare dal soggetto di diritto privato al quale si fornisce il Validator “chiuso” generato dal GeoUML Validator completo (GeoUML validator Chiuso.txt) e la cartella “Report” per la produzione del documento di reportistica degli errori. 1.3 Esecuzione del programma Per avviare il programma eseguire il file GeoUMLvalidator.exe per i sistemi operativi Windows oppure ./GeoUMLvalidator.sh da console /bin/bash o /bin/sh per i sistemi operativi Unix-like (in questo caso è necessario che il file abbia i permessi che rendono l’esecuzione possibile); qualora i tempi di esecuzione siano troppo alti è possibile migliorare le prestazioni del validator, ottimizzando alcuni parametri nei file GeoUMLvalidator.bat (Windows) o GeoUMLvalidator.sh (Unix-like) e utilizzare poi questi file per l’esecuzione. Sebbene nei due file esistano alcuni commenti per l’ottimizzazione si ricorda che tale operazione richiede personale esperto che sappia pagina 36 di 42 valutare correttamente le conseguenze di tali operazioni. Il download del validator genera automaticamente l’icona dell’applicazione nel caso del sistema operativo MacOS10x. 1.4 Creazione dei database di appoggio Dopo aver installato Postgres e PostGIS è necessario creare i database di appoggio in Postgres; si ricorda che i database di appoggio sono due nel caso dei modelli implementativi Shape e uno solo nel caso dei modelli implementativi SQL_Flat (si omette il database di normalizzazione). Si illustrano nel seguito le operazioni da eseguire per la creazione dei database, utilizzando l’interfaccia PgAdmin di Postgres e supponendo di creare due database sullo stesso calcolatore sul quale si è installato il Validator. L’interfaccia PgAdmin propone alla sinistra l’elenco dei server disponibili. Selezionando Localhost (server sul quale si stannno effettuando queste operazioni) con un doppio click, appaiono le voci Database, Tablespace,…. Posizionarsi sulla voce Database, premere tasto destro del mouse e selezionare la voce Nuovo database. Appare la scheda mostrata in figura nella quale va inserito nel campo Nome il nome che assegnate al primo database di appoggio (in figura si assegna il nome DBF, supponendo che sia quello usato per il caricamento dei dati da controllare), selezionato poi nel campo Modello il valore postgis si preme OK. Ripetere la stessa operazione per il secondo database (nell’esempio della figura sarebbe il database d utilizzare per la normalizzazione). Dopo queste due operazioni i due database appariranno nell’elenco dei database esistenti nell’elenco di sinistra di PgAdmin. Attenzione Dato che i database utilizzati per il caricamento e la normalizzazione vengono cancellati e riscritti non si devono utilizzare per queste funzioni dei database dei quali si vuole conservare il contenuto. pagina 37 di 42 1.5 Aggiornamento delle versioni e specifiche Esistono due modalità distinte per allineare il software ad una nuova versione disponibile dello strumento: Validator completo Per utilizzare una nuova versione X.Y del Validator ci sono due possibilità che dipendono dalla versione della specifica importata nel Validator in uso: - se la specifica caricata nel vecchio Validator era stata generata da un Catalogue versione X.* è sufficiente importare la specifica presente nel vecchio Validator nel nuovo Validator; - se la specifica era stata generata da un Catalogue versione (X-1).* allora è necessario rigenerare le specifiche con un Catalogue di versione X.*, esportarle dal Catalogue e importarle nel nuovo Validator. Validator chiuso Come è spiegato nella guida la generazione di un Validator chiuso è un’operazione eseguita dal soggetto di diritto pubblico che ha la responsabilità di cedere il Validator ad un soggetto di diritto privato e avviene utilizzando il Validator completo. Il soggetto privato che sta utilizzando il Validator chiuso e che vuole utilizzare una nuova versione X.Y del Validator chiuso dovrà comportarsi in uno dei due seguenti modi che dipendono dalla versione della specifica importata nel Validator in uso: - se la specifica caricata nel vecchio Validator chiuso era stata generata da un Catalogue versione X.* allora l’aggiornamento potrà essere effettuato direttamente dal soggetto che sta usando il Validator chiuso, effettuando il download dal sito spatialdbgroup.polimi.it dell’aggiornamento del validator chiuso e seguendo le istruzioni presenti nel download; - se la specifica era stata generata da un Catalogue versione (X-1).* allora è necessario che il soggetto che ha generato il precedente Validator chiuso riproduca un nuovo Validator chiuso sulla specifica prodotta da un Catalogue di versione X.*. pagina 38 di 42 Appendice 2. Configurazione e utilizzo di Ireport Ireport è un prodotto open source per la generazione di documenti contenenti dati estratti da database disponibile per il download e l’installazione al sito http://jasperforge.org/projects/ireport. Questa appendice e i template generati per la produzione dei report fanno riferimento alla versione 4.5.0 di Ireport. 2.1 Inclusione delle librerie per accedere alla tecnologia Apache Derby Avviare il programma e selezionare dal menù strumenti la voce Opzioni come mostrato nella figura a destra. Nella scheda che appare successivamente e mostrata sotto si deve selezionare Classpath e poi selezionare il bottone Add Jar, facendo apparire la scheda Aggiungi Jar(s) / path al classpath che appare in basso nella figura seguente. Usando la funzione cerca in posizionarsi nella cartella dove si sono copiati i file del GeoUML validator e poi nella sottocartella lib dove si selezionano i file “derby.jar” e “derbyLocale_it.jar” Infine premere il bottone Apri. Tornati nella precedente scheda premere il bottone OK. 2.2 Connessione al database dei report preconfezionati I report preconfezionati sono due (uno analitico e uno sintetico) sono inclusi nei file di distribuzione del GeoUMLvalidator, ma devono essere inizializzati con l’indicazione di dove si trovi il database Derby creato quando si è attivata la funzione genera database di reportistica del Validator. Posizionarsi nella cartella dove si sono copiati i file del GeoUML validator e poi nella sottocartella report. Aprire con un qualsiasi editor di testo (Blocco Note) il file “DataSourceValidatorReport.xml” (vedi figura seguente). pagina 39 di 42 La riga evidenziata in figura appare preconfigurata al solo fine di esemplificare la sintassi della riga; essa infatti deve essere sostituita con il pathname completo della cartella nella quale sono memorizzati i file del database Derby con i dati da estrarre. Ad esempio, se la cartella di destinazione dei report indicata alla funzione genera database della reportistica fosse stata D:\cartellareport allora la riga evidenziata sarebbe sostituita dalla riga <connectionParameter name=”Url”> <![CDATA[jdbc:derby:D:\cartellareport\reportdb]]> </connectionParameter>. Dopo la sostituzione salvare e chiudere il file. A questo punto ritornare alla scheda iniziale di Ireport, mostrata sotto, e selezionare l’icona evidenziata per la connessione al database. Nella scheda Connections/Datasources che appare selezionare il bottone Import e nella successiva scheda riportata in figura sotto selezionare tramite la funzione Cerca in il file appena salvato al passo precedente. La selezione del bottone Apri comporta l’aggiunta nell’elenco delle connessioni precedenti di una nuova connessione indirizzata al database Derby; se l’apertura fallisce significa che è stato commesso un errore nella modifica del pathname nel file precedente. pagina 40 di 42 A questo punto è conveniente verificare la correttezza della connessione esplicitata, selezionando la connessione appena creata e premendo il bottone Modify. Nella successiva scheda, mostrata nella figura a fianco, premere il bottone prova per testare la connessione; se l’operazione fallisce verificare la correttezza del pathname inserito con l’editor di testo. Se tutto è andato a buon fine ora è possibile creare i documenti. Dalla scheda corrente uscire premendo il bottone Annulla e contestualmente uscire dalla scheda Connections /Datasources premendo il bottone Close. 2.3 Generare dei documenti La generazione dei documenti richiede l’apertura e compilazione del template del report e il caricamento dei dati nel template per produrre il documento. Nel menù principale di Ireport selezionare il menù File alla voce Apri report e nella successiva scheda con la funzione Cerca in posizionarsi nella cartella dove si sono copiati i file del Validator e poi nella sottocartella report nella quale ci si posiziona nell’ulteriore sottocartella sintetici o analitici in base al tipo di report (in figura si è scelto il report sintetico). Compile report Nella cartella selezionare il file reportMasterSintetico.jrxml (oppure il file reportMasterAnalitico.jrxml nel caso dell’analitico). Dopo la selezione appare nella finestra centrale di Ireport (vedi figura a lato) lo schema del report che sarà generato. Selezionare l’icona compile report che predispone il report per il caricamento dei dati. La compilazione genera una diagnostica visibile nella scheda Report Problems windows che appare sotto quella mostrata in figura. Se la generazione è avvenuta con successo si può generare il documento con i dati, eseguendo le due seguenti operazioni: si seleziona nel box della sorgente dati quella per la quale si era creata la connessione in precedenza e poi si preme il bottone Anteprima come indicato in figura. Ireport visualizza il documento in un’altra scheda, mostrata nella figura seguente, dove è possibile visionare le pagine del documento creato. Cambiare figura seguente pagina 41 di 42 Da questa scheda è possibile stampare il documento creato oppure esportarlo in diversi formati, quali ad esempio .RTF, PDF e .ODT. Le due funzionalità sono attivate selezionando le icone poste sopra il report visualizzato: icona dischetto per l’esportazione e l’icona stampante per la stampa. Il documento riporta un’intestazione nella quale si descrivono la specifica di contenuto di riferimento, la DPS utilizzata per la validazione del dataset e i relativi parametri. Entrambi i report estraggono i dati delle singole tabelle della reportistica descritte nella Sezione 5 di questa guida. pagina 42 di 42