The Himalayas

Tenzing Norgay and Edmund Hillary photographed after their return from the successful climb. Bettmann / Contributor / Getty Images

Tenzing Norgay and Edmund Hillary photographed after their return from the successful climb. Bettmann / Contributor / Getty Images

“You perfect a sport when you can do all of these things with less stuff. The most impressive ascent of Everest was by the Swedish guy who bicycled from Stockholm to Kathmandu and then soloed Everest and bicycled back to Stockholm. That is cool, as opposed to this huge multinational guided thing with computers and internet cafes at the base of Everest.” – Yvon Chouinard

The Himalayas

I have no clue why I have always been fascinated by mountaineers and mountaineering. I have my own half-baked theories of course, and the winner might be the one/two years we lived in Kurseong. If you left the cottage and crested the slope that lead to the main road connecting this hill-town to the rest of the world, and then closed your eyes and turned around, on a clear day you could see Kanchenjunga – The Five Treasures of Snows. I had never seen anything so majestic. I ended up reading about Tenzing Norgay and Edmund Hillary summiting Mt. Everest, a few other pieces on Annapurna, and of course, much later “Into Thin Air”. On another continent, in an outlet mall in Kittery (ME) I ran into Ed Webster and walked away with a signed copy of his book.

For the last few years, rattling around inside my head was this idea of writing more with data, and along came blogdown, leaving me with no excuse to dither. But what should I start with? A crazy idea was born when the New York Times’ Sunday Edition of December 18, 2017, with the Sports section led by Deliverance from 27,000 Feet. I couldn’t shake off various elements of the story but most of all that here were not so well-off Bengali men and women, from Kolkata (West Bengal, India), obsessed with Chomolungma. I wanted to know: What more can one discover about the climbing fraternity, about these mountain ranges? I recalled poring over the The Himalayan Database a year or so ago as it was being updated, and lo and behold, a few file downloads later here we are.

Mapping Peaks

Himalayas, the great mountain range that means so much to the people of Asia, particularly those who live in its southern alluvial plains and the inhabitants of the Tibetan plateau to the north. Home to over 100 peaks that rise to 7,300 meters (24,000 feet) or more, these are the mountains that issue a siren call to mountaineers around the world. Mt. Everest, the queen herself, issues an unparalleled draw that experienced climbers and, of late, fee-paying dilettantes, find unable to ignore.

How does one start to fathom what these ranges mean to us? I don’t pretend to know. What I do know is that a good story would build the narrative piece by piece and what better way to start than by geolocating these peaks. Luckily there exists a database of all known peaks, maintained by the Alpine Club (UK), with “information on 2,850 peaks over 6000 meters in Himalaya, Karakoram, Tibet, Hindu Kush, China.” So not just the Himalayas but that is okay.

alpuk$Climbed = str_trim(alpuk$Climbed, side = "both")
alpuk$ClimbStatus = ifelse(alpuk$Climbed == "y", "Yes", "No/Unknown")
alpuk$ClimbStatus = factor(alpuk$ClimbStatus)

The same peak may be known by different names, and several peaks on record will, at times, show the same latitude/longitude. For mapping purposes I therefore reduced the dataframe to contain a single observation per peak, based on the preferred name, height, and latitude/longitude.

peaks.df = alpuk[!duplicated(alpuk[c(1, 3, 5:6)]), ]

A quick map lead to a frantic hunt for Mt. Everest and so I dropped a marker for Mt. Everest. The peaks in blue have had at least one successful ascent but this information was missing for the peaks in red. Incidentally, the icon.tent command that was commented out was an interesting learning experience: If I use awesomeIcons all the fonts get changed but if I don’t then the standard font settings for the blog stay alive. Not sure what is going on here but I am sure there is a fix. So much for trying to use red tents as markers for each peak!


# icon.tent <- awesomeIcons(icon= 'glyphicon-tent',
# markerColor = '', iconColor = 'black', library =
# 'glyphicon', squareMarker = TRUE)

pal = colorFactor(c("red", "blue"), domain = peaks.df$ClimbStatus)

m <- leaflet(peaks.df, width = "100%") %>% addProviderTiles(providers$Esri.WorldImagery) %>% 
    setView(lng = 80.92503, lat = 32.5516, zoom = 4)

m %>% addCircleMarkers(lng = peaks.df$long, lat = peaks.df$lat, 
    popup = (peaks.df$PNAME), stroke = FALSE, color = ~pal(peaks.df$ClimbStatus), 
    fillOpacity = 0.3, radius = ~ifelse(peaks.df$ClimbStatus == 
        "No/Unknown", 1, 2)) %>% addMarkers(lat = 27.97467, lng = 86.91867, 
    popup = c("Chomolungma/Qomolungma: Goddess of the Valley, Sagarmatha: Peak of Heaven, Mt. Everest (should rightfully be Mt. Sikhdar but let us not quibble"))

