NYC Wires - Mapping Taxi Trips

NYC Wires - Mapping Taxi Trips ist eine Reihe von Datenskulpturen, prozedural generiert mit der 3D-Grafiksoftware Houdini. Basierend auf realen Daten von der TLC - Taxi & Limousine Commission New York.

Kontext
FH Potsdam: Datascapes mit Houdini
Zeitraum
2019
Dozent
Julian Braun
Das Tietelbild von NYC Wires - Mapping Taxi Trips. Das Tietelbild von NYC Wires - Mapping Taxi Trips.

Die Herausforderung

Houdini ist eine 3D-Grafiksoftware des in Toronto ansässigen Entwicklers SideFX. Es ging Ende der 1990er aus dem Programm PRISMS zur prozeduralen Synthese von 3D-Objekten hervor. Das Hauptaugenmerk liegt auf der prozeduralen Synthese, womit sich Houdini von anderer 3D-Grafiksoftware abhebt. Houdini wird hauptsächlich für Spezialeffekte in Filmen und Computerspielen verwendet. Große Studios wie Walt Disney Animation Studios, Pixar, DreamWorks Animation, ILM und weitere verwenden Houdini für die Produktion von 3D-Animationsfilmen. Houdini ist eine Nodebasierte 3D-Grafiksoftware. Vorgefertigte Bausteine „Nodes“ können miteinander verbunden und parametrisch angepasst werden um Geometrie, Partikel, Flüssigkeiten, Feuer, Rauch, Simulationen, usw. zu erzeugen und zu steuern. Eigene Nodes können zudem mit hscript, VEX und Python erzeugt und programmiert werden.

TLC DatensatzDie Daten der Taxifahrten werden seit 2009 von der TLC erhoben und sind öffentlich zugänglich. Die Datensätze liegen in Form von CSV-Tabellen vor und beinhalten mehreren Millionen Fahrten pro Monat. Zusätzlich stellt die TLC ein shp-Dateiformat zur Verfügung. New York ist in Taxizonen eingeteilt und das shp-Dateiformat ist ein Geo Datenformat(GIS-Datenformat) das die Taxizonen von New York als Flächenmodell beinhaltet.

Eine Tabelle mit zehn Spalten und vielen Zeilen. Zwei Spalten sind hervorgehoben.
TLC Taxi Zones
Manhattan
Eine Vector-Grafik der Taxizonen von Manhattan.
TLC Taxi Zones
Bronx
Eine Vector-Grafik der Taxizonen von der Bronx.
TLC Taxi Zones
Brooklyn
Eine Vector-Grafik der Taxizonen von Brooklyn.

Die Visualisierung

Das Rendern der 3D-Grafiken erfolgte mit der Houdini eigenen Render-Engine Mantra. Die erste Darstellung zeigt alle Taxi-Fahrten vom 15.10.2018 in ganz New York. Die zweite Darstellung zeigt alle Fahrten die von oder zu einem der drei Flughäfen gingen. Nachfolgend sind Renderings zu sehen die sich  auf die einzelnen Bezirke New Yorks fokussieren. Es ist deutlich zu sehen, dass die meisten Taxi-Fahrten in allen anderen Bezirken außer Manhattan hauptsächlich von Green-Cabs gefahren wurden.
Da in Manhattan besonders viele Taxen unterwegs sind, zeigt die Darstellung die Fahrten der Yellow-Cabs auf der Oberseite und die Fahrten der Green-Cabs auf der Unterseite. Es ist deutlich zu erkennen, dass die Green-Cabs nur im nördlichen Teil von New York Fahrgäste aufnehmen dürfen.
Für die Werkschau entwickelte ich ein Audiovisuelles-Format.

New York City
Ein Rendering der Datenlandschaft - Die Taxifahrten eines Tages von ganz New York.
Airports
Ein Rendering der Datenlandschaft - Die Taxifahrten eines Tages zu und von Flughäfen.
Bronx
Ein Rendering der Datenlandschaft - Die Taxifahrten eines Tages Bronx.
Queens
Ein Rendering der Datenlandschaft - Die Taxifahrten eines Tages Queens.
Brooklyn
Ein Rendering der Datenlandschaft - Die Taxifahrten eines Tages Brooklyn.
Manhattan
Ein Rendering der Datenlandschaft - Die Taxifahrten eines Tages Manhattan.

Design Process

KonzeptDie Idee zu NYCWires entstand im Kurs - The Data Interface bei Boris Müller in Kooperation mit Leah Döllmann, Ekaterina Oreshnikova und Denys Ivanchenko. Das Projekt war zweigeteilt. Das Konzept und das Interface entstanden im Kurs - The Data Interface und die 3D-Visualisierung im Kurs - Datascapes mit Houdini bei Julian Braun.

