[Tutorial] Entstehung der ÖPNV Fahrzeit Heatmaps 2.0 mit PostgresApp, TileMill und QGIS

By |2018-12-06T16:36:07+00:0005/2014|Categories: DataLab|Tags: , , , , , , , , |0 Comments

Entstehung-OPNV-Fahrzeit-Heatmaps-20

Wie entsteht eine ÖPNV Fahrzeit Heatmap Karte?

Datengrundlage: Von Openstreetmaps zur PostGIS Datenbank

Dieses Tutorial ist sehr hilfreich: How to import OpenStreetMap data into PostgreSQL

  • laufende Postgres Datenbank, z.B. mit Postgres.app
  • Postgres.app starten, psql ausführen

open-psql

  • Eine Datenbank erstellen mit
    CREATE DATABASE <dbname>;
  • Mit \l (kleines L) kann man sich alle Datenbanken anzeigen lassen. Mit \q wieder beenden und ins normale Terminal zurückkehren. Anschließend Postgis Funktionalität zur erstellten Datenbank hinzufügen mit
    psql -U <username> -d <datenbankname> -f /Applications/Postgres.app/Contents/Versions/9.3/share/postgresql/contrib/postgis-2.1/postgis.sql
  • Dies sollte mit folgendem quittiert werden:
    SET
    BEGIN
    CREATE FUNCTION
    CREATE FUNCTION
    ...
    CREATE FUNCTION
    CREATE FUNCTION
    GRANT
    GRANT
    GRANT
    COMMIT
  • Nun der Download des osm2pgsql Programms für MacOSX
  • Nun sind noch Zusatzfunktionalitäten zur PostGIS Datenbank hinzuzufügen, welche mit der Datei 900913.sql (zu finden z.B. hier oder im osm2pgsql Ordner) realisiert werden:
    psql -d <datenbankname> -f 900913.sql
  • Dies sollte mit folgendem quittiert werden:
    INSERT 0 1
  • Anschließend kann eine binäre OpenStreetMap Datenbank zur PostGIS Datenbank hinzugefügt werden. Download der betreffenden OpenStreetMap Daten im .osm.pbf Format, z.B. bei Geofabrik.de.
    osm2pgsql -cGs -d <datenbankname> -S /usr/local/share/osm2pgsql/default.style <.osm.pbf>
  • Dies sollte mit folgendem quittiert werden:

readingdata-to-postgisdb

Nun sind die Daten von OpenStreetMaps in eine lokale Postgres Datenbank (PostGIS) kopiert und können von gängigen Programmen genutzt werden.

Kartografie mit TileMill

TileMill ist ein Programm zur Gestaltung von Karten. Das ist eine Wissenschaft für sich, nicht umsonst gibt es Studiengänge dazu. Eine Karte ist eine verkleinerte, verebnete, vereinfachte, generalisierte Darstellung der Wirklichkeit. Auf ihr müssen immer Dinge weg gelassen werden und je nach Zoomstufe in Teilen dann wieder dargestellt werden. TileMill bietet nun die Möglichkeit, sich mit der PostGIS Datenbank zu verbinden und alle Inhalte wie gewünscht darzustellen.

TileMill-Connect-to-PostGIS

In TileMill wird ein Layer mit Daten aus der Postgres Datenbank angelegt. Dabei ist die Connection:

 dbname=<dbname> host=localhost port=5432 user=<user>

und das Query in der Datenbank ist für OpenStreetMaps Linien z.B.:

 planet_osm_line

Mit den verbundenen Datenbank kann nun in CartoCSS die Darstellung der Inhalte definiert werden. Beispielhaft für Zoom Stufe 14 die Hotels samt Namen:

[zoom=14]{
  #planetosmpolygon[tourism = 'hotel'],
  #planetosmpoint[tourism = 'hotel']{
	building-fill: red;
    building-fill-opacity: 0.8;

    point-file:url(hotel.svg);
    point-transform:"scale(0.03)";

    ::hotellabel{
    text-name: [name];
    text-size: 12;
    text-face-name: 'DejaVu Sans Book';
    text-halo-radius: 2;
    text-halo-fill: @darkgreen;
    text-fill: white;
    text-placement-type: simple;
    text-allow-overlap: true;
    text-horizontal-alignment: right;
    text-dx: 15;
    }

  }
}

Dies weist TileMill dazu an, aus der Datenbank planetosmpolygon alle Linien (also Gebäudeumrisse) sowie aus der Datenbank planetosmpoint (also alle Punkte) mit der Kodierung Hotel zu suchen und entsprechend zu rendern. So wird Schritt für Schritt die Karte hergestellt.

Bei der Farbgebung sollte man sich an die Tipps von Designern halten. Das Auge schaut ja schließlich mit.

ÖPNV Fahrzeit Heatmap aus Fahrplandaten

Hat ein Verkehrsverbund die Fahrplandaten frei gegeben, kann man sich diese als maschinenlesbare Datei runter laden. Vielen Dank liebe Verkehrsverbünde!

Anschließend müssen die betreffenden Fahrzeit aus dem Datensatz ausgelesen, interpoliert und gerendert werden. Dies geschieht z.B. mit Matlab (Tutorial: 3D Kennfeld visualisieren) oder Python.

Das entstandene Bild muss nun noch georeferenziert werden, damit es in der Kartenanwendung an der richtigen Stelle angezeigt wird. Hier hilft QGIS weiter.

Georeferenzieren mit QGIS

Das OpenSource GIS System QGIS bietet neben unzähligen anderen Funktionen auch die Möglichkeit der Georeferenzierung. Das Einpassen über 4 Passpunkte mit anschließender Transformation ermöglicht das Georeferenzieren des Layers.

Georeferenzierungs-Plugin von QGIS

Georeferenzierungs-Plugin von QGIS

Das resultierende GeoTIFF kann dann in TileMill eingelesen werden.

GeoTIFF in TileMill

Einlesen des georeferenzierten Layers in TileMill

Einlesen des georeferenzierten Layers in TileMill

Tutorial: Georeferenzieren in TileMill

Anschließend kann alles gerendert und auf dem eigenen oder z.B. Mapbox TileServer veröffentlicht werden.

Resultat: ÖPNV Fahrzeit Heatmap 2.0

Kontakt

ÖPNV Heatmap individuell erstellen

Die oben dargestellte Variante ist ein Beispiel für die Stadt Cottbus und den Hauptbahnhof als Ankunftsort. Mit dargestellt sind Hotels der Stadt. Eine günstige Lage ist natürlich förderlich, entsprechende Werbung voraus gesetzt.
Wenn Sie ebenfalls eine ÖPNV Heatmap für Ihre Webseite, Baugebiet, Hotel, Projekt, o.ä. benötigen, erstellen wir Ihnen diese gern.
Kontakt

Leave A Comment