He wanted to define how long you would see each part landscape if you were on a train, watching constantly through the window. Personally, I would sleep most of the times on long travels or I'd probably go at least once to the toilets.
Reciprocally, as the notion of intervisibility implies, such an analysis will tell you from where the railroad infrastructure will be the most visible. It gives the impact of it on landscape perception.
The problem was interesting, I took the challenge to give it a try.
More complex approaches integrating land covers could tell you when to sleep and when not to sleep (when the landscape is rich or when not), or whether you should book a seat on the left or right part of the train. That's what we could analyse in future posts of "On the Road"
I imagined Jack Kerouac being some kind of geogeek. He'd try to precisely prepare a travel by determining locations that would give him contemplative restfulness by watching the fugitive beautiful landscapes. That's why I correlated this post with the book "On the Road" by Jack Kerouac who used to catch trains to get from one place to another across the USA.
So, here is how Jack Kerouac would have prepared his travel from his meditation mountain to an hypothetic geo-R conference held in san Francisco.
This script will be helpful if you'd like to familiarize with R / GRASS. Don't worry, the different steps will be explained afterwards.
Created by Pretty R at inside-R.org
Here is the result:
|This image show the locations on the landscape from where the infrastrructure is the most visible, and conversely, the elements of the landscape that are the most visible from the railroad|
Here are some little explanations of some parts relative to the code:
They key command is r.los which is a line-of-sight raster analysis program.
r.los input=string output=string coordinate=x,y [patt_map=string] [obs_elev=float] [max_dist=float] [--overwrite]
For more details on r.los
This part reads railroad.shp then coerces the SpatialLines object to a psp object so that it can be processed by pointsOnLines spatstat function. pointsOnLines will create a point every 50 meters along the line. 50 has been chosen because it corresponds to the dem resolution.
Here we configure a region which extent is the track extent extended with 5 kilometers because we'll have to calculate LOS at each extremity of the track line also. The extent must be transmitted as String to g.region
grd is a SpatialGrid object created from GRASS region paramemters: extent and resolution. ncells is the number of cells (nrows * ncols) We create a vector of values of same length as the number of cells and filled with 0 values.
We launch Line-Of-Sight calculation for each point, and each value of the raster derived from the observation of an individual XYZ point is added to that of the previous point, recursively.
0 values of the raster are replaced by NA to provide transparency
We export the result to tiff.
Here are some useful links: