Hello,
Comme indique dans mon mail precedent je developpe depuis quelques temps un
framework d analyse de diffs OSM.
Le but de ce framework est de developper des analyses maisons a faire tourner a
la maison sans avoir besoin d utiliser une infrastructure "lourde" a base de
logiciels SIG et base OSM.
Les possibilites sont evidemment moindres mais je pense que cela peut permette
d avoir un rapport interet/complexite assez interessant.
Le framework est developpe en C++ et fournit une sorte d infrastructure et de
services autour des diffs de maniere a ce que les personnes souhaitant realiser
des analyses ne se concentre que sur elles.
Les analyseurs sont des librairies C++ chargees par le framework et beneficiant
des ses services.
Via un fichier de conf il est possible de choisir quels modules charger et
instancier, configurer les modules et le framework.
Le framework s occupe de gerer le telechargement des diffs ( soit en direct
soit depuis une diff arbitraire ), fournit le parsing du contenu XML, fournit
un acces C++ a l API OSM, une representation C++ des objets OSM ( changeset,
nodes, ways, relations ), un cache permettant de stocker des donnees en local (
cela evite de trop taper sur l API ), charge les modules etc.
Du point de vue accroche des modules plusieurs niveaux d abstractions sont
actuellement possible :
SAX : le module recoit les evenements SAX lors du parsing du fichier XML du diff
DOM : le module recoit une representation C++ de l aborescence XML
CPP : le module recoit les representations C++ des objets OSM ( node, way
relations + le type de modification)
Je compte rajouter de nouveaux niveaux d abstractions ( par exemple une
representation plus fine/detaillee de ce qui a ete modifie) ainsi que la
possibilite de cascader des modules pour avoir des analyses plus modulaires.
Pour l instant j ai developpe un module qui permet de detecter les utilisateurs
inscrits depuis moins de 3 mois, un module qui effectue le suivi des objets d
un utilisateur ( cf mon mail precedent) , des modules de demo pour les 3
niveaux d abstraction actuel.
Je travaille aussi sur un module qui permette de generer 3 fichiers OSM
differents pour les objets crees/modifies/supprimes pendant un intervalle de
temps donne.
Le framewok etant un executable il est possible de le lancer sur sa machine
perso, avec des parametres qui peuvent changer ( par exemple pour faire des
analyses live ou dans le passe our sur des periodes differentes avec des
parametres differents) et donc de choisir exactement ce que l on veut faire.
Pour l instant je me suis plus consacre au dev qu a la doc donc n hesitez pas
si vous avez des questions ou des suggestions sur l outil, son architecture,
limitations, applications possibles etc
J espere que cela pourra peut etre servir a quelqu un
Julien
_______________________________________________
dev-fr mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev-fr