Arbeit mit planetfiles aus der Zeit vor der API 0.6

Moin,

warum überhaupt so’n Kram ?
Wir haben hier in Lübeck bald den 100. Stammtisch und wollen diesen nutzen, um mal wieder mit dem Thema OSM auf die Öffentlickeit und die Presse zuzugehen. Da ich Ende letzten Jahres eine große Karte vom Lübecker Stadtgebiet gerendert habe (M 1:15.000 in der Abmessung ca. 2 x 1 m), kam die Idee auf, den Stand der OSM-Daten zum Zeitpunkt des 1. Stammtisches mit den gleichen Renderregeln als vergleichbare Karte zu erstellen, um die lokale Entwicklung von OSM in der Zeitspanne unseres Stammtisches aufzuzeigen.

Also habe ich mir den alten Planeten geladen (zu Probezwecken gleich den von vor zehn Jahren, da dieser “schön klein” ist - planet-070613.osm.bz2) und mit der Bastelei angefangen:

  1. Dieser Planet stammt noch aus der api 0.3-Zeit; ich habe ihn erstmal mit 04to05.pl ins api 0.5-Format gehebelt und
  2. mit
sed 's/visible="1"/uid="1" user="1" visible="true" version="1" changeset="1"/g' 

die fehlenden Attribute nachgeschoben.
3) Mit vi die ersten beiden Headerzeilen geändert und die dritte Zeile (<bounds …/> ergänzt. Nun schaut das schonmal nach api 0.6 aus.
Aber es gibt Fehler in den Ursprungsdaten; so habe ich
4) leere values (v=“”) durch Rauswerten der gesamten Zeile gekillt,
5) leere refs (ref=“”) mit einem existierenden 'Dummy-Wert gefüllt (dem eines existierenden Knotens außerhalb des zu rendernden Gebietes) und
6) leere roles (role=“”) durch Entfernen der gesamten role unschädlich gemacht.

Aber jetzt gibts noch’n fiesen Fehler, an dem ich gerade scheitere:
7) Es gibt <ways …> ohne ursprüngliches visible=“1”-Attribut; damit funzt die Ersetzung aus 2) nicht.

Im Ergebnis komme ich in der nicht gepackten osm-Datei bis Zeilennummer ca. 56.6 Mio von insgesamt 110.8 Mio Zeilen.
Klemme ich das -Tag ans Ende der mit osmosis extrahierten bbox

--bounding-box top=54.0 left=10.5 bottom=53.7 right=11.0

und rendere das dann mit Maperitive, sehe ich schon mal ein gutes Stück des Lübecker Stadtgebiet, aber noch recht löcherig - logisch, osmosis (V 0.40.1) reißt ja am ersten Fehler vom Typ 7) die Hufe hoch.

Jetzt frage ich mich:
Ist der Weg, alte Planeten zu nutzen, tatsächlich derartig steinig oder sehe ich nur den Wald vor lauter Bäumen nicht?
Und wer weiß, wieviele Fehlertypen da noch so auftauchen in den verbleibenden gut 54 Mio Datenzeilen :(.

Gibt es also einen einfachen Weg, aus einem geladenen planetfile eine bbox herauszuschneiden, auch wenn dieses aus der Zeit vor api 0.5 stammt?

Die Daten brauche ich natürlich so, dass Maperitive diese auch rendern kann. Osmosis V0.35 liest ja wohl noch api 0.5-Daten, läßt mich dann aber wohl auch auf dem alten Format sitzen - dann wäre Freund Maperitive “Neese”. Außerdem schätze ich mal, dass Osmosis V0.35 auch an dem in 7) geschilderten Fehlertyp scheitert …
Randinfo: ich arbeite mit Linux/Ubuntu.

Leicht zermürbte Grüße von
Rainer

-snip-

Hi,

warum nicht das full-history-dump benutzen? [1]
Unter Processing solltest du ein paar Anregungen finden.

Alternativ den OpenStreetMap History Renderer verwenden? [2]
Weiß allerdings gerade nicht, ob dieser noch nutzbar ist.
Am Projekt ist länger wohl nichts mehr passiert.

Weitere Alternative: iOSMAnalyzer, wenn du ein paar Stats über Lübeck haben möchtest [3].

Hoffe das hilft dir weiter.
Viele Grüße
Pascal

[1] http://wiki.openstreetmap.org/wiki/Planet.osm/full
[2] https://github.com/MaZderMind/osm-history-renderer
[3] https://github.com/zehpunktbarron/iOSMAnalyzer

Da du das jetzt im 0.5-Format hast, nimm ein altes Osmosis: https://wiki.openstreetmap.org/wiki/Osmosis#API_0.5_support

Gruss
walter

Größtes Problem dabei: im Full History Dump fehlen (ersatzlos!) alle Objektversionen, die einer Redaction zum Opfer gefallen sind. Wenn ihr viele ODbL-Ablehner hattet, kann das den Spaß mit den Daten gehörig vermiesen.

Hi,

