[Talk-de] 2 Fragen zu Osmosis & Change sets

Frederik Ramm frederik at remote.org
Mi Nov 11 19:58:48 UTC 2009


Hallo,

> osmosis --read-xml file="osnabrueck_april.osm" --read-xml file="osnabrueck_november.osm" --derive-change --write-xml-change file="changefile_1.osc"
> 
> so ist dieses 9.900 kb groß.
> 
> Nehme ich den umgekehrten Weg:
> 
> osmosis --read-xml file="osnabrueck_november.osm" --read-xml file="osnabrueck_april.osm" --derive-change --write-xml-change file="changefile_1.osc"
> 
> ....dann sind es 10.200 kb ?

Ja, das ist wie bei der Division. Nutzt man "10/2", erhaelt man 5; nutzt 
man hingegen "2/10", erhaelt man auf einmal nur 0,2!

Spass beiseite, die Antwort nimmst Du eigentlich schon mit Deiner Frage 
zwei vorweg; wenn ein Way oder eine Relation geloescht wird, so steht im 
Changeset nur die "Kopfzeile" drin, nicht aber das komplette Objekt wie 
bei der Neuanlage.

Zudem hat Osmosis die Eigenart, die Argumente rueckwarts zu benutzen, 
d.h. Dein erster Aufruf erzeugt tatsaechlich ein Changefile, das die 
Aenderungen von November nach April beschreibt (und daher viele 
Loeschungen enthalten wird), waehrend Dein zweiter Aufruf das 
"vorwartsgerichtete" Changefile mit tendenziell mehr neu angelegten 
Objekten erzeugt.

> 2.) Was genau wird eigentlich alles in das diff integriert?
> Jegliche Veränderung eines Objektes? Korrekt?

Sobald ein Objekt erzeugt oder veraendert wurde, wird es komplett (mit 
Tags und Verweisen) ins Diff aufgenommen. Bei Loeschungen scheint das 
auch der Fall zu sein, wobei ich dachte, dass das frueher anders war.

> Gibt es einen Weg dieses automatisiert zu verhindern, dass in einem solchen Falle
> ein Objekt in dem diff auftaucht?

Nein, Osmosis kann das nicht. Aber Du koenntest natuerlich, falls Du 
ohnehin nicht gedenkst, Versionsnummern und Changesets auszuwerten, mit 
einem simplen "sed"-Aufruf alles auf 1 setzen:

sed -re 's/(changeset|version)="[0-9]+"/\1="1"/g' < alt.osm > neu.osm

(Dein 2. Beispiel aus der Mail hatte kein Changeset-Attribut, aber ich 
nehme an, das war ein copy+paste-Fehler?)

Bye
Frederik

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




Mehr Informationen über die Mailingliste Talk-de