1 Une plate-forme interopérable 4 décembre 2007 Plan Vers une nouvelle plate-forme: GeOxygene L’expérience des plates-formes au COGIT. Architecture de GeOxygene Organisation générale de la plate-forme et des outils. Développement d’applications avec GeOxygene Exemples d’applications Open source Prise en main 2 Plates-formes : l’expérience COGIT Durant les 15 dernières années, 3 plates-formes ont été développées au laboratoire COGIT : Généralisation : PlaGe [Lecordix et al, 1997] Généralisation peu contextuelle, développée en ADA Stratège [Ruas 1998] Généralisation contextuelle , basée sur un système expert, développé en Le-Lisp Depuis 1999 : Lamps2 (Laser Scan) puis Clarity Mise à jour et appariement : GéO2 [Raynal et al, 1995] Développée sur le SGBDOO O2, principalement en O2C (un C/C++ propriétaire) Depuis 2001 : GeOxygene (Oxygene) 3 Plates-formes : l’expérience COGIT 4 Le développement d’algorithmes de recherche au laboratoire COGIT a donc dû faire face : Une grande diversité de systèmes ne communiquant pas entre eux : le même algorithme a été développé dans les différentes platesformes. Des développements non centralisés, non documentés et bien souvent non maintenus : le même algorithme a été développé plusieurs fois. Les systèmes utilisés en production ou à l’extérieur de l’IGN sont généralement des logiciels SIG commerciaux : le reversement des applications de recherche est souvent très difficile (voire impossible). Vers une nouvelle plate-forme… Afin de surmonter ces problèmes, de nombreuses technologies en génie logiciel ont émergées : des langages de programmation standardisés, extensibles, orientés objet et munis de capacités de communication sur les réseaux comme Internet (exemple :Java), des techniques de modélisation basées sur la notion de composants logiciels réutilisables (exemple : UML), des SGBD objet-relationnel permettant le stockage et l’interrogation de données géographiques (Oracle, PostgreSQL/PostGIS) 5 Vers une nouvelle plate-forme… Implémentation d’une nouvelle plate-forme interopérable : Fournissant aux utilisateurs un cadre ouvert pour le développement d’applications de recherche. Permettant la centralisation des codes, de leur documentation et une maintenance aisée. 6 Architecture Vers une nouvelle plate-forme: GeOxygene L’expérience des plates-formes au COGIT. Architecture de GeOxygene Organisation générale de la plate-forme et des outils. Développement d’applications avec GeOxygene Exemples d’applications Open source Prise en main 7 8 Architecture Réseau OGC, ISO, Oracle, ... Schéma objet Mapping OJB (Castor) SGBD Oracle PostgreSQL Couche Spatiale Oracle Spatial PostGIS Bibliothèques (packages Java) • Documentation (Javadoc) • CVS (Concurrent Versioning) Traducteur / chargeur FME : chargeur Shape Oracle, chargeur Shape PostGIS 9 Architecture : modèle Réseau OGC, ISO, Oracle, ... Schéma objet Un modèle objet extensible en accord avec l’OGC et les projets de l’ISO/TC 211 (en charge de l’Information Géographique / Géomatique) Géométrie et topologie (ISO 19107) GM_Object et TP_Object General feature model (ISO 19109) FT_Feature Métadonnées (ISO 19115) Référencement spatial basé sur les coordonnées (ISO 19111) Les utilisateurs implémentent leurs schémas d’application afin de satisfaire les conditions liées au schéma principal. Implémenté en Java. Organisation générale du modèle ISO 19115 Métadonnées ISO 19107 Spatiale ISO 19109 Implémentation partielle Dictionnaire Schéma d’application ISO 19111 SRC 10 Organisation générale du modèle 11 ISO 19107 OGC (feature geometry) / ISO 19107 : diagramme des classes géométriques Organisation générale du modèle Métadonnées Modèle OGC et quelques extensions : classes géographiques 12 13 Architecture : SGBD Réseau OGC, ISO, Oracle, ... Schéma objet SGBD Oracle PostgreSQL Couche spatiale Oracle Spatial PostGIS Les données sont stockées dans une SGBD relationnel (SGBDR) afin d’assurer un accès rapide et fiable au système. Ce SGBD est soit Oracle soit PostgreSQL. La géométrie est stockée dans les extensions spatiales de ces SGBD : Oracle Spatial ou PostGIS. Architecture : mapping 14 Réseau OGC, ISO, Oracle, ... Schéma objet Mapping OJB SGBD Oracle PostgreSQL Couche spatiale Oracle Spatial PostGIS Les utilisateurs n’ont pas à s’inquiéter des traitements en SQL : ils modélisent leurs applications en UML et programment en Java. Le pont (mapping) entre les environnements objet et relationnel est réalisé grâce à un logiciel open source : OJB (Object Relationnal Bridge). Toutes les informations liées au mapping sont stockées dans des fichiers XML. Architecture : bibliothèques 15 Réseau OGC, ISO, Oracle, ... Schéma objet Mapping OJB SGBD Oracle PostgreSQL Bibliothèques (packages Java) Couche spatiale Oracle Spatial PostGIS Afin de préserver l’indépendance des développements, les processus géographiques sont codés et stockés dans des librairies séparées. Les bibliothèques peuvent avoir différentes sources (web, anciens développements du laboratoire), sont codés dans différents langages (C, C++, Fortran, Ada) et peuvent être interfacées avec le langage Java grâce à JNI. Architecture : outils 16 Réseau OGC, ISO, Oracle, ... Schéma objet Mapping OJB SGBD Oracle PostgreSQL Bibliothèques (packages Java) • Documentation (Javadoc) Couche spatiale Oracle Spatial PostGIS La documentation est automatiquement générée à partir du code et partagé sur un serveur web entre les différents utilisateurs. Architecture : outils 17 Réseau OGC, ISO, Oracle, ... Schéma objet Mapping OJB SGBD Oracle PostgreSQL Couche spatiale Oracle Spatial PostGIS Bibliothèques (packages Java) • Documentation (Javadoc) • CVS (Concurrent Versioning) Le code est systématiquement partagé sur un serveur grâce au CVS (Concurrent Versioning System). Architecture : outils 18 Réseau OGC, ISO, Oracle, ... Schéma objet Mapping OJB SGBD Oracle PostgreSQL Couche spatiale Oracle Spatial PostGIS Bibliothèques (packages Java) • Documentation (Javadoc) • CVS (Concurrent Versioning) Données géographiques Traducteur / Chargeur FME : chargeur Shape Oracle, chargeur Shape PostGIS Ou chargeur PostGIS intégré : shp2pgsql Les données géographiques sont chargées et converties grâce à un chargeur de données géographiques (FME) ou directement grâce à un chargeur PostGIS intégré (shp2pgsql). Développement d’applications Vers une nouvelle plate-forme: GeOxygene L’expérience des plates-formes au COGIT. Architecture de GeOxygene Organisation générale de la plate-forme et des outils. Développement d’applications avec GeOxygene Exemples d’applications Open source Prise en main 19 Développement d’applications Troncon_route GM_Object type : string dept : string num_route : string categorie : string nom_route : string etat_cha : string importance : string nb_voies : string normalisee : string pos_sol : string toponyme : string FT_Feature TP_Object Code Java Modèle objet Visualisation SGBD Mapping 20 Développement d’applications Troncon_route GM_Object type : string dept : string num_route : string categorie : string nom_route : string etat_cha : string importance : string nb_voies : string normalisee : string pos_sol : string toponyme : string FT_Feature TP_Object Code Java Modèle objet Visualisation SGBD Mapping 21 Développement d’applications Troncon_route GM_Object type : string dept : string num_route : string categorie : string nom_route : string etat_cha : string importance : string nb_voies : string normalisee : string pos_sol : string toponyme : string FT_Feature TP_Object Code Java Modèle objet Visualisation SGBD Mapping 22 Développement d’applications Troncon_route GM_Object type : string dept : string num_route : string categorie : string nom_route : string etat_cha : string importance : string nb_voies : string normalisee : string pos_sol : string toponyme : string FT_Feature TP_Object Code Java Modèle objet Visualisation SGBD Mapping 23 Développement d’applications Programme Java Schéma objet SGBDR Couche spatiale // débuter une transaction db.begin(); … // Chargement d’objets géographiques ... features1 =db.load(...); features2 =db.load(...); ... // Calcul d’intersection entre objets ... intersection =features1.intersection(features2); ... // commit de la transaction db.commit(); 24 Exemples d’applications Vers une nouvelle plate-forme: GeOxygene L’expérience des plates-formes au COGIT. Architecture de GeOxygene Organisation générale de la plate-forme et des outils. Développement d’applications avec GeOxygene Exemples d’applications Open source Prise en main 25 Exemples d’applications Différentes couches d’applications Noyau Visualisation de données Navigateur d’objets Création de structures (java2sql, sql2java, mapping) Première couche applicative : les applications « bases » Opérateurs spatiaux : angle, vecteur, calculs géométriques Carte topologique, graphe Triangulation – utilisation de code existant – Seconde couche applicative : les applications experts Appariement 3D Manipulation de schémas … 26 Exemples d’applications : noyau Visualisateur : JUMP/OpenJUMP 27 Exemples d’applications : noyau Navigateur d’objets (browser) 28 29 Exemples d’applications « bases » Triangulation de Delaunay Exemples d’applications experts Applications experts Appariement 3D Manipulation de schémas Éditeur de métadonnées : création d’un jeu et de ses métadonnées Catalogue de traitements Système de déploiement de méthodes sous forme de services Ontologies Couleur Système de spécifications de cartes … 30 Exemples d’applications experts Appariement automatique du réseau routier 31 Exemples d’applications experts Schéma utilisateur (en transformation) Échantillons de données reflétant le schéma utilisateur Exploration de schéma et transformation Amélioration de l’utilisabilité des jeux de données géographiques par transformations interactives des schémas [Balley] 32 Open source Vers une nouvelle plate-forme: GeOxygene L’expérience des plates-formes au COGIT. Architecture de GeOxygene Organisation générale de la plate-forme et des outils. Développement d’applications avec GeOxygene Exemples d’applications Open source Prise en main 33 Open source : choix de licence Veut-on connaître les modifications (code, date) ? GPL, LGPL Sinon Apache, … Souhaite-t-on que quelqu’un puisse utiliser le logiciel avec ses propres logiciels ? LGPL Sinon GPL Souhaite-t-on compiler ce logiciel avec des logiciels non libres ? Oui : LGPL Non : GPL 34 Open source 35 http://oxygene-project.sourceforge.net Open source : les dépôts Release 1.0 Dépôt du noyau de GeOxygene (mai 2005) Release 1.1 Correction de bugs mineurs (juin 2006) Release 1.2 Dépôt des applications « bases » (août 2007) Release 2.0 Dépôt de l’appariement (fin 2007 – début 2008) Release 2.x Autres dépôts à organiser (3D, …) Projet ANR : GeOpenSim - Module Open Source pour l'analyse des Tissus Urbains 36 37 Visualisateur JUMP/OpenJUMP Open source : les dépôts Ontologies Appariement de données géographiques Applications d’évaluation des risques Module 3D Carte topologique, opérateurs spatiaux, triangulation Catalogue de traitements Manipulation de schémas Système de spécifications de cartes Editeur de métadonnées Couleur Contraste Noyau de GeOxygene (ISO/OGC) Prise en main Vers une nouvelle plate-forme: GeOxygene L’expérience des plates-formes au COGIT. Architecture de GeOxygene Organisation générale de la plate-forme et des outils. Développement d’applications avec GeOxygene Exemples d’applications Open source Prise en main 38 Prise en main chargement et affichage 39