x

Arbeit mit planetfiles aus der Zeit vor der API 0.6


Geschrieben von projecter63 (Gast) am 30. April 2017 18:53:39: [flux]

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 </osm>-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


Antworten: