x

Hilfestellung bei der Erstellung von Karten aus historischen Daten


  1. Hilfestellung bei der Erstellung von Karten aus historischen Daten · Lübeck (Gast) · 23.05.2017 07:18 · [flux]

    Moin!

    im nächsten Monat haben wir unseren 100. Stammtisch und da lag es nahe einen graphischen Rückblick zu halten. Kollege Rainer hat sich sehr intensiv mit dem Thema beschäft - ist aber leider daran gescheitert entsprechende Daten für ein Rendering in Maperative zu beschaffen.

    Wir haben nun die Hoffnung, dass einer von Euch eine entsprechende Umgebung am laufen hat und uns ggf. die entspechenden Daten zur Verfügung stellen kann.

    Rainer hat die Problematik einmal zusammengestellt und ich erstelle bzw. beobachte das Posting. Hier seine Zusammenfassung:

    Ich bräuchte die osm-Daten im API-0.6-Format (für die Weiterverarbeitung
    mit Maperitive) für die Zeithorizonte Nr. 1-3 mit

    Nr. | date planet.file | Ereignis


    1 | Juni 2007 | vor 10 Jahren
    2 | April 2009 | 1. Stammtisch HL
    3 | Mai 2013 | 50. Stammtisch HL
    (4 | aktuell | 100. Stammtisch - Karte vorhanden)

    jeweils für bounding-box top=54.0 left=10.5 bottom=53.7 right=11.0.

    Der von mir bisher verfolgte Toolchain
    a) convert API-0.4 to API-0.5 mit
    bzcat planet-070613.osm.bz2 | \
    perl 04to05.pl | \
    bzip2 > planet-070613.api0p5.osm.bz2
    und
    b) Einsatz von OSMOSIS V0.35 scheitert - trotz diverser Korrekturen wie
    - Löschen leerer values
    - Füllen leerer refs
    - Löschen leerer roles
    auf der Basis von sed -
    und führt immer wieder zum Abbruch (nunmehr zwar immerhin 'erst' bei
    Zeile 40 Mio von 105 Mio - für den datentechnisch eher winzigen Fall Nr.
    1 ... aber Abruch ist Abbruch !).

    Meine Hoffnung:
    Möglicherweise ist jemand innerhalb der OSM-Community in der Lage und
    bereit, uns z.B. mit OSMIUM und auf der Grundlage eines aktuellen
    osm-history-files die drei o.g. Lübeck-files Nr. 1-3 in der angegebenen
    bbox zur Verfügung zu stellen ...
    und im Idealfall auch das howto dazu zu erklären ... Im Moment scheue
    ich noch dem Aufwand der Übersetzung von OSMIUM aus den Code-Quellen und
    dem Einbinden der Vielzahl an separaten Bibliotheken - und am Ende mag
    ich auch nicht riskieren, mein derzeit prima laufendes Linux-System zu
    killen ...

    Detailfragen kann ich allerdings nicht beantworten und nun bleibt für uns nur die Hoffung, denn diese stirbt bekanntlich zuletzt.

    Gruß aus Lübeck

    Jan


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · Harald Hartmann (Gast) · 23.05.2017 07:41 · [flux]

      Ist das jetzt ein erneuter Aufruf zu Arbeit mit planetfiles aus der Zeit vor der API 0.6?


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · Lübeck (Gast) · 23.05.2017 07:44 · [flux]

      Moin!

      ich wußte nicht das es dieses Posting schon gibt - es ist jetzt vielmehr der Hilferuf zu einer Datenbereitstellung, da trotz tagelangen versuchens kein Ergebnis raus gekommen ist!

      Gruß Ja


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · mmd (Gast) · 23.05.2017 08:58 · [flux]

      Lübeck wrote:

      Im Moment scheue
      ich noch dem Aufwand der Übersetzung von OSMIUM aus den Code-Quellen und
      dem Einbinden der Vielzahl an separaten Bibliotheken - und am Ende mag
      ich auch nicht riskieren, mein derzeit prima laufendes Linux-System zu
      killen ...

      Wozu die Arbeit machen? Ein aktuelles System hat osmium als Paket mit dabei, zu finden unter dem Namen osmium-tool.

      Steht auch in der Installationsanleitung:

      Debian and Ubuntu

      Packages called osmium-tool are available for Debian and Ubuntu systems. (Do not install the osmium package, it is a very old version of the Osmium library.) Depending on your system, the packages might be rather old. Debian unstable and testing are tracking the development of Osmium closely. For Jessie those new packages are available in the backports repository.

      http://osmcode.org/osmium-tool/manual.html


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · projecter63 (Gast) · 25.05.2017 09:57 · [flux]

      Moin,

      ein letzter 'zaghafter' Versuch ...
      Ich bin derjenige, der die historischen Karten für Lübeck rendern würde, so ich die historischen OSM-Daten hätte bzw. mit OSMIUM freischneiden könnte ...

      1) Ich habe Linux Mint 17.3 Rosa 'unter der Haube' (läuft auf Basis von Ubuntu 14.04 - Codename Trusty Tahr)

      2) Bei der Paketsuche im Software-Portal der LinuxMintCommunity gibt es für osmium-tool genau einen Treffer, allerdings für Release 'Sarah' (damit wohl für die base Ubuntu 16.04; für mein System also nicht passend); der Link führt aber ohnehin ins Leere ("Das Paket osmium-tool konnte nicht gefunden werden") ...

      3) Das Osmium Tool Manual ist mir bekannt, genauso die Seite https://github.com/osmcode/osmium-tool/ … /README.md. Beides führt mich am Ende aber zum "Übersetzung von OSMIUM aus den Code-Quellen" ...

      Das "Übersetzung aus Code-Quellen" habe ich (noch) nicht gemacht und wenn ich mir die "Prerequisites" und die dazugehörenden Versionsanforderungen anschaue, frage ich mich, ob das auf meinem System überhaupt noch funktionieren würde. Und ein neues Linux-System aufsetzen, nur um an passende packages für OSMIUM zu kommen, mag ich auch nicht.

      Somit stecke ich gefühlt fest! Hat jemand noch'n Tipp für mich ?

      Grüße
      Rainer


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · ikonor (Gast) · 25.05.2017 20:24 · [flux]

      Ubuntu Pakete für osmium-tool gäbe es hier, allerdings nicht für trusty (http://osmcode.org/osmium-tool/ > Download):
      https://packages.ubuntu.com/xenial/osmium-tool

      Es gibt ein Docker file zum automatisierten Bauen der Quellen in einer separaten Umgebung (Container), das wäre vermutlich am einfachsten:
      https://gist.github.com/ImreSamu/5447252a4e750fd8c61e

      Ansonsten hier mein Protokoll (unter Ubuntu 16.04.) zum Bauen mit minimalen Abhängigkeiten (könnte aber unvollständig sein):

      1. Ordner zum Installieren anlegen

      Dort Kommandozeile öffnen, um dann nachher osmium-tool und libosmium nebeneinander in Unterordnern installieren ("git clone", siehe unten), damit wird libosmium automatisch gefunden:

      CMake looks for Libosmium in a few places. If it finds it, it will just work. One of the places it looks for Libosmium is in ../libosmium. So if you are using the git version, clone libosmium and osmium-tool in the same directory and it will find it.

      https://github.com/osmcode/osmium-tool/ … t-94706533

      2. osmium-tool

      Mit git clone wird die aktuelle Entwicklungsversion heruntergeladen, alternativ jeweils ein stabiles Release Zip herunterladen:
      https://github.com/osmcode/osmium-tool/releases

      git␣clone␣https://github.com/osmcode/osmium-tool
      
      sudo␣apt-get␣install␣libboost-dev␣libboost-program-options1.58-dev
      

      3. libosmium

      git␣clone␣https://github.com/osmcode/libosmium.git
      
      sudo␣apt-get␣install␣libexpat1-dev␣zlib1g-dev␣libbz2-dev
      

      4. Bauen

      siehe https://github.com/osmcode/osmium-tool#building

      Falls noch nicht bekannt, die Geofabrik bietet seit kurzem auch Full History Extrakte an:
      full history files on Geofabrik server (dev ML)


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · mmd (Gast) · 25.05.2017 20:55 · [flux]

      ikonor wrote:

      Es gibt ein Docker file zum automatisierten Bauen der Quellen in einer separaten Umgebung (Container), das wäre vermutlich am einfachsten:
      https://gist.github.com/ImreSamu/5447252a4e750fd8c61e

      An Docker habe ich auch schon gedacht, allerdings würde ich da eher ein Image mit ubuntu16.04 als Basis nehmen. Leider ist das Dockerfile von Imre schon 3 Jahre alt und funzt nicht mehr:

      Cloning␣into␣'osmium-tool'...
      --->␣bda4297503bc
      Removing␣intermediate␣container␣dd18b2679d3f
      Step␣26␣:␣RUN␣mkdir␣-p␣/osm/osmium-tool/build␣&&␣cd␣/osm/osmium-tool/build␣␣&&␣cmake␣..
      --->␣Running␣in␣6b5625037ddd
      --␣The␣C␣compiler␣identification␣is␣GNU␣4.8.4
      --␣The␣CXX␣compiler␣identification␣is␣GNU␣4.8.4
      --␣Check␣for␣working␣C␣compiler:␣/usr/bin/cc
      --␣Check␣for␣working␣C␣compiler:␣/usr/bin/cc␣--␣works
      --␣Detecting␣C␣compiler␣ABI␣info
      --␣Detecting␣C␣compiler␣ABI␣info␣-␣done
      --␣Check␣for␣working␣CXX␣compiler:␣/usr/bin/c++
      --␣Check␣for␣working␣CXX␣compiler:␣/usr/bin/c++␣--␣works
      --␣Detecting␣CXX␣compiler␣ABI␣info
      --␣Detecting␣CXX␣compiler␣ABI␣info␣-␣done
      CMake␣Error␣at␣/usr/share/cmake-2.8/Modules/FindBoost.cmake:1131␣(message):
      Unable␣to␣find␣the␣requested␣Boost␣libraries.
      
      Boost␣version:␣1.54.0
      
      Boost␣include␣path:␣/usr/include
      
      Detected␣version␣of␣Boost␣is␣too␣old.␣␣Requested␣version␣was␣1.55␣(or
      newer).
      Call␣Stack␣(most␣recent␣call␣first):
      CMakeLists.txt:44␣(find_package)
      

    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · ikonor (Gast) · 25.05.2017 21:21 · [flux]

      Schade, hab den Link zum Dockerfile erst nach meiner Installation irgendwo gesehen und gar nicht auf das Datum geachtet.

      Detected version of Boost is too old. Requested version was 1.55 (or newer).

      Keine Ahnung und nicht getestet, aber evtl. "libboost-program-options1.58-dev" statt "libboost-program-options-dev"?


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · ikonor (Gast) · 25.05.2017 22:18 · [flux]

      Sorry, hatte gar nicht auf dem Docker Hub nachgeschaut, dort gibt es ein Image für Version 1.6.1, das funktioniert:
      https://hub.docker.com/r/asymmetric/osmium-tool/


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · mmd (Gast) · 25.05.2017 22:28 · [flux]

      TL;DR: Spoiler


      Ja, prinzipiell kann man das aber auch einfach zu fuss machen:

      Dockerfile:

      FROM␣ubuntu:16.04
      
      RUN␣␣export␣DEBIAN_FRONTEND=noninteractive
      ENV␣␣DEBIAN_FRONTEND␣noninteractive
      
      RUN␣apt-get␣-y␣update␣&&␣apt-get␣-y␣upgrade
      
      RUN␣apt-get␣-y␣install␣osmium-tool
      

      und dann noch sowas wie:

      docker␣build␣-t␣osmium-test␣.
      docker␣run␣-v␣`pwd`:/data␣-ti␣osmium-test
      

      In der Kommandozeile kann man dann direkt osmium aufrufen, das Verzeichnis /data im Container zeigt dann auf das Verzeichnis, von dem aus "docker run" gestartet wurde.

      osmium time-filter -o /data/planet-20080101.osm.pbf /data/history-planet.osh.pbf 2008-01-01T00:00:00Z

      (Dateinamen entsprechend anpassen)

      ikonor wrote:

      Falls noch nicht bekannt, die Geofabrik bietet seit kurzem auch Full History Extrakte an:
      full history files on Geofabrik server (dev ML)

      Gute Idee: siehe http://download.geofabrik.de/europe/ger … in.osh.pbf

      2008 geht noch (siehe unten), 2007 ist dagegen nur noch eine traurige Punktwolke ohne irgendwelche Wege.



    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · ikonor (Gast) · 26.05.2017 09:18 · [flux]

      mmd wrote:

      2007 ist dagegen nur noch eine traurige Punktwolke ohne irgendwelche Wege

      Vielleicht Mitte Oktober 2007 versuchen?

      Since segments were dropped with the introduction of API 0.5, they are not included.

      https://wiki.openstreetmap.org/wiki/Planet.osm/full

      OSM Protocol Version 0.5 is an old version of the API, released on 2007-10-07

      https://wiki.openstreetmap.org/wiki/API_v0.5


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · projecter63 (Gast) · 27.05.2017 15:59 · [flux]

      BINGO 🙂

      Vielen Dank an Ikonor, mmd und Jan ! Mit dem Hinweis auf Docker und dem "Fahrplan" aus #10 hab ich's nun doch noch geschafft, die historischen OSM-Daten herauszutrennen.

      Für alle, die das eventuell mal nachvollziehen wollen, hier 'kurz' my way:

      Ausgangsproblem: Ich will ein package unter Linux installieren, mein OS ist aber für die vorhandenen packages nicht geeignet (zu 'alt') und selbst das Programm aus den sources kompilieren will/kann ich nicht ... Auch die Aktualisierung des PC-OS erscheint zur Lösung der gestellten Aufgabe overdosed.

      Schritt 1: 'docker' installieren (docker ist eine Virtualisierungssoftware, die Container bereitstellt, in der andere Software isoliert laufen kann. Das ganze Konzept ist offenbar neuer und smarter als das 'altbekannter VM's' und kann wohl auch einiges mehr ... Mit

      $␣wget␣-qO-␣https://get.docker.com/␣|␣sh
      und
      $␣sudo␣usermod␣-aG␣docker␣<username>
      

      wird docker installiert und der User <username> der Gruppe 'docker' hinzugefügt, um das ansonsten nervige 'sudo' zu unterbinden.

      Schritt 2: einen ersten docker-Container anlegen und Ubuntu (latest - hier V16.04.2) und osmium in den Container packen:

      ␣<mit␣$␣für␣Wirt-OS␣und␣#␣für␣Gast-OS␣im␣Container>
      $␣docker␣run␣-ti␣ubuntu␣bash
      #␣apt-get␣-y␣update␣&&␣apt-get␣-y␣upgrade
      #␣apt-get␣-y␣install␣osmium-tool
      #␣exit
      $
      

      Schritt 3: den frisch angelegten Docker-Container persitent machen (standardmäßig wird er geschlossen und wäre damit 'wech'), dazu zunächst die Container-ID ermitteln

      $␣docker␣ps␣-l
      $␣docker␣commit␣[Container-ID]␣ubuntu16.04.2-mit-osmium
      

      Nun haben wir im docker-Container als Gast-OS Ubuntu 16.04.02 mit osmium 1.3.0 am Laufen. Der Container kann mit

      $␣docker␣run␣-ti␣ubuntu16.04.2-mit-osmium
      

      gestartet werden. Nur, das Gast-OS ist noch nicht in der Lage, mit dem Wirt-OS zusammen gemeinsame Verzeichnisse zu nutzen. Ganau das braucht es aber, da ich ja die im Container erzeugten Daten später weiterverarbeiten (rendern) möchte. Dazu muß nun ein sog. docker-volume angelegt werden = Schritt 4.

      Dazu im Gast-OS ein geeignetes Verzeichnis (z.B. # /home/osmium-data) anlegen und wiederum persistent machen (Prozedere aus Schritt 3 wiederholen). Nun in das Verzeichnis des Wirt-OS wechseln, auf das auch das Gast-OS Zugriff haben soll. Mit

      $␣docker␣run␣-v␣`pwd`:/home/osmium-data␣-ti␣ubuntu16.04.2-mit-osmium
      

      erfolgt die Koppelung beider OS zwischen den jeweils gewünschten Verzeichnissen.

      Das war's! Osmium 1.3.0 läuft nun auf einem Ubuntu-14.04-PC in einem docker-Container mit Ubuntu-16.04.2

      Auffällig ist, dass diese Osmium-Version das Kommando 'extract' nicht unterstützt (Unknown command 'extract'. Try 'osmium help'). Das ist doof, können zwar mit time-filter

      #␣osmium␣time-filter␣-o␣/home/osmium-data/germany_2009-04-15.osm.pbf␣/home/osmium-data/germany.osh.pbf␣2009-04-15T12:00:00Z
      

      die Daten zum gewünschten Zeitpunkt aus dem osh.pbf-file herausgetrennt werden, aber z.B. 'germany' bleibt immer 'germany'. Als Datensäge habe ich mich erst einmal mit

      $␣osmconvert␣germany_2009-04-15.osm.pbf␣-b=10.4,53.65,11.1,54.05␣-o=luebeck_2009-04-15.osm.pbf
      

      'gerettet'.

      Möglicherweise hilft es hier, anstelle von

      apt-get␣-y␣install␣osmium-tool
      

      dem Hinweis aus #9 zu folgen und damit osmium 1.6.1 zu installieren - z.B. in einen zweiten Container ...

      Grüße aus Lübeck
      Rainer


    • Re: Hilfestellung bei der Erstellung von Karten aus historischen Daten · mmd (Gast) · 27.05.2017 16:34 · [flux]

      Prima. Dann steht ja eurem 100. Stammtisch hoffentlich sonst nichts mehr im Wege.

      Zu Schritt 2 & 3: normalerweise ist diese manuelle Vorgehensweise nicht empfohlen, da das Bauen des Images damit nicht gut reproduzierbar und somit auch automatisierbar ist.

      Daher hatte ich in #10 ein Dockerfile und dem docker build gearbeitet, sprich: man legt ein neues Verzeichnis an, erzeugt dort eine Datei "Dockerfile" an mit dem Inhalt aus #10, und startet dort dann das docker build wie oben beschrieben.