Wiki nach ungültigen RelationsID durchforsten

total veraltetetes (2010) und nie aktiviertes Proposal. “This proposal is abandoned and the original proposer is no longer active in OSM, but this should be retained for historical purposes” Darauf Bezug zu nehmen, ist mit Verlaub ein wenig übermütig.

genau da liegt der Grund für dein Mißverständnis: Das will ich überhaupt nicht.

Was machst du, wenn jemand ein Objekt bei OSM löscht und das erneut mit den gleichen Informationen einträgt (z.B. um die History loszuwerden - warum auch immer) ?
—> Alle Referenzen, Links und sonstige Verweise in allen Dokumenten außerhalb von OSM ändern - was anderes bleibt dir nicht übrig.

Was machst du, wenn jemand den Tags UUID=Schlag-mich-tot ändert?
—> setzt ihn in OSM zurück.

Such dir was aus.

Im übrigen warte ich immer noch auf konstruktive Gegenvorschäge und betrachte das Thema ansonsten hier als beendet.

Ich weiß nicht, ob Du das Posting übersehen oder nur ignoriert hast, aber ich hatte oben um eine etwas ausführlichere Erklärung gebeten, wie Du Dir UUIDs in OSM vorstellst, und auch schon typische Fälle skizziert, in denen die Verlinkung per OSM-ID scheitert. Mich würde interessieren, inwiefern Deine Idee von UUIDs diese Probleme löst. Wie/wann/von wem sollen UUIDs vergeben werden, wie sollen Editoren in den damit umgehen, speziell in den oben benannten Bearbeitungsvorgängen?

Zum Verlinken von Objekten im Wiki per Overpass API hat Roland die Lösung Permanent ID implementiert. Objekte werden dabei über eine eindeutige Tag-Kombination referenziert, z.b. ref + network.

Beispiel aus dem Wiki: aus dem Template DisplayRoute:


{{DisplayRoute|network=BAB|ref=A 555}}

wird dieser Overpass API Link generiert:
;out;
und nach ID-Auflösung zu osm.org weitergeleitet.

Bei mehreren Ergebnissen wird eine Link-Liste generiert, das funktioniert aber im Moment nicht (ist gemeldet).

Gruß,
Norbert

Edit: Link-Liste geht wieder

Cool… Kurz und Schmerzlos…

;out;

Liefert die L 44 und Brandenburg…

Irgendwo ist aber noch ein Bug, oder?
Wieso bekomme ich hier: zwei Straßen, eine in BW

{{DisplayRoute|operator=Landkreis Dahme-Spreewald|ref=K 6101}}

und hier die, die ich will.

{{DisplayRoute|network=LDS|ref=K 6101}}

Das Tag "network=LDS hab ich nur für diesen Test eingefügt, nehme es später wieder raus.

Beide Links stehen unter: http://wiki.openstreetmap.org/wiki/Landkreis_Dahme-Spreewald#Kreisstra.C3.9Fen im Bemerkungsfeld.

Cool… Kurz und Schmerzlos…

;out;

Liefert die L 44 und Brandenburg…

Irgendwo ist aber noch ein Bug, oder?
Wieso bekomme ich hier: zwei Straßen, eine in BW

{{DisplayRoute|operator=Landkreis Dahme-Spreewald|ref=K 6101}}

und hier die, die ich will.

{{DisplayRoute|network=LDS|ref=K 6101}}

Das Tag "network=LDS hab ich nur für diesen Test eingefügt, nehme es später wieder raus.

Beide Links stehen unter: http://wiki.openstreetmap.org/wiki/Landkreis_Dahme-Spreewald#Kreisstra.C3.9Fen im Bemerkungsfeld.

Edit: funktioniert das nicht mit operator??

Sven

Im Wiki-Template Quelltext steht mal nix von operator drin, wird also nicht so klappen:

Link (Achtung: öffnet Template im Edit Mode, nicht speichern!): http://wiki.openstreetmap.org/w/index.php?title=Template:DisplayRoute&action=edit

glatt übersehen. Sorry. Melde mich spätesten morgen wieder - ist ja nicht lang hin :wink:

Gruss
walter

Ah… Ok… kann ich mit Leben… Als Netzwerk=Kreisstraßen Dahme-Spreewald eintragen… Da fällt mir ja ein, wo das Tagging (eigentlich) falsch ist…