FahrtenNachdem ich die CSV-Tabelle der Fahrten der Yellow Cabs von Oktober 2018 heruntergeladen hatte, fiel mir auf das die Datei knapp 800 MB groß war und rund 9.000.000 Fahrten beinhaltete! Die CSV der Fahrten der Green Cabs war wesentlich kleiner mit ca. 700.000 Fahrten. Nachdem ich etwas erschlagen war, suchte ich nach Lösungen und stieß im Netz auf ein Python-Skript, mit dem es möglich ist CSV-Dateien zu zerteilen. Ich musste es nur leicht anpassen. Mit dem Skript ist es zudem möglich die Anzahl der Zeilen pro Teil zu definieren. Das Skript exportiere dann knapp 30 CSV-Datei mit jeweils ca. 300.000 Fahrten. Rein rechnerisch sollte jeweils eine CSV einen Tag beinhalten.
OpenRefineNachdem die riesige CSV zerteilt war, konnte ich einen Tag aussuchen und in OpenRefine weiter bearbeiten. Ich entschied mich für den 15. Oktober. Ich säuberte die Tabelle von korrupten Einträgen und löschte Zeilen und Spalten die ich nicht brauchte.

ZonenIch hatte bisher noch nie etwas mit .shp-Dateien zu tun gehabt und musste herausfinden wie ich sie öffnen konnte. Nach einer Recherche stieß ich auf die Open-Source-Software QGIS. QGIS (ehemals Quantum-GIS) ist ein freies Geoinformationssystem zum Betrachten, Bearbeiten, Erfassen und Analysieren von räumlichen Daten. Mit QGIS ließ sich die .shp-Datei problemlos öffnen. Dabei erkannte ich das jede Taxizone mit der entsprechenden Zonen-Id verknüpft war. Als Nächstes musste ich herausfinden wie ich die .shp-Datei in Houdini geladen bekomme. Bei der Recherche fand ich keine Möglichkeit die Datei direkt in Houdini zu öffnen. Ich fand aber heraus das es ein GIS-Plug-In für Blender gibt. Das lud ich mir dann runter und konnte die .shp-Datei mit Blender öffnen. Die Zonenkarte von New York konnte ich nun im 3D-Raum drehen und wenden. Die einzelnen Zonen waren nun Polygone mit unterschiedlich vielen Eckpunkten. Jede Zone war so benannt wie die reale Zonen-Id lautet. Ich exportierte die Zonenkarte in mehreren Versionen - ganz New York und auch als einzelne Viertel(Manhattan, Bronx, Brooklyn, Queens, Staten Island) als Alembic-Dateien(.abc). In Houdini konnte ich dann die Zonenkarte als Alembic-Datei problemlos mit der File-Node öffnen. Die CSV-Dateien konnte ich mit der Table-Import-Node laden. Dabei musste ich definieren welche Spalten importiert werden sollen.
Houdini Nachdem die Vorbereitungen abgeschlossen waren, konnte ich nun endlich zu Houdini übergehen und an der Visualisierung tüfteln. Da dies mein erstes Houdini Projekt war, verfolgte ich eine explorative Herangehensweise. Ich brauchte mehrere Anläufe bis ich zu dem Ergebnis kam. Schluss endlich verhalf mir ein ENTAGMA-Tutorial das mir Julian empfohlen hatte. In dem Video visualisieren die Jungs von ENTAGMA Flüge rund um den Globus. Ich konnte viel von dem Tutorial lernen. Danke Julian und ENTAGMA :). Ich verwendete hauptsächlich vorgefertigte Nodes von Houdini. Lediglich das Erzeugen der Fahrten als gekrümmte Splines musste ich mit VEX coden. Zwei Scripte waren dafür nötig. Die erste VEXpression erzeugt die Linien(Bézierkurve) die einen Start- und Zielpunkt verbinden und dadurch eine Taxifahrt zwischen zwei Zonen visualisieren. Die zweite VEXpression ist zum Steuern der Krümmung und Höhe der Kurven. Sie erzeugt ein UI-Element innerhalb von Houdini. Mit diesem Slider wird es möglich die Krümmung und die relative Höhe der Kurven händisch anpassen zu können.

Ein dekoratives weisses Kreuz.
Ein Screenshot des Visualisierungssystems in Houdini.
Ein dekoratives weisses Kreuz.
Aufbau des Node-Trees und Erklärungen.
Ein dekoratives weisses Kreuz.
Frühes Rendering New York
Ein dekoratives weisses Kreuz.
Frühes rendering manhattan
Ein dekoratives weisses Kreuz.
Test rendering ohne Karte.

Deine Privatsphäre ist uns wichtig.

Bitte stimme der Verwendung von Cookies zu. Weitere Infos findest du in unserer Datenschutzerklärung.