L'API pourrait effectivement faire un petit peu plus de contrôle avant de passer ça à la base de données.
Les contrôles auxquels j'ai pensé : - ce way comporte-t-il au moins 2 noeuds... différents - ce way repasse-t-il par le même noeud (sauf noeud identique en début et fin) - existe-t-il un noeud aux même coordonnées que celui que l'on veut créer (ou modifier d'ailleurs) Les deux premiers contrôles ne nécessitent aucun appel à la bdd, c'est juste du code ruby à rajouter. Le troisième nécessite d'interroger la base... Le 31 août 2012 16:41, Stéphane Péneau <stephane.pen...@wanadoo.fr> a écrit : > Merci pour ces infos, j'y vois un peu plus clair. > > Effectivement, peut-être que Josm pourrait gérer ces cas un peu mieux, mais > je me dis, peut-être à tord, que le serveur aussi pourrait faire quelque > chose s'il reçoit à la suite d'un changeset non fermé, un nouveau changeset > sur la même zone, avec des points à des coordonnées identiques. > > La première fois que ce genre de mésaventure m'est arrivé, c'était suite à > une coupure de courant pendant un upload. Il n'y a pas eu de souci du côté > de l'ordi puisque c'était un portable, mais j'ai bien évidemment perdu la > connexion à internet le temps que la box se resynchronise. J'ai bêtement > pensé que l'upload reprendrait son cours là où il s'était arrêté, ou au > pire, reprendrait depuis le début. > Erreur !! > > Et comme il s'agissait de mon premier import du cadastre, j'ai eu quelques > sueurs froides, et passé pas mal de temps à tout nettoyer. > > Stéphane > > > Le 31/08/2012 16:05, Pieren a écrit : > >> 2012/8/31 Vincent Privat <vincent.pri...@gmail.com>: >>> >>> A la question "pourquoi" c'est facile, les changesets ne sont pas >>> atomiques: >>> http://wiki.openstreetmap.org/wiki/API_v0.6#Changesets_2 >> >> Euh, En fait, ça ne répond pas à la question. Un changeset n'est pas >> une transaction. C'est vrai que ça n'est pas atomique. Mais chaque PUT >> vers le serveur est atomique. Ce qui manque, ce sont des commit en >> double phases (2PC) ou autres techniques pour la création de nouveaux >> objets (pour les updates, il y a l' "optimistic lock" qui gère les >> éventuels conflits de versions). >> >> Sans entrer dans les détails, le protocole entre ta machine et le >> serveur OSM est ultra-simple. Ce problème de dupplication ne peut >> arriver que pour de nouveaux éléments ajoutés dans ton éditeur : >> lorsque tu crées un nouvel noeud par exemple, JOSM lui assigne un ID >> négatif temporaire (l'OSM_ID, c.a.d un numéro identifiant unique pour >> chaque élément dans la base). Quand tu fais "upload", il envoie un >> message vers le seveur avec cet ID négatif (que le serveur ignore >> superbement) et reçoit en retour un message du serveur qui donne >> l'OSM-ID officiel dans la base de données. Quand tout se passe bien, >> JOSM continue de fonctionner avec l'ID officiel. Si ça se passe mal, >> c'est soit que la réponse du serveur est trop tardive, ou que >> l'utlisateur a interrompu l'upload (abort, cancel) ou que un truc >> s'est mal passé à l'intérieur du serveur OSM (c'est alors un bug, >> heureusement, ça arrive de moins en moins souvent). JOSM conserve >> alors l'ID négatif temporaire pour ce noeud puisqu'il n'a pas reçu la >> réponse correcte du serveur. Si tu relances l'upload, JOSM considère >> que ce noeud est encore nouveau et répète le même message de création >> vers la base. C'est comme ça qu'on peut se retrouver avec deux ou >> trois fois le même élément dans la base. >> Pour éviter ce genre de désagréments, il faut faire un download quand >> l'upload se passe mal. Comme ça, on voit ce qui est effectivement dans >> la base de données. En lançant une vérification avec Validator, on >> détectera les noeuds et ways superposés (mais peut-être pas les >> nouvelles relations). Bien sûr, ce que je viens de dire pourrait aussi >> être fait automatiquement par JOSM. Ca viendra peut-être un jour. >> >> >> Pieren >> >> _______________________________________________ >> Talk-fr mailing list >> Talk-fr@openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-fr > > > > _______________________________________________ > Talk-fr mailing list > Talk-fr@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-fr -- Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest _______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr