[OSM-Devserver] OdBL Auswertung, Take-One
Peter Körner
osm-lists at mazdermind.de
Di Okt 26 14:51:55 CEST 2010
Am 26.10.2010 14:06, schrieb Frederik Ramm:
> Damit nimmst Du einen betraechtlichen Teil der Arbeit vorweg, die Jakob
> Altenstein in seiner Bachelor-Arbeit machen soll. Aber mal sehen,
> vielleicht kommt ihr ja zu unterschiedlichen Ergebnissen - in einer so
> wichtigen Frage kann etwas Redundanz ja nicht schaden ;)
Das war auch eine Befürchtung meinerseits. Leider hat er sich bei mir
noch nicht gemeldet, sonst hätte ich mit ihm Abgesprochen bevor ich
diese Informationen veröffentlicht hätte.
Ich habe mein Ziel eigentlich auch schon erreicht, daher folgender
Kompromiss: Ich kümmer mich mal um die anderen Hundertmillionen Aufgaben
und lass Jakob mal machen -- mein Source steht ja offen.
> Eine Sache, die er auch machen soll/wird, ist eine Abschaetzung,
> inwiefern eine Aenderung eine Schoepfungshoehe hat - z.B. 1000x
> created_by loeschen hat keine.
Da ich mir eine solche Abschätzung nicht zutraue (weder in persona noch
via Code), würde ich eine andere Vorgehensweise vorschlagen, die ich in
der README auch schon umrissen habe: Ein Replay der Änderungen.
Beispiel:
<node id="100" version="1" uid="1111">
<tag k="highway" v="road" />
<tag k="name" v="my first road" />
</node>
<node id="100" version="2" uid="2222">
<tag k="highway" v="residential" />
</node>
<node id="100" version="1" uid="3333">
<tag k="name" v="Peter's Street" />
</node>
Wenn Nutzer 1111 und 333 zustimmen, 2222 aber nicht, dann könnte ein
Programm mit folgendem Algorithmus den Zustand der Node ermitteln wie er
wäre, wenn 2222 nicht mit gewirkt hätte:
1. Neue Tag-Liste zurücksetzen
2. Version lesen
4. wenn Version NICHT von einem OdBL-Zustimmer ist, gehe zu 2.
3. Tags der Version mit den Tags der Vorgängerversion vergleichen (mit
Leerer Liste wenn Version = 1)
4. Tags die sich von der Vorgängerversion unterscheiden auf die neue
Tag-Liste anwenden
5. Wenn eine weitere Version vorhanden ist, zu 2. gehen
Im obigen Beispiel würden (unter ignorieren von Benutzer 2222) folgende
Tags raus kommen:
<tag k="highway" v="road" />
<tag k="name" v="Peter's Street" />
Wenn der nicht zustimmende Benutzer also, um bei deinem Beispiel zu
bleiben, nur created_by-Tags entfernt hat, dann wären die nach dem
entfernen seiner Änderungen halt wieder drin, sonst hätte sich aber
nichts geändert.
> Was Dein Tool idealerweise machen sollte, ist, am Ende ein .osc
> ausgeben, das ein Objekt in einen ODbL-Cleanen Zustand versetzt ;)
Oder einen ODbL-Cleanen Planer. Oder einen ODbL-Cleanen
Full-Experimental-Dump einer der kompletten Historie, so als hätte es
die Benutzer nie gegeben. All das ist möglich.
Lg