Résoudre les conflits

Introduction

Parfois lorsque vous travaillez sur JOSM et que vous voulez envoyer sur le serveur (upload) les modifications de la base liées à vos éditions, vous obtenez ce message inquiétant :

image

Il vous indique que l’envoi n’a pas fonctionné parce qu’un autre utilisateur a envoyé ses éditions qui concernent certains des objets que vous avez également édités. Le message précise que vous avez téléchargé la zone en premier donc vous possédez la version 1, mais le serveur a une version 2 plus récente. Plus spécifiquement, le nœud 2 549 547 834 est la source du problème. C’est cet objet qui a été modifié par quelqu’un d’autre entre le moment où vous l’avez téléchargé et le moment où vous avez voulu envoyer vos modifications.

Cette boîte de dialogue est spécifique aux conflits dans JOSM. Dans ce logiciel, un conflit correspond à une incapacité du serveur OSM à déterminer quelles éditions envoyées doivent être considérées pour mettre à jour la base de données. Fondamentalement, le serveur OSM a reçu des éditions qui ont modifié des objets identiques ou similaires et JOSM ne sait lesquelles doivent être choisies.

image

Les sujets abordés dans ce chapitre:

  1. Notion de conflits dans OSM
  2. Résolution des conflits
  3. Bonnes pratiques pour éviter les conflits

  4. Notion de conflits dans OSM

Lorsque vous éditez dans JOSM, vous êtes en train d’éditer une copie, ou un clone, de la carte principale. JOSM charge des objets OSM depuis le serveur principal et les garde en mémoire sur votre ordinateur. Vous rencontrez des conflits lorsque vous envoyez sur le serveur principal des éléments modifiés, ajoutés ou supprimés sur votre carte que quelqu’un d’autre a également édités dans l’intervalle entre votre téléchargement et l’envoi de vos modifications.

En effet, dans la mesure où vous travaillez sur une copie locale d’OSM sur votre ordinateur, d’autres utilisateurs peuvent aussi récupérer, éditer et remonter des donnés vers le serveur OSM (upload) concernant les mêmes objets OSM que vous. Vous n’avez pas la possession des objets sur lesquels vous êtes en train de travailler : vous les partagez. Ainsi, lorsque des objets que l’autre utilisateur et vous même avez envoyés sur le serveur principal à des moments différents, celui-ci ne sait pas quel envoi doit être conservé et utilisé et vous informe donc sur ce conflit. JOSM est capable de résoudre seul certains conflits, et parfois vous pourrez rencontrer un message d’erreur tel que celui-ci :

image

Ce message indique que JOSM a supprimé certains des objets de l’extrait téléchargé dans JOSM car ils ont depuis été supprimés sur le serveur

Cela signifie que JOSM a décidé automatiquement que des objets de votre extrait local de données ne seront pas envoyés sur le serveur principal parce qu’ils ont été supprimés par un autre utilisateur.

Cependant, pour certains conflits, il n’y a pas pour JOSM de décision simple à prendre et le logiciel laisse alors à l’utilisateur le choix de prendre la meilleure décision. Ainsi, le conflit a besoin d’être résolu​​​​​ :

image

Ce message vous informe de la nécessité de regarder les conflits du Calque de données dans la boîte de dialogue des Conflits.

image

Ce message vous fournit un avertissement sur le fait que vous allez probablement rencontrer des conflits avec vos éditions. Si vous cliquez sur “Vérifier sur le serveur”, vous allez être en mesure de corriger les erreurs d’édition que le serveur va avoir mis en évidence .

  1. Résolution des conflits