Bei dem Operator-Tag*) der Bundes- und Landesstraßen muß eigentlich der jeweilige Landesbetrieb für Straßenwesen (oder ähnliche Bezeichnungen) eingetragen werden. In den Netzwerk Tag dann jeweils Bundesstraßen xy, Landesstraßen xy… Kreisstraßen xy… (vgl. Beitrag http://forum.openstreetmap.org/viewtopic.php?pid=389790#p389790

*) was wiederum voraussetzt, daß Bundesstraßen an Ländergrenzen segmentiert werden…

Danke für die Hilfe,

Sven

Ich versuche es mal, aber es ist nicht so, daß ich eine schlüsselfertige Lösung habe.

Mit schwebte ein einfacher Tag vor. Als zusätzliches Merkmal müsste die DB mit allem Drum und Dran (API 0.7) geändert werden und das würde auch nicht bringen: Objekt gelöscht - Daten futsch. Es sei denn, man gibt dem neuen Objekt irgendwie die alte UUID.

Klarstellung: Ich habe das nicht vorgeschlagen um jedes Objekt bis runter auf Node-Ebene mit einer lebenslangen - genauer genommen überlebenslangen - Kennung zu versehen, die dann automatisch von allen OSM-Komponente respektiert wird. Das war und ist nicht mein Anliegen. Ich wollte lediglich “wichtigen” Objekten eine 2. eindeutige Kennung geben können.

  1. Das gemeinsame Objekt würde den Tag uuid=xxx behalten, wenn der Mapper das nicht verhindert

  2. stimmt

  3. 3 ist von dir falsch gedeutet: beide Ways hätten dann die selbe uuid, was noch schlimmer wäre

  4. Das Aufspalten eines UUID-ten Objektes ist immer problematisch.

  5. gebont. zur 1111111 siehe unten

  6. Da ist der Mapper bereits jetzt gefordert. Wenn ich z.B. die Adressdaten eines Buildings an einen Entrance-Node kopiere, weil sie manchmal da besser hinpassen, muß ich selbstverständlich dran denken, building=yes oder irgendwelche 3d-Tags vom Ziel zu entfernen.

Viele dieser Aktionen machen aber auch dann Probleme, wenn jemand die OSM-ID in seinen Dokumenten (Wiki, Webseite, Report, …) verwendet. Diese Probleme sind mMn nicht auf den uuid-Tag beschränkt.

Klar, aber hier hat derjenige, der diesen Identifier braucht eine reelle Chance das wieder hinzubiegen. Mit OSM-IDs geht das nicht mehr - die sind verbrannt.

ok, da ist was dran. Ist aber wohl so ähnlich wie mit den TMC-Tags. Keiner kennt sie, sind verd… kompliziert und keiner traute sich ran. Dann springen auch noch die Anwender ab und das war es dann.

ach ja, irgendwo hast du geflagt, wer die uuids vergibt: der interessierte Mapper selber. Es gibt für jede Plattform entsprechende Pogramme. In Linux z.B. uuidgen; Microsoft kennt und nutzt das natürlich auch.


walter@wno-server:~/osm/qgis$ uuidgen
da7b4de1-4c68-40ca-9735-53e559fcce54
uuidgen
91759290-1a61-43b4-9aac-e55f8e79b5a7
...
...

Gruss
walter

ps: was ist denn mit “meiner” 1111111? Die beschreibt doch immer noch die Grenze von Deutschland als Liste von mehrere Multilinestrings? Welchen Link meinst du denn? Dann schau ich mir den mal an.
Das “Entführen” von Objekten mit besondere OSM-ID kenne ich ja von Steve’s Node °1 aber doch nicht von r1111111. Da achte ich schon ein wenig drauf, hat schließlich einige Mühe gekostet, die zu bekommen :wink:

-snip- war nix

-snip- war auch nix :frowning:

Wie soll das bei Wanderwegen funktionieren - da sind die valide “ffreier” !

Jan

Auf http://wiki.openstreetmap.org/wiki/Template:DisplayRoute habe ich das Template angepasst,
so dass auch obiger Link jetzt funktioniert.
Auf die gleiche Weise können von mir aus auch gerne weitere Kriterien dazukommen.

Die Permanent ID könnte z.B. bei Straßen- und Buslinien-Relationen gut funktionieren, bei Wanderwegen ist das sicher schwieriger oder gar nicht anwendbar.

