[Talk-de] Fehler in relations
Frederik Ramm
frederik at remote.org
Mi Nov 5 13:03:34 UTC 2008
Hallo,
Willi Rehfeld wrote:
> Ich versuche die relation 9148 - Radverkehrsnetz NRW zu erweitern.
Leider sind solche Relationen sehr schwerfaellig zu bearbeiten. Das
Problem sind Datenbankinkonsistenzen, die es eigentlich nicht geben
dürfte, aber trotzdem immer wieder gibt: Relationen, die einen Way
enthalten, der gelöscht wurde, oder Ways, die einen Node enthalten, der
gelöscht wurde. Je größer eine Relation wird, desto größer auch das
Risiko, daß sie einen solchen kaputten Way enthaelt.
Der von Dir beschriebene Fehler tritt insbesondere auch dann auf, wenn
die Relation einen Way enthält, der einen gelöschten Node enthält!
Ich beschreibe im folgenden kurz, wie man mit solchen Fällen umgehen
muss, aber das ist ganz bewusst kurz und nur für Experten geeignet, und
jeder, der irgendwas davon nicht versteht, soll es bitte nicht probieren!
0. Benötigt werden: Ein Editor sowie ein Programm, mit dem man
HTTP-PUT/POST-Requests absetzen kann (z.B. lwp-request).
1. Fragliche Relation in einer Datei speichern (Annahme: 1000 Members).
2. Dummy-Relation mit 1 Member neu anlegen, nur damit man eine gültige
Relation-ID zum Spielen bekommt.
3. Datei aus 1. auf die neue Relation-ID anpassen und hochladen - es
sollte ein Fehler kommen.
4. Mit <!-- und --> die untere Haelfte (501-1000) der Members
auskommentieren, wieder hochladen.
5. Wenn es geht, den auskommentieren Bereich verkleinern (auf 750-1000,
wenn es immer noch geht, auf 875-1000 usw.); sobald es mal nicht geht,
wieder einen Schritt zurueck und am anderen Ende verkleinern.
6. Mit dieser binaeren Suche kommt man mit relativ wenigen Versuchen
(rund 10) dahin, dass man den einen Way identifiziert, an dem es liegt
(manchmal sind es auch mehrere Ways, dann ist die Suche etwas
vertrackter, aber das Prinzip bleibt).
7. Je nachdem, wie gruendlich man sein will, entweder die
Originalrelation ohne diesen Way wieder hochladen und die Sache ruhen
lassen, oder aber den Way genau untersuchen. Er wird vermutlich in einem
Zustand sein, bei dem ein normaler Request etwas anderes zurueckgibt als
die aktuelle Version der History. Way in irgendeiner korrekten Form
hochladen, danach wird auch die Relation wieder gehen.
Ich habe diese Arbeit in der Vergangenheit öfters gemacht, um Leuten zu
helfen, und mache das auch in Zukunft gern auf Zuruf - aber nicht für
eine Relation, deren Sinn sich mir nicht erschließt und mit der man sich
ständig Ärger aller Art einbrockt.
Ich sehe überhaupt keinen Grund dafuer, so eine Relation zu pflegen. Wer
das Radwegenetz NRW will, soll sich das mit einem OSMXAPI-Query
runterladen und fertig. Relationen sind für Dinge, die in engem
Zusammenhang stehen. Relation sind keine beliebigen Sammelbehälter - am
Ende ist jeder Radweg in Deutschland in 15 Relationen drin ("Radwege,
die 1950 gebaut wurden", "Radwege im Hochsauerlandkreis mit
Benutzungspflicht", "rot angemalte Radwege"). Was bitte soll das
bringen, außer unendlich viel mehr Arbeit fuer jeden, der Radwege
erfassen will?
Derzeit warte ich seit 5 Minuten darauf, dass die API mir die Historie
dieser Relation herausgibt. Ah, jetzt, schlappe 40 MB Download. Ich
schreibe mal den Erfinder an, ob es ihm recht ist, wenn wir die einfach
löschen.
Bye
Frederik
--
Frederik Ramm ## eMail frederik at remote.org ## N49°00'09" E008°23'33"
Mehr Informationen über die Mailingliste Talk-de