Résoudre les conflits est nécessaire, sinon aucune de vos éditions ne pourra être envoyée sur le serveur OSM. Pour résoudre un conflit, vous devez choisir la meilleure option pour chaque édition. Lorsque vous êtes confronté à cette fenêtre de détection des conflits, il vaut mieux toujours choisir le premier bouton à gauche, intitulé “Synchroniser le nœud x xxx xxx xxx” ou “Synchroniser seulement les chemins xxx xxx xxx”. Cette option vous permet de gagner du temps et d’éviter des maux de tête dans la mesure où un seul conflit va être considéré à la fois. Si vous choisissez “Synchroniser tout le jeu de données”, JOSM communiquera avec le serveur principal à propos de toutes les éditions et tous les objets. Cette option est seulement nécessaire lorsque vous avez un grand nombre de conflits et d’éditions et a l’inconvénient d’engendrer parfois de la confusion.

image

Le conflit apparait alors dans la fenêtre latérale “Conflits” à droite au sein du panneau des fenêtres latérales. Dans la barre d’outils verticale à gauche, l’icône image permet d’afficher/désafficher cette fenêtre, de même que le raccourci clavier SHIFT+ALT+C. Cette fenêtre liste les conflits existants, dont le nombre total apparaît en haut dans la zone de titre de la boîte. Vous ne pouvez pas envoyer vos modifications avant que cette liste ne soit vide.

image

Au passage de la souris sur la fenêtre, deux boutons s’affichent :

image

Avant de commencer à résoudre, il est intéressant de visualiser le nœud pour comprendre la raison du conflit. Cliquer d’abord sur le conflit puis sur le bouton image. Faites un clic droit sur le conflit à résoudre, et cliquer sur “Zoomer sur conflit”.

image

La carte dans JOSM va être centrée sur le nœud en conflit qui apparaît sélectionné en rouge. Vous pouvez ainsi le voir et vous remémorer quand vous l’avez créé ou modifié. Cliquez ensuite sur le bouton image qui va ouvrir une fenêtre qui détaille votre conflit et permet d’effectuer sa résolution.

image

Le message d’erreur qui apparaît peut sembler compliqué, mais il est en fait assez simple. Vous saurez à quel type de conflit vous êtes confronté grâce au symboleimage dans les onglets en haut :

  • Propriétés : sur le serveur OSM, le nœud a une nouvelle version de ses coordonnées ou de son état (supprimé/non supprimé).
  • Attributs : sur le serveur OSM, le nœud a une nouvelle version de ses attributs (ajoutés, modifiés ou supprimés).
  • Nœuds : sur le serveur OSM, le nœud s’il y a des différences entre les deux listes de nœuds d’un même chemin (way), par exemple une route. Cette possibilité n’existe que pour ce type d’objets et seulement si vous avez préalablement cliqué sur “Synchroniser tout le jeu de données”.
  • Membres : sur le serveur OSM, le nœud s’il y a des différences entre les deux listes de membres d’une relation.

A. Conflits sur les propriétés

Les propriétés concernent l’emplacement ou l’existence de l’objet. C’est pourquoi les coordonnées et l’état (non supprimé ou supprimé) de l’objet sont listés.

image

La fenêtre des conflits présente seulement deux différentes éditions à la fois. Votre version, nommée “Ma version”, apparaît à gauche. La “Version du serveur” apparait à droite. Au centre la “Version fusionnée” sera le résultat de la résolution. Lorsque le conflit concerne les propriétés, il est important d’avoir regardé auparavant l’objet concerné afin de déterminer si ses coordonnées ou son état correspondent à la réalité. Si votre version vous semble la meilleure, cliquez sur image. Si vous pensez qu’au contraire, c’est celle du serveur, cliquez sur image. Lorsque vous avez cliqué, la version choisie apparait comme la version fusionné et la couleur de fond passe du rouge ou vert, de mêtre que devant l’onglet, il y a désormais un image.

image

Lorsque les conflits sur les propriétés ont tous été résolus, cliquez sur le bouton images’il n’est plus grisé. Les valeurs que vous avez choisies seront appliquées et la fenêtre se fermera. Le conflit est résolu et disparait de la liste des conflits. Lorsque la liste est vide, il est possible d’envoyer les modifications au serveur OSM. Si un autre onglet est marqué du symbole image, il faut d’abord le résoudre.

