Data conflicts happen in OpenStreetMap when multiple users edit the same map feature simultaneously. Thousands of volunteers edit the map every minute, and it’s common to face a conflict in areas with a lot of mapping activity. Let’s understand how conflicts happen and how you can resolve them in the Java OpenStreetMap Editor (JOSM).
In this scenario, two users Arun and Srividya modify an existing building in OpenStreetMap and upload the changes to the server at the same time.
Both users download the existing feature
This is the building both users will edit. On the server, it is stored as version 1.
Both Arun and Srividya download the area in JOSM and begin editing it.
First user uploads the change
Srividya adds the building name 1st class supermarket, and uploads the data to the OpenStreetMap server. The change is updated successfully and the building version is updated to version 2.
Second user uploads the change
Arun adds the building name as Firstclass Supermarket, to the building which is still at version 1. When Arun tries to upload the changes to the server, JOSM gives the following conflict message:
This happened because Arun is trying to upload changes of the building at version 1 when in fact, the data in the OpenStreetMap server is already at version 2 made earlier by Srividya. Because both the server and local versions have different values for the name tag and the server is unable to determine which values to choose and creates a conflict that Arun must resolve manually.
Resolving the conflict
To fix the conflict, Arun can either:
Discard his changes and keep the server version.
Upload his changes and discard the server version.
Merge his changes with the server version manually.
In JOSM, the Conflict List panel shows the list of features that have conflicts and needs to be resolved before changes can be uploaded. Selecting a feature and clicking Resolve opens the Resolve Conflict dialog.
The Resolve Conflicts dialog allows you to compare the local and server version of the feature to resolve the differences.
Conflicts can arise in:
Properties: Object has been moved (coordinates) or deleted.
Tags: Tags do not match.
Nodes: There is a difference in the list of nodes in two ways.
Members: There is a difference in the list of members in a relation.
In this scenario, there is a conflict in the name tag. To resolve the tag conflict, Arun clicks the Tags tab. Since we know Firstclass Supermarket is correct, Arun chooses to keep the local version and resolve the conflict.
Now that the conflicts are resolved, Arun uploads the updated data to the server. The building is now stored as version 3.