Journey Log
feet
ASL
miles
elapsed
degrees
N
minutes
elapsed
Currently passing:
About This Map
Some orienting words
In this map, I offer the user a virtual experience of traversing North America’s passenger rail routes through a dynamically unfolding milieu of terrain, ecology, waterways, and habitat. Color, texture, size, and line suggest the many layers and lives abounding around us; unfolding, echoing paths celebrate and illuminate the surprising shapes of worlds. As a symbolic train navigates the chosen route, protected areas, watersheds, rivers and lakes, and four levels of ecoregions are unveiled as they come within approximately 0.5° of the train's path. Naturally, the intersected data appears more dense within this immediate buffer, but the user may be surprised by the sweeping forms and unexpected connections that become apparent among distant places that share lower-level ecoregions. A togglable and height-adjustable dashboard at the base of the screen offers the user a dynamically populating legend/log of the categories encountered, lists the names of all encountered features in scrollable columns, and tracks traversed elevation, bearing, distance, time, and speed.
Data sources
-
Ecoregions
-
Other Enrich Data
- Volcanoes from USGS's Geologic Map of North America GIS Database (2009)
- Geothermal Systems from USGS's Geothermal Resource Studies Project (2010)
-
Physical Baselayer
-
Natural Earth 1:10m Vectors:
- Rivers + Lake Centerlines
- Lakes + Reservoirs
-
Natural Earth 1:10m Vectors:
-
Cultural Baselayer
-
Natural Earth 1:10m Vectors:
- Admin 0
- Admin 1
- Populated Places
- Urban Areas
-
Natural Earth 1:10m Vectors:
Technologies used
This map represents my final project of my final class of UKY's NMP Graduate Certificate in Digital Mapping. As such, it was meant to serve as a culmination and showcase of my newfound mapping and coding skills. Never one to choose the easy route, I challenged myself hugely by foregoing pre-scaffolded mapping libraries such as Leaflet and Mapbox, instead opting to build this work from a more fundamental ground using D3.js, TopoJSON, and plenty of vanilla JavaScript as the knife edge of my code. By way of learning D3, I oriented to a variety of modern web standards including SVG, Canvas, REST & HTTP, CSS & HTML. I did rely on Mapbox’s Assembly CSS framework in building the page layout, and happily used their Turf.js library for on-the-fly geoprocessing. Google's Routes API and Elevation-API.io serve the data that allows a user to customize their experience from tens of thousands of possible combinations. A call to Mapbox's Polyline.js allows for easy conversion of encoded polyline to GeoJSON. Finally, Chroma.js and Textures.js helped with dynamically styling and differentiating the unveiled geometries. This technology stack provided me with a solid taste of the need for an ecosystem of roles within web development while still leaving me with maximal room for creative freedom and control over even the tiniest elements.
Before all of this, of course, came the data wrangling itself, which was in many ways a more challenging and overwhelming venture for my GIS-newbie self. My familiarity with tools and software including QGIS, PostGIS SQL, and the Mapshaper CLI grew enormously as I persisted though countless moments of frustration and confusion, regularly frozen screens, and ferociously humming CPU fans that still failed to keep my fingers from being literally burned by the sharp heat emitted through the edges of my laptop keys. Slowed but not stopped, I experimented with GRASS and GDAL scripts, memorized the differences between various kind of SQL joins, internalized some sense of what it means for a process to be "expensive," and ultimately moved toward refining a handful of multi-layered workflows involving sequenced geospatial data processing algorithms. I am proud of the resulting data layers, which balance a need for both simplicity and detail while remaining robust, accurate, and flexible.
On process, learning, & giving up
What can I say? This map is a map. It is also an experiment and a failure, a celebration, a journey, an offering, and the product of a lonely winter. In committing to an idea for my final NMP project, I wanted to create a surprising, clean, multilayered, atypical web map that would appeal to travelers, potential travelers, and vicarious travelers, train enthusiasts, journey seekers, and the geo- and eco-curious. I was drawn to train routes as a grounding, weighted infrastructure that would necessarily contain and locate my inquiry while also offering a grand glimpse into the many layers of reality making up the here and now. Weighted infrastructure or not, to say this project got away from me would be a sore understatement. It ballooned and wandered and tangled back on itself many times over, consuming the bulk of my focus and time for more months than was reasonable, beyond anyone’s expectation or requirement.
As I force myself to come to a stopping point, I struggle to find words to encapsulate both the profundity of my learning as well as the depth of my disappointment in the final product. Ultimately, this map represents both the grand potential I see in web maps as a grounding, connective, illuminating force, as well as the difficulty of—and my particular failure at—manifesting any such product. It both epitomizes the kind of content I long for in web mapping and data visualization realms—orienting and augmentative of human connection to a world beyond screens—and also elucidates the many challenges implicit in elegantly and thoroughly translating such lofty ideas into reality. This map navigates, then—almost literally—the ecotones and borderlands of what it means to fail, to succeed, and to learn. There remain countless barriers and discontinuities between my ideas and their satisfactory implementation. There are a million little things I still wanted to add to this program, a million more I have yet to fix. Giving up on it (for now) hurts a little. It is also the right, and only, thing to do.
On the brighter side, these symbolic trains I spent months animating became the very real vehicle of some deep learning and meaningful skill, the bulk of which should be easily translatable into other web development and data visualization contexts. I have repeatedly surprised myself with my own persistence and dogged enjoyment of the work, even when I was in totally over my head. I problem solved like hell at just about every turn, honed my capacity for sieving through masses of information the web was always happy to offer me, and experienced from the soul up the truth of Marijn Haverbeke’s assertion that “[t]he art of programming is the skill of controlling complexity.” Although I know the final code is by no means the most artful possible version of this program—the JavaScript spanning, as it does, some 3800 lines—the iterative process of writing and refining it all has embedded in me a much deeper understanding of what I am to be striving for, and helped me build the muscle and stamina necessary for moving forward with clarity again, and again, and again.