B. Conflits sur les attributs

Si les attributs d’une version sont différents des attributs d’une autre version, la boite de dialogue pour Résoudre les conflits affiche un image dans l’onglet “Attributs”. Cliquez sur l’onglet pour afficher la fenêtre de résolution des conflits spécifiques aux attributs. Il y a trois tableaux affichés dans cette fenêtre, de gauche à droite :

  • “Ma version” : montre les attributs de la première version participant au conflit de l’objet. Il s’agit habituellement de votre calque de données.
  • “Version fusionnée” : montre les attributs fusionnés. Ce tableau est vide au départ. Plus vous résolvez des conflits d’attributs, plus des attributs vont apparaître dans ce tableau.
  • “Version du serveur” : montre les attributs de la deuxième version participant au conflit de l’objet. Ce sont habituellement les attributs de la version de l’objet actuellement enregistrée sur le serveur OSM.

Dans l’exemple ci-dessous, les deux versions ont un tag avec la clé “name”. Cependant, les valeurs sont différentes pour les deux versions de l’objet. La valeur de la première version est “Eglise Ste Thérèse”, et la version opposée possède la valeur “Eglise Sainte-Thérèse”.

image

Vous devez maintenant décider quelle est la valeur que vous voulez conserver et celle que vous allez rejeter. Dans le cas présent, “Eglise Sainte-Thérèse” respecte les règles des noms d’objets en cartographie, alors que la version abrégée “Eglise Ste Thérèse” est incorrecte. La version de droite (“Version du serveur”) va ainsi être celle qui va être conservée en cliquant sur le bouton image.

image

En cas d’erreur, sélectionner l’attribut à annuler dans le tableau central “Version fusionnée” et cliquer sur le bouton image.

Le deuxième attribut en conflit est d’un type différent : “Ma version” ajoute un attribut dont la clé n’existe pas dans la “Version du serveur”, qui apparait ainsi comme “<non défini>”. Il s’agit de déterminer si cet attribut supplémentaire est pertinent. Si c’est le cas, cliquez sur image, sinon cliquez sur image. Dans l’exemple ci-dessous, “Ma version” a été conservée.

image

Tous les attributs en conflit ont été résolus et la couleur de fond devient verte.

Lorsque les conflits sur les attributs ont tous été résolus, cliquez sur le bouton images’il n’est plus grisé. Les valeurs que vous avez choisies seront appliquées et la fenêtre se fermera. Le conflit est résolu et disparait de la liste des conflits. Lorsque la liste est vide, il est possible d’envoyer les modifications au serveur OSM. Si un autre onglet est marqué du symbole image, il faut d’abord le résoudre.

C. Conflits sur les nœuds

Les conflits sur les nœuds ne concernent ni les objets représentés par un point, ni ceux représentés par un polygone, mais ceux représntés par un chemin, par exemple une route. Le message de détection du conflit va mentionner ceci, comme dans l’exemple ci-dessous :

image

Il s’agit ici de résoudre les différences dans la liste des nœuds de deux chemins : cela ne concerne ni les objets représentés par un point, ni ceux représentés par un polygone. Cliquez sur “Synchroniser seulement les chemins xxx xxx xxx”. Dans la fenêtre latérale “Conflits” à droite au sein du panneau des fenêtres latérales apparait en conflit à la fois le chemin complet et chacun des nœuds en conflit. Dans l’exemple ci-dessous, des conflits concernent trois nœuds d’un chemin qui apparait en bas de la liste.

image

Comme expliqué plus haut, il est conseillé de regarder les nœuds affectés en les sélectionnant, puis en faisant un clic droit pour pouvoir accéder à image. Dans notre exemple, le conflit concerne une section de route primaire de plusieurs dizaines de km de long, ce qui est un cas courant de création de conflits de chemin. En effet, compte tenu de la longueur de l’objet, il est tout à fait possible qu’un autre utilisateur l’ait édité en dehors de la zone téléchargée, comme montré dans l’exemple ci-dessous.

