Appariement de graphes de réseau avec PostGIS VincentPicavetMakinaCorpus OGRS2009
Vincent Picavet / Makina Corpus vincent.picavet@makina-corpus.com Ingénieur Systèmes d'information Géographique Contributeur PostGIS SSLL Française ~ 50 personnes SIG Outils collaboratifs Business Intelligence Système VincentPicavetMakinaCorpus OGRS2009
Contexte Mission actuelle chez le client X, en recherche & développement du domaine géomatique Métier utilisant la cartographie du terrain (exemple : taxis, Pages Jaunes, transport routier, DDE ) Expertise PostgreSQL / PostGIS VincentPicavetMakinaCorpus OGRS2009
PostgreSQL Base de données relationnelle Libre (BSD) Nombreuses fonctionnalités avancées (MVCC, Contraintes, Triggers, CTE, PITR, HOT, Full-Text search ) Langages côté serveur (Pl/PgSQL, Python, Java, Perl, LOLcode) CANIHAZCOUNT(*) FROMFISHES? Adaptabilité (embarqué Data Warehouse) VincentPicavetMakinaCorpus OGRS2009
PostGIS Cartouche spatial de PostgreSQL Types géométriques Index spatiaux Opérateurs et fonctions d'analyse spatiale A venir : rasters, geodésique VincentPicavetMakinaCorpus OGRS2009
Problèmatique Client X : besoin info géographique pour le métier Graphes de réseaux routiers Données métier associées à ces graphes Données initiales 2004 Evolution en parallèle pendant 4 ans Désynchronisation des données Same same,butdifferent VincentPicavetMakinaCorpus OGRS2009
Problèmatique VincentPicavetMakinaCorpus OGRS2009
Objectif Resynchroniser les données «recoller» les graphes Réassocier et/ou reconstruire les données métier Construire un processus de mise à jour des données Rendre ce process automatique Mises à jour systèmatiques VincentPicavetMakinaCorpus OGRS2009
VincentPicavetMakinaCorpus OGRS2009
Traitements Méthodologie des traitements effectués (1) (2) (3) (4) (5) (6) (7) (8) Chargement données de référence Chargement données métier Création du modèle d'entrée d'appariement Appariement des graphes (noeuds, voies, tronçons) par méthodes sémantiques, topologiques, et géométriques. Correspondances des données métier Recréation de données métier Création de modèle de sortie Export du modèle de sortie VincentPicavetMakinaCorpus OGRS2009
Méthodes sémantiques Basées sur la toponymie Traitement de texte Correspondance des intersections (sémantique et topologique) er ôti ric l'ab e ed Ru lle au G e ld a r né gé u d e Ru ral né é eg Ru alle G de er oti ric l'ab de ue en Av Voies de noms proches Rue du général de Gaulle Rue général de Galle Rue de l'abri côtier avenue de l'abricotier VincentPicavetMakinaCorpus OGRS2009
Méthodes topologiques Propagation de l'appariement noeuds Signatures locales des noeuds noeuds 043260981234 043260981234 Plus courts chemins tronçons VincentPicavetMakinaCorpus OGRS2009
Méthodes géométriques Points «superposés» Avec des gardes fous Tronçons de même géométrie problèmatique de l'égalité de géométrie Voies sur les tronçons de même géométrie Méthodes efficaces sur réseaux très proches Source d'erreurs si désynchronisation VincentPicavetMakinaCorpus OGRS2009
Données : modélisation des graphes VincentPicavetMakinaCorpus OGRS2009
Données : modèle TODO : Screenshot du modèle (si validation) VincentPicavetMakinaCorpus OGRS2009
Résultats Périmètre : 2004 2008 : 70% des tronçons 93% des données métier 2008 2009 : 70% de la population française 2700 communes 99% des tronçons 99.95% des données métier Moins de différence des réseaux Travail de nettoyage sur les données métier VincentPicavetMakinaCorpus OGRS2009
Résultats VincentPicavetMakinaCorpus OGRS2009
VincentPicavetMakinaCorpus OGRS2009
VincentPicavetMakinaCorpus OGRS2009
Des chiffres Données ~ 50 Tables + tables temporaires + tables de controle et stats Entre quelques Mo et quelques Go Entre 1500 et > 10M enregistrements ~ 30 champs de géométrie Volume total : ~ 150Go en fin de traitement 30K lignes SQL 3000 requêtes 6000 lignes Python VincentPicavetMakinaCorpus OGRS2009
Typologie d'utilisation de BDD «ELT» : Extract, Load, Transform Traitements longs et lourds Chaine de production globale ~ 20j Appariement : 5j Traitements dans Postgres + Postgis + quelques outils externes Non utilisés : Gestion de droits Accès conccurentiels Réplication VincentPicavetMakinaCorpus OGRS2009
Environnement Serveurs windows Clients windows Deux serveurs de test et prod Dimensionnement large Avantage libre : serveurs de dev en local Développement PgAdmin III Editeurs classiques SVN Python + psycopg2 VincentPicavetMakinaCorpus OGRS2009
Outils : intégration et exports Shp2pgsql, pgsql2shp & ogr2ogr Intégration des données géographiques de référence Exports de la géographie en fin de process BCP Sybase PostgreSQL Talend SDI Données métier Sybase vers PostgreSQL Postgres vers Sybase VincentPicavetMakinaCorpus OGRS2009
Outils : modélisation et contrôle Modélisation : PowerAMC Lié à Sybase En amont : conception En aval : rétroingénierie pour controle Visualisation Udig GvSIG Mapinfo (exports SHP) Mapinfo 10 (PostGIS) VincentPicavetMakinaCorpus OGRS2009
Difficultés rencontrées Utilisation ELT Transactions longues Cache de requêtes inefficace Gestion manuelle indexes, structure, maintenance (vacuum, analyze) Compromis modularité / généricité / performances Optimisation Paramétrage serveur Tuning requêtes Coût (temps, matériel) environnement de test réél VincentPicavetMakinaCorpus OGRS2009
Directions futures Industrialisation Optimisation Passage sous environnement UNIX Intégration des outils externes sous forme de modules PostgreSQL/PostGIS Changement des entrées / sorties Généralisation de PostgreSQL/PostGIS VincentPicavetMakinaCorpus OGRS2009
Conclusion Projet atypique Bons résultats algorithmiques Bons résultats techniques Montée en compétence Volonté de généraliser l'utilisation de PG Reversement au libre? VincentPicavetMakinaCorpus OGRS2009
Questions? Vincent Picavet vincent.pro@picavet.info Makina Corpus www.makina-corpus.com contact@makina-corpus.com Tel : 01 44 82 00 80 VincentPicavetMakinaCorpus OGRS2009