guter Punkt, aber will man(n) diese Daten überhaupt visualisieren, die mal in OSM drin waren, und jetzt nicht mehr?
Mir persönlich wäre es in dem beschriebenen Fall vom TE nicht so wichtig.

Viele Grüße
Pascal

Aber selbstverständlich will man das! Schließlich geht es darum, den damaligen Zustand zu zeigen und dazu gehören auch inzwischen gelöschte Objekte.

Ist das für die erwähnte “Öffentlickeit und die Presse” wirklich wichtig? Willst du dann dem Reporter erklären, äh, sorry, wir haben die Lizenz gewechselt, daher wurden viele bereits erfasste Daten wieder gelöscht und die sind jetzt nicht mehr da oder vlt. doch?
Auch wenn dieser Fall vermutlich nicht eintrifft, weil evtl. alles dies was verloren gegangen ist, wieder neu gemappt wurde.

Wie gesagt, mMn ist dies speziell in diesem Fall hier egal.
Ansonsten stimme ich dir zu, dass für uns hier im Projekt natürlich alle Daten betrachtet werden soll(t)en.

Just my 2 Cents.

Ich weiß nicht genau, wie die ODbL-Ablehner Situation in Lübeck war. Im schlimmsten Fall sieht 2007 mit dem Full History File wie ein wüster Flickenteppich aus und nicht wie etwas das durch organisch gewachsenes Mappen entstanden wäre.

Hi,

Wenn der TE wirklich mit alten Dumps und den unterschiedlichen API Versionen weiterarbeiten möchte,
sollte ihm auch dieser Link aus OSM Help weiterhelfen: “Convert XML Format: 0.5–>0.6 (osmosis)
https://help.openstreetmap.org/questions/40254/convert-xml-format-05-06-osmosis

Viele Grüße
Pascal

N’Abend,

Danke für die Hinweise; zwei Spuren werden ich aufnehmen:

  1. Die aus #10 führt zu zu Osmosis V0.35 und folgender Aussage:

(mit AOI = Area Of Interest - schätze ich). Wenn das funktioniert, wäre ich durch … :slight_smile:

  1. Aus Interesse und weil es uns weitere Möglichkeiten hinsichtlich unseres 100. Stammtisches böte:

Wenn ich mit dem full history dump arbeiten wollte (#3, [1]), dazu die 57 GB herunterlade und unter Einsatz einer nicht unerheblichen Zeit hoher CPU-Auslastung aus dem multi-stream-file ein single-stream-file erzeuge, habe ich dann mit OSMOSIS eine reale Chance, mein AOI zu beliebigen Zeitpunkten herauszuschneiden ?? Hat das schon mal jemand erfolgreich geschafft ?? Die Aussage

kommt etwas “wischiwaschi” rüber … Wenn das klappt, wäre es toll ich ich wäre dabei …

Oder muss ich dazu am Ende Osmium bemühen, dessen umfangreiche Installation/Kompilierung sich für mich als nach Tagen zu bemessen anhört und etwas overdosed für meinen/unseren Anwendungsfall scheint.

Grüße aus Lübeck
Rainer

Dieses ganze multi-stream → single-stream Tamtam kann man sich m.E. komplett schenken, wenn man mit PBF arbeitet. Generell mein Tipp zum Ausschneiden von Full History Files wäre das Osmium Tool: http://osmcode.org/osmium-tool/manual.html#working-with-history-files. Funktioniert wie auf der Seite beschrieben und ist sehr flott.

So schlimm ist das wirklich nicht. :sunglasses:

Und warum nicht #4? Ein Test damit sollte am einfachsten und schnellsten sein.

Gruss
walter

N’Abend,

Dass Osmosis 0.35 die api 0.5-Daten lesen kann, war mir schon eingangs klar (hab ich ja in #1 geschrieben), dass es die [file=“output_0.6.osm”]-Option dort gibt, ist mir neu, habe ich erst in #10 kapiert und dann in #11 verschriftlicht.

Aber natürlich auch gern ein “Danke” an wambacher - ich hab’s nur in #4 noch nicht geblickt …

Grüße Rainer

N’Abend,

wie kann man denn am besten zwei Osmosis-Versionen (eine neuere 0.40 und die alte 0.35) parallel auf einem Rechner betreiben, ohne diese wechselseitig immer wieder neu zu installieren ?? Gibt’s dazu ein howto?
(Ich nutze Linux Mint 17.3 Rosa.)

N8 Rainer

ich mach das so:

Zuerst lege ich die Versionen in unterschiedliche Verzeichnisse. Und dann suche ich mir das passende raus:


#!/bin/bash
#
OSMOSIS=/opt/install/osm/osmosis/osmosis_0.45/bin/osmosis
...
$OSMOSIS \
          --read-replication-interval \
          --simc \
          --lpc interval=300 \
          --write-xml-change test.osc

Die Optionen für osmosis musst du natürlich anpassen.

Gruss
walter

jau, funktioniert :slight_smile:

Danke Rainer