[OSM-dev] correcting relation after 412 error

Frederik Ramm frederik at remote.org
Sat Aug 30 18:21:40 BST 2008


Hi,

> I am trying to find out the reason why uploading modifications to relation 
> (id=5286) through josm consistently results in the following error:

Steven has already mentioned one of the problems for you, but as you 
rightly say there is another problem. I'll give you (and others) a quick 
run-down of what I tend to do in these cases.

1. Download the relation into a file.
2. Download every way referenced, and check whether all ways actually 
exist. (They do in this case.)
3. Download all nodes referenced by all these ways and check whether 
they actually exist. (They do in this case, but I had situations where 
one of the ways that make up the relation were broken because one of 
their nodes had been deleted and you'll see 412 on relation upload in 
these cases.)
4. If all this doesn't help, then create a new relation and find the 
culprit through binary search, i.e. first upload the relation with all 
its members. On 412, comment out (using <!-- and -->) the first half of 
members in the relation XML, re-upload. If this works, then the problem 
is in the first half; now comment out only the first quarter, and so on, 
until you have found the one member where upload works if it is 
commented out, and upload doesn't work if you have it in.

In this case, the offending way seems to be way #22949135. Remove it 
from the relation and it will upload. Why? That way looks perfectly 
normal...

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.5" generator="OpenStreetMap server">
   <way id="22949135" visible="true" 
timestamp="2008-08-05T15:14:49+01:00" user="Djohnnie">
     <nd ref="247267461"/>
     <nd ref="247267463"/>
     <tag k="highway" v="residential"/>
     <tag k="created_by" v="Potlatch 0.10b"/>
     <tag k="name" v="Elisabethplein"/>
   </way>
</osm>

... UNTIL you look at its history:

<osm version="0.5" generator="OpenStreetMap server">
   <way id="22949135" visible="true" 
timestamp="2008-02-11T20:53:59+00:00" user="ivom">
     <nd ref="247267461"/>
     <nd ref="247267462"/>
     <nd ref="247267463"/>
     <tag k="created_by" v="JOSM"/>
     <tag k="highway" v="residential"/>
   </way>
   <way id="22949135" visible="true" 
timestamp="2008-05-04T20:42:39+01:00" user="ivom">
     <nd ref="247267461"/>
     <nd ref="247267462"/>
     <nd ref="247267463"/>
     <tag k="name" v="Elisabethplein"/>
     <tag k="created_by" v="JOSM"/>
     <tag k="highway" v="residential"/>
   </way>
   <way id="22949135" visible="true" 
timestamp="2008-05-05T21:40:24+01:00" user="ivom">
     <nd ref="247267461"/>
     <nd ref="247267462"/>
     <nd ref="262395126"/>
     <nd ref="247267463"/>
     <tag k="name" v="Elisabethplein"/>
     <tag k="created_by" v="JOSM"/>
     <tag k="highway" v="residential"/>
   </way>
   <way id="22949135" visible="true" 
timestamp="2008-08-05T15:14:49+01:00" user="Djohnnie">
     <nd ref="283641193"/>
     <nd ref="247267461"/>
     <nd ref="247267462"/>
     <nd ref="28364119"/>
     <nd ref="262395126"/>
     <nd ref="247267463"/>
     <tag k="name" v="Elisabethplein"/>
     <tag k="created_by" v="Potlatch 0.10b"/>
     <tag k="highway" v="residential"/>
   </way>
</osm>

This is one of those unfortunate ways where the current version from 
history is not identical to the real "current" version. This would not 
happen in a transactional database environment but we don't yet have 
such, so discrepancies are possible.

Some of the nodes referenced by the latest history version of this way 
have been deleted, and the "current" table has been updated to reflect 
this, but the history table still links to non-existent nodes.

And that's why you cannot upload your relation. Fix the way - actually 
if you just re-upload it in its current state this will fix it - or 
remove it from the relation.

Bye
Frederik

-- 
Frederik Ramm  ##  eMail frederik at remote.org  ##  N49°00'09" E008°23'33"




More information about the dev mailing list