Ich hab mich aber gerade bei Wanderrouten schon gefragt, warum die überhaupt im Wiki aufgelistet sein müssen. Viel schöner fände ich es, wenn man sich über die Overpass API eine Liste dynamisch generieren könnte, z.B. nach Operator oder nach Gebiet. Konkret stelle mir da eine Tabelle als dritten Tab im Overpass Turbo vor. Die Spalten der Tabelle könnte man entweder als Parameter übergeben oder anhand der vorhandenen Tags im Ergebnis dynamisch erzeugen.

Man müsste dann aber die im Wiki gepflegten Meta-Informationen wie Status, “zu prüfen” und Kommentar (note) als Tags an die Relation hängen. Wobei man solche Meta-Informationen eher nicht in der Datenbank haben möchte, oder? Bei vollständigen Relationen könnte man diese Infos ja aber dann entfernen. Allenfalls noch gar nicht erfasste Routen würden als ToDo-Liste noch im Wiki bleiben, da man sonst leere Relationen ohne geographischen Bezug anlegen müsste.

Was meint ihr?

Gruß,
Norbert

Danke Walter, manches ist nun klarer geworden. Richtig überzeugt bin ich aber ehrlich gesagt nicht.

Vorweg: Ich weiß nicht, ob Du meine Aufzählung vielleicht ein wenig mißverstanden hast: ich habe einige Fälle aufgeführt, in denen die “Lösung” mit OSM-IDs nicht funktioniert, und wollte unvoreingenommen wissen, wie sich UUIDs in diesen Fällen nach Deiner Vorstellung schlagen - nicht im Voraus behaupten, daß diese auch nicht helfen.

Noch einmal zu einigen der numerierten Punkte:
ad 1. Was, wenn vor dem Zusammenfügen beide Ausgangswege eine uuid=* hatten? Bei Bearbeitungen mit unserem geliebten Potlatch geht unweigerlich eine verloren, bei JOSM hängt es vom Nutzer ab. Aber im Idealfall steht im neuen Objekt uuid=xxx;yyy. Dann könnte das Objekt zwar noch unter beiden UUIDs gefunden werden, aber nicht mehr per einfachem Key/Value-Vergleich, sondern man müßte schon nach Substrings suchen, bzw. bei der Overpass API per Regex.
ad 3./4. Wenn das Aufspalten grundsätzlich problematisch ist, muß der Editor eine klare Vorgehensweise beherrschen bzw. eine Handlungsempfehlung an den Nutzer geben. Wie soll diese aussehen? Ich kann mir nicht vorstellen, wie per Algorithmus auch nur einigermaßen zuverlässig entschieden werden kann, welches der Tochterobjekte nun das “bedeutsame” ist, welches die UUID behalten soll.

Meines Erachtens steht schon die Verwendung von UUIDs in OSM (mit seiner Arbeitsweise) im Widerspruch zum UUID-Konzept. UUIDs sollen eindeutig sein, daher werden sie (in anderem Zusammenhang) für jedes Objekt automatisch vergeben, und zwar so, daß zwei Objekte (praktisch) nie dieselbe UUID bekommen. Tags in OSM sind im allgemeinen nicht eindeutig (etwa name=Bahnhofstraße); und selbst wenn man initial eindeutige Werte vergibt, kann (lies: wird) etwa durch Kopieren von Objekten oder Merkmalen sowie Aufspalten von Wegen die Eindeutigkeit verloren gehen. Die schon genannten AND_nosr_r-Tags (sowie AND_nosr_p und AND_nodes) waren ursprünglich wohl mal dazu gedacht, ein Import-Update durchführen zu können. Es gab sicher auch noch andere Gründe, warum es dazu nie gekommen ist, aber den Objekten mit diesen Tags sind genau die oben aufgeführten Bearbeitungen widerfahren, die sie zur Identifizierung unbrauchbar gemacht haben.