image

La zone téléchargée fait moins d’un km de large et comprend deux sections de routes primaires.

image

Ces sections de route primaire font en fait plusieurs dizaines de km de long.

Réglez d’abord tous les conflits de propriétés des nœuds comme indiqué plus haut, puis passez à l’objet chemin, généralement en bas de la liste.

image

Le symboleimage est présent devant l’onglet “Nœuds en conflits”. Il y a trois tableaux affichés dans cette fenêtre, de gauche à droite :

  • “Ma version” : montre la liste des nœuds de la première version participant au conflit de l’objet. Il s’agit habituellement de votre calque de données.
  • “Version fusionnée” : montre la liste des nœuds fusionnés. Ce tableau est vide au départ. Plus vous résolvez des conflits de nœuds, plus des nœuds vont apparaître dans ce tableau.
  • “Version du serveur” : montre la liste des nœuds de la deuxième version participant au conflit de l’objet. Ce sont habituellement les attributs de la version de l’objet actuellement enregistrée sur le serveur OSM.

A la différence de la résolution des conflits de attributs (voir plus haut), l’ordre des nœuds dans le tableau de la version fusionnée est important, car il conditionne l’ordre dans lequel les nœuds se relient les uns aux autres dans l’objet chemin.

Il peut être difficile de voir la différence entre les différentes listes de nœuds des trois tableaux, en particulier pour les chemins comprenant un grand nombre de nœuds. La fenêtre des conflits permet de voir les différences en comparant deux des trois tableaux de nœuds (“Ma version”, “Version fusionnée”, “Version du serveur”) et montre les différences avec des fonds de couleur différents. Les couleurs ont la signification suivante :

  • image indique que ce nœud du chemin n’engendre pas de conflit.
  • image indique que ce nœud du chemin existe dans les deux listes, mais à une position différente dans l’ordre des nœuds.
  • image indique que ce nœud du chemin n’existe que dans une seule version.

A partir de la liste déroulante, vous pouvez sélectionner quelles listes de nœud vont être comparées :

image

Procédure standard

Pour résoudre les conflits de chemin, la procédure standard comprend trois étapes :

  • Choisissez les nœuds à conserver parmi les entre “Ma version” et “Version du serveur” et changez l’ordre des nœuds si nécessaire. Des explications sont fournies plus bas.
  • Figer la liste fusionnée qui en résulte en cliquant sur le bouton image. Vous indiquez ainsi à JOSM que la liste des conflits pour cet objet a été résolue.
  • Appliquer la résolution.

Procédure simple : conserver l’intégralité de la liste des nœuds d’une version

La procédure la plus simple est celle où vous décidez de conserver tous les nœuds d’une des deux versions, la vôtre ou celle du serveur. Elle a l’inconvénient de ne rien conserver des ajouts ou améliorations faites dans l’autre version.

Cliquez sur image(ou imagesi vous avez sélectionné tous les nœuds de la version du serveur) ou sélectionnez d’abord tous les nœuds (avec la souris ou Ctrl-A) d’une des deux tables, à droite ou à gauche (à gauche dans l’exemple).

image

Cliquez ensuite sur image(ou image si vous avez sélectionné tous les nœuds de la version du serveur) pour que tous ces nœuds apparaissent dans la table de la version fusionnée au centre :

image

Enfin, cliquez sur image pour figer la version fusionnée de la liste de nœuds.

image

Le symbole devant l’onglet est désormais image et vous pouvez cliquer sur le bouton images’il n’est plus grisé. Les valeurs que vous avez choisies seront appliquées et la fenêtre sera fermée. Le conflit est résolu et disparait de la liste des conflits. Lorsque la liste est vide, il est possible d’envoyer les modifications au serveur OSM.

Procédure avancée : sélectionner la meilleure version de chaque nœud

