osm2sqlite

Description

Il s’agit d’un nouveau développement, toujours en C++, d’une série de classes permettant l’import des flux XML d’OSM dans une base locale. Les fonctionnalités attendues sont :

  • la lecture de fichiers planet et diffs ;
  • le stockage dans une base de données locale ;
  • des fonctions « spatiales » (index spatiaux, projections) ;
  • un code « portable » sur différents environnements (Windows, Linux, etc.)

Les librairies

Pour éviter de réinventer la roue, voici les librairies existantes sur lesquelles s’appuie ce développement :

The Expat XML Parser
Expat est la librarie d’un parseur XML écrite en C. C’est un parseur orienté flux dans lequel une application enregistre des gestionnaires pour les éléments que le parseur peut rencontrer dans le document XML (comme une ouverture de tag). L’un des intérêts de cette librairie est sa légèreté et surtout son fonctionnement sur les flux, ce qui évite de charger en mémoire tout le document XML avant de commencer l’analyse.
SpatiaLite 2.3.1 a complete Spatial DBMS in a nutshell
Il s’agit de la librairie d’une base de données spatiale. Elle-même regroupe les fonctionnalités de plusieurs librairies dont :

  • SQLite : un moteur de base de données (sans serveur) ;
  • Geos : apporte le support du jeu des spécifications OpenGis® au niveau des requêtes SQL ;
  • Proj.4 : permet les projections et autres changements de repères géographiques.

Elle permet aussi l’ajout d’index spatiaux sur les éléments géométriques de la base.

Le code source

Il est sous licence LGPLv3 qui n’est pas la meilleure aux yeux de la Free Software Foundation, Inc., mais comme elle plutôt faite pour les librairies, je l’adopte.

Le mieux, c’est de retrouver tout le code sur GitHub à l’adresse : http://github.com/Marcussacapuces91/LibOsm

Par contre, je ne fournis pas le make file. Il faudra le rédiger vous-même suivant votre environnement de développement.

Il vous faudra aussi le fichier init_spatialite-2.3.sql disponible sur le site de SpatiaLite pour initialiser la base de données.

Le modèle de données

Afin de pouvoir utiliser les tables efficacement, il est intéressant de connaitre le modèle de données (le schéma) de la base de données.

On retrouve les principaux éléments d’OSM sous forme de tables, en particulier :
  • Node (liste des nœuds) ;
  • Way
  • Relation
  • Changeset

Ensuite, j’ai « factorisé » les User (id et nom utilisateur) et les Tags afin d’éviter de multiplier les références dans chaque enregistrement des tables ci-dessus.

Ce contenu a été publié dans Non classé, avec comme mot(s)-clé(s) , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>