Ein weiteres Problem hast Du schon selbst angesprochen: kryptische Tags. Den zur eindeutigen Identifizierung gedachten Tags von AND, TMC, openGeoDB et al. ist gemein, daß “der normale Mapper” sie nicht versteht (bzw. mangels Dokumentation nicht einmal eine Chance dazu hat). Eine bessere Dokumentation wäre zwar möglich, dennoch würde es UUIDs m.E. ähnlich ergehen. Selbst ein fortgeschrittener “normaler Mapper” (ganz zu schweigen von einem Anfänger) braucht sie in der Regel nicht, noch dazu sind UUIDs nicht unbedingt ein intuitives Alltagskonzept, das jeder sofort versteht. Also würden sie bei Bearbeitungen einfach links liegen gelassen, was genau falsch sein kann. Oder gelöscht, was (außer nach dem Kopieren) immer falsch ist.

Allerdings sehe ich auch keinen Weg, die Tags weniger kryptisch zu formulieren. uuid=* ist für “Uneingeweihte” unverständlich, aber mit einem furchtbar langen (dafür erklärenden) Schlüssel (“this_object_has_the_following_unique_identifier_please_edit_carefully”=*) ist niemandem gedient (würde noch nicht einmal helfen, da viele Leute bei OSM des Englischen nicht hinreichend mächtig sind). Aber auch ein Wert wie uuid=“da7b4de1-4c68-40ca-9735-53e559fcce54” sieht erst einmal wie Bitmüll aus und ist schon deswegen in Löschgefahr.

War nur von allen denkbaren Beispielen für eine komplette Umdeutung das, welches Dir am besten vertraut sein dürfte. Es wäre ja theoretisch möglich, daß die Relation vorher ebenfalls für ein “bedeutsames” Objekt stand.

Da trffst du bei mir voll ins Auge; genau das ist meine Intention bei dieser ganzen leidigen Diskussion:

warum immer wieder manuell irgendwelche Tabellen im Wiki pflegen, wo die Daten dazu doch in der OSM-DB liegen oder liegen könnten?

Hast du zufälligerweise den aktuellen Thread Bundestraßen und deren Routing verfolgt? Da hab ich das bereits angeregt (tag: checked=*). Der wird benutzt und auch ausgewertet - aus technischen Gründen aber leider noch nicht im Wiki.

Gruss
walter

Ich möchte natürlich jetzt nicht anregen, jeden Pups in die DB zu klopfen aber note, description oder während eines Projektes “checked” sollte doch wohl drin sein.

ich auch nicht mehr. Die Probleme beim Editieren UUID-ter Objekte sind so mannigfaltig, daß das wirklich keinen Sinn - auch für mich - macht.
Schade. Bleibt nur die Hoffnung auf Api 0.8, denn in 0.7 kommt das sicher nicht rein - wann immer es die mal geben sollte.

Ne ne, die ist ab Version 1 nie was anderes gewesen. Hatte eines Nachts gemerkt, daß die Id bald vergeben wird und in daher in den letzten Sekunden vorher 3-4 neue Rels angelegt - und Glück gehabt. Ist zwar nicht die feine Art aber jetzt kann ich das wohl beichten :wink:

So, jetzt geht ich mal uuid begraben und warte auf die 0.8.

Gruss
walter

Den Thread hab ich nur überflogen. Für neu angelegte Relationen, die nach dem Vier-Augen-Prinzip von einem Zweiten überprüft werden sollen (z.B. das “überprüft von” bei Autobahnen), hätte ich die Logik analog zu einem Fixme Tag eher umgedreht: der Erfasser fügt das Tag hinzu (fixme:check=yes, to_be_checked=yes oder so) und der Prüfende entfernt es wieder, User und Datum sind durch das Changeset definiert. Hätte den Vorteil, dass nach Abschluss des Erfassungs-/Bearbeitungs-Prozesses die dazu benötigten Meta-Informationen wieder entfernt werden können.

Tags können von automatischen Auswertungen halt viel einfacher gelesen werden als die History.
Die checked-Tags können nach (überwiegender) Durchführung des Projektes auch in der jetzigen Form entfernt werden.

Mach ich bei anderen genauso - obwohl mich Netzwolf dafür ja bedauert :wink:

Das war vor ein paar Tagen ein Schnellschuß mit der Option, den Namen und die Bedeutung von checked=* noch anzupassen. Insofern würde ich das nicht so eng sehen.

Derzeit bedeutet das in etwa “Ich, …, hab mir das zuletzt … angesehen und da war wohl alles ok” Das dann in dieser kleinen Grafik mit ausgewertet und dann weiss jeder, wo noch was zu tun ist - und das fast ohne Wiki :wink:

Gruß
walter