Cette procédure vise à ne pas supprimer l’ensemble des éditions d’une des deux versions, mais de conserver le meilleur des deux. Elle nécessite de traiter tous les nœuds en faisant attention à leur ordre dans la version fusionnée. L’exemple ci-dessous va montrer pas à pas comment procéder.

image

La liste des conflits des nœuds parait complexe mais est en fait relativement simple. Tout d’abord, les 8 premiers nœuds, en vert, ne pose pas de problème. Le 9ème nœud de “Ma version” est un nouveau nœud créé dans la sessions d’édition en cours, comme le montre le fait que ce nœud n’a pas encore d’identifiant. Ce nouveau nœud, qui s’insère entre les noeuds image et image, crée de fait un décalage par rapport à la “Version du serveur” qui ne le comprend pas. De fait, l’ordre des nœuds n’est plus le même et tous les nœuds qui suivent sont de couleur orange, à l’exception des nouveaux nœuds : le nœud de la ligne 15 à gauche et de la ligne 14 à droite. Nous allons conserver tous les nœuds communs aux deux versions, ainsi que les nouveaux créés dans chacune des deux versions. Nous allons d’abord sélectionner les huit premiers nœuds, communs aux deux versions, par exemple à gauche, et les placer dans le tableau de la “Version fusionnée” en cliquant sur image.

image

Puis dans l’exemple, il convient de sélectionner le nouveau nœud de la ligne 9 à gauche et cliquez sur imagepour le placer à la suite des autres dans la “Version fusionnée”.

image

“Il convient ensuite de continuer de la même manière pour les nœuds suivants : 9 à 14 à droite, 15 à 22 à gauche, etc. de sorte que tous les nœuds soient placés dans la “Version fusionnée” en prenant garde à bien respecter leur ordre (par exemple ne pas mettre le nœud 12 avant le nœud 11 dans l’exemple ci-dessus). En cas d’erreur, il est possible de sélectionner un nœud dans la “Version fusionnée” et de le déplacer avec imageou image, ou bien le supprimer de cette liste avec image.

Une fois cela fait, cliquez sur image puis sur image. Les valeurs que vous avez choisies seront appliquées et la fenêtre sera fermée. Le conflit est résolu et disparait de la liste des conflits. Lorsque la liste est vide, il est possible d’envoyer les modifications au serveur OSM.

  1. Bonnes pratiques pour éviter les conflits

Les conflits apparaissent plus fréquemment pour ceux qui :

  • ont tendance à sauvegarder leur zone de travail sur leur serveur local et attendent un certain temps avant de l’envoyer sur le serveur principal (upload). Il est préférable de télécharger votre zone de travail, de l’éditer et d’envoyer les modifications immédiatement.
  • travaillent sur des zones traversées par des objets plus grand que la zone de téléchargement. Les routes sont un cas fréquent.

Pour minimiser les chances de rencontrer des conflits ou en limiter le nombre, il est utile :

  • d’éditer uniquement sur la zone que vous avez téléchargée. Assurez-vous de ne jamais éditer en dehors de cette zone de téléchargement.
  • d’envoyer les modifications régulièrement en cliquant sur image. Afin d’éviter la multiplication des groupes de modification (changesets), veuillez configurer l’onglet “Groupe de modifications” de la fenêtre d’envoi en décochant “Fermer le groupe après l’envoi”. Envoyez les données et au prochain envoi, configurez “Envoyer vers un groupe existant” comme montré ci-dessous :

image

  • de mettre à jour les données régulièrement en allant dans le menu “Fichier” et cliquer sur image .

Résumé

Lorsque vous éditez dans JOSM, qui télécharge des extraits de la carte OSM, vous prenez le risque de engendrer des conflits. Les conflits se produisent lorsqu’un même objet a été édité par deux personnes à des moments proches. Ces conflits doivent être résolus avant de pouvoir envoyer les modifications de vos éditions au serveur OSM. Ce chapitre a présenté une approche détaillée de la résolution des conflits dans JOSM.