Buon giorno a tutti, qualcuno di voi è a conoscenza di un applicativo, anche a riga di comando, o libreria FOSS cross-platform (preferibilmente python, ma anche java, php...) che consenta di gestire metadati applicativi? Esistono, indipendentemente dalla implementazione, degli standard per metadati applicativi GIS, tipo UML?
Con metadati applicativi intendo: - modello dati (schema) in cui le entità descritte siano mappabili su un DB (geo)relazionale (platform-independent) ed eventualmente su classi Java/Python: simile all'ORM, solo che non genero le classi dal database, ma genero schema database E classi dal mio modello dati; - properties e configurazioni utilizzabili da applicativi che fanno uso dei dati modellizzati - possibilità di estendere il metamodello con schemi propri del mondo GIS (es. i grafi) - possibilità di utilizzare gli oggetti del modello tramite scripts per generare codice, sql, documentazione... Ho visto SQLAlchemy, data la complessità non sono ancora riuscito a capire fino a che punto sia possibile estenderne il modello dati, o se un modello dati possa esistere indipendentemente da una istanza DB. La cosa che più si avvicina a quel che ho in mente è un UML modeler scriptabile, che mi consenta di generare files di testo/xml potendo accedere ad una rappresentazione ad oggetti del modello dati che posso manipolare tramite opportuna API. Banalmente, in PHP uno script per copiare solo alcune tabelle da uno schema postGIS ad un'altro potrebbe essere: $model = DataModel::getInstance(); foreach ($entity in $model->$entities) { if (!$entity->isAbstract()) { $tableName = $entity->sqlName(SQL_DIALECT_POSTGIS); outputBuffer->add("insert into \"$out_schema\".\"$tableName\" select * from \"$in_schema\".\"$tableName\";); } } Pensavo in realtà a Python per la possibilità di integrare lo strumento in QGIS, ma uno strumento simile potrebbe funzionare anche come software standalone. Entro nel dettaglio. Il caso d'uso è: abbiamo un database geografico con un centinaio di tabelle, di cui esistono versioni locali e repository di sviluppo e versioni pubbliche (attuali e storiche) che viene editato in MapInfo, immagazzinato in PostGIS (in schemi diversi con diverse funzioni), esportato in shape, visualizzato in MapInfo e QGIS, elaborato in GRASS, e presto pubblicato in MapServer/GeoServer. In futuro spero non remoto vorrei migrare anche l'editing su QGIS. Ovviamente uno strumento di gestione delle configurazioni e del modello dati è fondamentale. Attualmente gestiamo i metadati applicativi con un tool realizzato in MSAccess (il classico prototipo definitivamente provvisorio). Il tool descrive entità, attributi, associazioni, ereditarietà tra entità di un geodatabase in modo sufficientemente astratto dall'implementazione RDBMS/OO; lo realizzammo ai tempi del nostro impegno in GeoTools per cui le entità descritte dovevano essere mappate in Tabelle PostGIS così come in FeatureTypes Java. A entità, attributi e relazioni è possibile attribuire delle PROPERTIES che possono essere gestite a livello applicativo: - settaggi dipendenti dalla piattaforma - nomi compatibili con i diversi formati (es. con shapefile se il nome originale è più lungo di 10 caratteri) - mappatura esatta del tipo in funzione dell'RDBMS in cui si va a generare lo schema - TAGS che raggruppino entità accomunate da operazioni routinarie - ... Vengono inoltre gestiti oggetti specifici all'ambito GIS come i grafi topologici, i route systems, gli attributi segmentati. Ci sono altre caratteristiche non standard per UML o E/R, come i templates - entità astratte con gruppi di attributi funzionalmente correlati che possono essere inseriti in diverse entità, quasi fossero interfaces basate però sui dati anziché sui metodi, con una risultante "ereditarietà multipla" delle tabelle. Tutte queste informazioni sono attualmente salvate in tabelle, ma potrebbero tranquillamente stare in un XML, ed esprimono un modello dati usando appunto questa specie di accrocchio tra UML ed E/R. Attraverso una serie di classi e procedure, il tool consente, partendo dal modello dati, di: - generare lo schema (le create table) in MapInfo, PostGIS e volendo in altri DB - generare un file di configurazione per il tool di edit del geodatabase (attualmente in MapInfo). In prospettiva, generare analoghe configurazioni per plugins QGIS. Per esempio, il tool di modifica di un grafo deve sapere, per ogni grafo, quali sono le tabelle che implementano archi e nodi, e in quali associazioni sono memorizzate le relazioni topologiche nodo-da e nodo-a. Domani questa informazione potrebbe essere spostata in stored procedures PostGIS, sempre generate automaticamente dal tool. - generare script ad hoc: caricamento ed export con OGR2OGR, estrazione, validazione, creazione di schemi con opzioni differenti (check constraints on/off ad esempio)... Esempio: se definisco una regola di integrità nel modello dati, posso poi implementarla (generarla automaticamente) come: - file di configurazione di un plugin su GIS desktop che, alla modifica di un record, verifica che la validazione passi; in alternativa, codice python incluso stesso plugin; - generazione di un metodo validate() per una classe generata da ORM; - una alter table ... add contraint ... check in PostGIS - una create view errori_tabella as select ... WHERE condizione_di_errore in PostGIS - un gestore evento javascript onSubmit() per un form su webGIS ... Successivamente vorrei estendere il modello con metadati applicativi di visualizzazione (integrazione con SLD), i cataloghi e metadati di istanza (Dublin Core ad esempio). Naturalmente vorrei portare avanti lo sviluppo come software GFOSS. Attendo qualche feedback, rimango a disposizione per eventuali chiarimenti e scusate per la lunghezza del post. Sig _____________ PRIVACY Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE). PRIVACY Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE). -- This email was Anti Virus checked by Astaro Security Gateway. http://www.amat-mi.it _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 518 iscritti al 3.6.2011