Hallo,

Jacques Nietsch wrote:
> immer wenn ich versuche die Relation 70582 mit josm zu bearbeiten,
> bekomme ich obengenannte Fehlermeldung (oder so ähnlich).
> 
> Meine Fragen:
> 
> - warum kommt diese Meldung

Fast immer hat diese Meldung bei Relationen damit zu tun, dass ein 
referenziertes Objekt nicht mehr existiert oder ein referenzieter Way 
"kaputt" ist.

> - wie sollte man reagieren

Ich skizziere im folgenden, was ich getan habe, um das Problem zu 
beheben. Es ist recht unwahrscheinlich, dass Du das nachmachen willst, 
aber vielleicht gibt es den einen oder anderen Leser, der das Rezept 
brauchen kann.

$ wget -Or http://www.openstreetmap.org/api/0.5/relation/70582

Datei "r" nun mit einem Editor aendern: das id="..." bei der Relation 
raus, alle Tags raus, alle Ways auskommentieren (ein <!-- vor dem ersten 
way, ein --> hinter dem letzten), und ein neues Tag rein:

     <tag k="note" v="for testing only, can be deleted" />

Dann Versuch, die Relation als neue hochzuladen:

$ lwp-request -semPUT -C username:password 
http://www.openstreetmap.org/api/0.5/relation/create < r

Zurück kommt ein "200 OK" und die id der neuen Relation (bei mir 77307). 
Ich trage die id in das relation-Tag in der Datei ein (<relation 
id="77307"...).

In der Datei "r" sind nun rund 30 ways auskommentiert. Ich ersetze den 
Anfangskommentarmarker durch ein <!-- irgendwo hier drunter ist was 
falsch --> und verschiebe ihn 15 Zeilen nach unten, so dass die obere 
Haelfte der Ways nun wieder aktiv ist.

$ lwp-request -semPUT -C username:password 
http://www.openstreetmap.org/api/0.5/relation/77307 < r

Zurueck kommt ein "200 OK", d.h. der Fehler liegt nicht in den ersten 15 
Ways, sondern im hinteren Block. Ich schiebe den "irgendwo hier 
drunter..."-Marker an die Stelle, wo mein <!-- ist, und schiebe das <!--
abwaerts, so dass es die verbleibenden Ways in der Mitte teilt.

$ lwp-request -semPUT -C username:password 
http://www.openstreetmap.org/api/0.5/relation/77307 < r

Wieder "200 OK", also weiter so. Aha, beim naechsten Versuch 
"precondition failed"!

Meine Datei sieht zu dem Zeitpunkt so aus:

     <member type="way" ref="30473824" role=""/>
     <!-- irgendwo hier drunter... -->
     <member type="way" ref="30480844" role=""/>
     <member type="way" ref="30481099" role=""/>
     <member type="way" ref="30481196" role=""/>
     <member type="way" ref="30481210" role=""/>
     <!--
     <member type="way" ref="30483003" role=""/>
     <member type="way" ref="30483180" role=""/>
     <member type="way" ref="30542551" role=""/>
     -->
     <tag k="note" v="for testing only, can be deleted" />

Ich weiss nun, dass irgendeiner der vier Ways zwischen der 
"irgendwo"-Markierung und dem <!-- fehlerhaft sein muss. 
(Moeglicherweise noch mehr, aber ich setze mal drauf, dass nur ein 
Fehler existiert). Ich schiebe nun die untere Markierung nach oben und 
halbiere wieder den Bereich:

     <!-- irgendwo hier drunter -->
     <member type="way" ref="30480844" role=""/>
     <member type="way" ref="30481099" role=""/>
     <!--
     <member type="way" ref="30481196" role=""/>
     <member type="way" ref="30481210" role=""/>
     -->
     <!-- irgendwo hier drueber -->
     <member type="way" ref="30483003" role=""/>
     <member type="way" ref="30483180" role=""/>
     <member type="way" ref="30542551" role=""/>
     <tag k="note" v="for testing only, can be deleted" />

Diesmal "200 OK". Nun lasse ich nur noch den Way 30481196 auskommentiert 
-wieder 200 OK. Testweise nehme ich den Way mit dazu - precondition failed.

Der Way 30481196 ist also der Boese. Ich loesche meine Testrelation:

lwp-request -semDELETE -C username:password 
http://www.openstreetmap.org/api/0.5/relation/77307

Ich koennte nun einfach die urspruengliche Relation ohne diesen Way 
hochladen, dann waere sie wieder bearbeitbar. Eventuell laesst sich der 
Way aber auch reparieren, mal sehen:

$ lwp-request -semGET http://www.openstreetmap.org/api/0.5/way/30481196

   <way id="30481196" visible="true" 
timestamp="2009-01-25T15:01:07+00:00" user="Divjo">
     <nd ref="28886899"/>
     <nd ref="82461675"/>
     <nd ref="253577329"/>
     <nd ref="253577361"/>
     <nd ref="275011188"/>
     <nd ref="275011141"/>
     <nd ref="82461672"/>
     <tag k="highway" v="residential"/>
     <tag k="created_by" v="Potlatch 0.10f"/>
     <tag k="name" v="Blomkamp"/>
   </way>

Zum Vergleich mal die History...

   <way id="30481196" visible="true" 
timestamp="2009-01-25T15:01:07+00:00" user="Divjo">
     <nd ref="28886899"/>
     <nd ref="82461675"/>
     <nd ref="253577329"/>
     <nd ref="253577361"/>
     <nd ref="275011188"/>
     <nd ref="275011141"/>
     <nd ref="82461674"/>
     <nd ref="82461673"/>
     <nd ref="82461672"/>
     <tag k="name" v="Blomkamp"/>
     <tag k="created_by" v="Potlatch 0.10f"/>
     <tag k="highway" v="residential"/>
   </way>

Ah, ein klassischer Fall von "ich bin ein vermurkster Way" - die 
aktuellste Version der History muss identisch sein mit der "normalen" 
Version, ist sie hier aber nicht. Wetten, die zwei Nodes, die in der 
History "zuviel" sind, gibt es nicht mehr?

$ lwp-request -semGET http://www.openstreetmap.org/api/0.5/node/82461673
410 Gone

Hab ich mir gedacht. Kaputt eben. Ich nehme den Way so wie er ist und 
lade ihn erneut hoch:

$ lwp-request -mGET http://www.openstreetmap.org/api/0.5/way/30481196 | 
lwp-request -semPUT -Cusername:password 
http://www.openstreetmap.org/api/0.5/way/30481196

Nun haben wir einen Way, bei dem die akuelle Version und die erste in 
der History uebereinstimmen. Hoechstwahrscheinlich ist die Relation 
damit wieder bearbeitbar:

$ lwp-request -mGET http://www.openstreetmap.org/api/0.5/relation/70582 
| lwp-request -semPUT -Cusername:password 
http://www.openstreetmap.org/api/0.5/relation/70582

Zurueck kommt ein "200 OK", also jetzt ist alles wieder in Butter.

Frag mich nicht, *warum* die Relation nicht hochgeladen werden kann, 
wenn die aktuellste historische Version des Ways mit der eigentlich 
aktuellen nicht identisch ist. Ist halt so ;-)

Bye
Frederik

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

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Reply via email to