Ideally the dataframe and the map would be trimmed to include only the Himalayan mountain range but that will take some effort because peak names in the Alpine database (the geocoding source file) are very often different from the same peak’s listed name in the Himalayan database (that has no geocodes). Peak heights tend to differ as well (apparently a common problem), although by small amounts, and so joining the two is on my to-do list. What I could do at the moment, however, is restrict my focus to the 14 8,000ers, displayed in the datatable below and then mapped. Note that the larger, cornflower blue circle marker flags Mt. Everest’s general location since the peak tends to be obscured by Lhotse until you zoom in.

peaks.a8 = peaks.df %>% filter(HeightM > 8000 & PNAME %in% c("Everest", 
    "K2", "Kangchenjunga", "Lhotse", "Makalu", "Cho Oyu", "Dhaulagiri", 
    "Manaslu", "Nanga Parbat", "Annapurna", "Gasherbrum", "Broad Pk", 
    "Shishapangma", "Gasherbrum II")) %>% arrange(-HeightM)

knitr::kable(peaks.a8[, c(2, 4:7)], booktabs = TRUE, caption = "The 14 8000ers", 
    "html") %>% kable_styling(full_width = FALSE, font_size = 12)
Table 1: The 14 8000ers
Name HeightM HeightFt Latitude Longitude
Everest 8848 29029 27o58’48" 86o55’12"
K2 8611 28251 35o52’48" 76o30’36"
Kangchenjunga 8586 28169 27o42’00" 88o09’00"
Lhotse 8516 27940 27o57’36" 86o55’48"
Makalu 8463 27766 27o52’48" 87o04’48"
Cho Oyu 8201 26906 28o05’24" 86o39’36"
Dhaulagiri 8167 26795 28o41’24" 83o29’24"
Manaslu 8163 26782 28o32’24" 84o33’36"
Nanga Parbat 8126 26660 35o13’48" 74o35’24"
Annapurna 8091 26545 28o35’24" 83o49’12"
Gasherbrum 8068 26470 35o43’48" 76o41’24"
Broad Pk 8047 26401 35o48’00" 76o34’12"
Shishapangma 8046 26398 28o21’00" 85o46’48"
Gasherbrum II 8035 26362 35o45’00" 76o39’00"
m <- leaflet(peaks.a8, width = "100%") %>% addProviderTiles(providers$Esri.WorldImagery) %>% 
    setView(lng = 86.859444, lat = 28.007222, zoom = 3)

m %>% addCircleMarkers(lat = peaks.a8$lat, lng = peaks.a8$long, 
    color = "blue", stroke = TRUE, fillOpacity = 0.1, radius = 3, 
    popup = ~(peaks.a8$Name)) %>% addCircleMarkers(lng = 86.925278, 
    lat = 27.988056, popup = c("Mt. Everest"), stroke = TRUE, 
    fillOpacity = 0.1, radius = 4, color = "cornflowerblue")

Voila! We have the 14 great peaks that should be the focal point for most of the analysis to follow, provided the database has expedition data for each peak. In the next post I’ll go over the structure of the climbing database and start to pull out some basic yet interesting patterns I come across. But before I do that, why not plot the typical route of an Everest expedition, starting with Kathmandu? This is a rough route map since I had to search for the campsites and other legendary features such as the Khumbu Icefall, the Western Cwm, etc. so the route is likely no better than a rough sketch.

Map edited on January 28, 2018 to correct anomalies in some of the coordinates of the camps. I had been trying to work off google maps but then switched to Alex Txikon’s GPS tracker.

route.df = read.csv("./data/routelatlong.txt", header = TRUE)
caravan.df = read.csv("./data/caravanroutes.txt", header = TRUE)

m <- leaflet(width = "100%") %>% addProviderTiles(providers$Esri.WorldImagery) %>% 
    setView(lat = 27.980289, lng = 86.899604, zoom = 13) %>% 
    addPolylines(data = route.df, lng = ~long, lat = ~lat, group = ~(group), 
        color = "firebrick", fillOpacity = 0.1, stroke = TRUE, 
        weight = 3) %>% addCircleMarkers(data = route.df, lng = ~long, 
    lat = ~lat, color = "cornflowerblue", fillOpacity = 0.5, 
    stroke = TRUE, radius = 3, popup = ~site) %>% addPolylines(data = caravan.df, 
    lng = ~long, lat = ~lat, group = ~(group), color = "purple", 
    fillOpacity = 0.1, stroke = TRUE, weight = 3) %>% addCircleMarkers(data = caravan.df, 
    lng = ~long, lat = ~lat, color = "cornflowerblue", fillOpacity = 0.5, 
    stroke = TRUE, radius = 3, label = ~site)

The penultimate marker before the summit is the famous (but perhaps no more) Hillary Step.