Hello,

Recemment il y a eu des discussions sur la mailing liste et lors de la reunion 
a La Cantine a propos d outils permettant de suivre les modifs sur la base OSM.
Il a aussi ete evoque plusieurs fois un systeme de parrainage pour les nouveaux 
contributeurs a OSM.

Ce soir je me suis donc penché un petit peu sur la question en prenant ces deux 
aspects la en compte et j ai fait sous Kubuntu 11.04 un petit proto en C++ d 
outil qui scrute les minutes diffs en vue de reperer les modifs faites par des 
utilisateurs inscrit depuis moins d un mois.

Le proto s appuie sur les libs suivantes : 

+ libcurl
+ zlib
+ gzstream
+ expat


Voici le principe global.
Le script telecharge les minutes diff une par une ( libcurl ) . Chaque minute 
diff telechargee est decompressee ( zlib + gzstream ) passée a un parser XML 
SAX ( base sur expat ) qui envoie lui meme les elements XML, c est a dire 
balise start/end et attributs, a une liste d analyseurs.

Pour le proto j ai developpe un petit analyseur qui recupere les attributs uid 
et user a chaque fois qu ils existent. Si l uid est non nul et que user n est 
pas la string vide l analyseur cherche dans sa table interne si ce user a deja 
ete rencontre.
Si ce n est pas le cas il telecharge la page profile de l utilisateur ( par 
exemple http://www.openstreetmap.org/user/SteveC ), la parse sommairement pour 
extraire la date d inscription  et calcule ensuite la difference temps entre la 
date courante et la date d inscritption.
Si l utilisateur est inscrit depuis moins d un moins il est ajoute au fichier 
log new_user.txt ( cf piece jointe ) 


Remarque:
pour recuperer les minutes diff je poll le fichier state.txt du 
minute-replicate pour savoir quand 
une nouvelle minute-diff est dispo ( je multiplie le delai d attente par 2 a 
chaque fois que le sequence number est inchange pour eviter d 
envoyer plein de requetes inutiles au serveur). A partir du sequence number je 
determine l URL du fichier minute-diff a telecharger.

Etant donne qu il est deja "tot" et que je bosse dans a peine une heure je m 
arrete la pour dormir un peu et je fournis les sources en l etat pour ceux que 
ca pourrait interesser, avec un script bourrin pour la compil ( j ai la flemme 
d adapter a cette heure la mon makefile autogenerant specifique a mon 
environnement de dev perso )
Comme ameliorations faciles a apporter:
+ on pourrait dumper les infos users dans une base sqlite de maniere a ne faire 
les requetes user qu une seule fois.
+ De meme on pourrait dumper le dernier sequencenumber des minutes diff avant 
arret du soft de maniere a repndre a partir de la au prochain redemarrage.
+ On pourrait appeler osmosis sur les minute-diff telecharges afin de filter 
sur un polygone de maniere a ne monitorer qu une zone geographique bien definie 
au lieu du monde entier
+ verifier en plus si les changeset des nouveaux users contiennent des ways 
tagges building yes afin de detecter un potentiel import bati fait par quelqu 
un trop nouveau pour etre au courant des procedures qualitees

+ certains d autres trucs auxquels je suis trop claqué pour penser pour l 
instant

Il est bien sur aussi possible definir d autres sortes d analyseurs plus 
complexes accoles a la base de donnees SQLIte/Spatialite de Marc Sibert par 
exemple

Toute les remarques sont les bienvenues sachant que ceci est un proto fait a l 
arrach et pas du tout optimise

Bonne nuit
Julien
Contributors since less than one month : 
"vickeyvivek" : 11 October 2011
"BSR" : 11 October 2011
"szech" : 9 October 2011

Attachment: sources.tar.gz
Description: GNU Zip compressed data

_______________________________________________
dev-fr mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev-fr

Répondre à