[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