Shackleton – Imperial Trans-Antarctic Expedition Map

Recently I’ve been reading Endurance: Shackleton’s Incredible Voyage. On the whole book they describe its current position, movement, etc.. but it’s difficult for me to understand certain positions on the poles. Also, the history is so astonishing that it deserved a cool map.

There are some maps of the Imperial Trans-Antartcic Expedition:,, coolAntarctica, and a long etcetera. But I wanted to play a little bit.


Online Map:
Nice view of Shackleton Imperial Trans-Antartcic expedition. Information of each point and also photos.

Interactive Shackleton Map at MapBox


Shackleton Map

Shackleton Map (closer)



To create this maps I used:


A combination of data sets is employed. First of all, I obtained the Shackleton data set from Shackleton’s expedition, Endurance, Antarctica google group. The raster background and the graticule comes from NaturalEarthData. The Antarctica outline is provided by the Antarctic Digital Database (you have to register to access the data). South Georgia outline from Global Administrative Areas. Finally, the ice sea extent comes from National Snow and Ice data center.

The ice dataset represents 1979 while the expedition took place on 1914. It felt important to show the ice sea coverage, thus I decided to add this temporary inaccurate data that fits quite well with the description of the expedition.


For this project, I work with EPSG:3031 projection (WGS 84 / Antarctic Polar Stereographic), consequently I’ll save all the shapefiles using this projection.

Raster: The raster provided is projected as EPSG:4326. The objective is to use gdal_warp to obtain a properly projected geoTiff.
A little bit of trouble appear on this point, reprojecting the 167M file results in a 1,5G file that is unmanageable. To avoid that, first I crop the original file to match only the Antarctica: -ul_lr -180.0 -50.0 180.0 -90.0 -of GTiff -o NE1_50M_SR_W_cropAntarctica.tif NE1_50M_SR_W.tif

World Raster EPSG:4236

Antarctica Raster EPSG:4236

next step, reproject:

gdalwarp -ts 10000 10000 -wo "SAMPLE_STEPS=1000 SAMPLE_GRID=YES" -s_srs EPSG:4326 -t_srs EPSG:3031 -of GTiff NE1_50M_SR_W_cropAntarctica.tif Antarctica_epsg3031.tiff

With -ts the filesize is specified to avoid a big file result, and with -wo some specific gdalwarp options are defined:

SAMPLE_GRID=YES/NO: Setting this option to YES will force the sampling to include internal points as well as edge points which can be important if the transformation is esoteric inside out, or if large sections of the destination image are not transformable into the source coordinate system.

SAMPLE_STEPS: Modifies the density of the sampling grid. The default number of steps is 21. Increasing this can increase the computational cost, but improves the accuracy with which the source region is computed.
gdal warp manual

This options are important to obtain a clean image:

Default Warp

Warp with SAMPLE_STEPS = 200

Warp with SAMPLE_STEPS = 1000

Shackleton Route: This is provided as a KMZ. I unpack the KMZ and open the resulting KML with Qgis. From Qgis I save the route as a shapefile with the EPSG:3031 projection. Note that TileMill can load KML, but KML only supports EPSG:4326, that’s the reason why I store the data in other formats.

Shackleton Points: This made me lose some time. The points contain a title and HTML information. If you save as shapefile, there’s a limit of 80 character imposed (you can increase it, but not enough) because of the dbf file format. I tried to save SpatiaLite and GML, but then TileMill refused to open it (for some reason.. Qgis, TileMill.. I don’t know). The final solution is to save a geoJSON that tileMill can open with no problem, and there’s no data missing.

Ice Coverage:
The ice coverage is a shapefile with various polygons. I deleted all the polygons representing Antarctica obtaining a big polygon with the ice sea. This polygon covers also Antarctica, but I don’t want it in my result, I want a polygon with a Hole where Antarctica is. Polygon difference is the only step needed, and this can be directly performed from Qgis with ftools plugin.

To obtain the graticule no process is needed, I simply save it with the correct projection.

Labeling: The labels are defined manually. I create Various Line shapefiles with two attributes (id:int, label:string). The idea is that tilemill will render the names following the lines defined.

Qgis Shapefiles for Labelling


TileMill automatically reprojects the layers, but I don’t want the big Antarctica represented by ‘web mercator’ projection. The trick here is to configure all the layers in tilemill as EPSG 3857 (a specific web mapping projection).

Proj4 code of the EPSG 3857 projection:

+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

Tilemill Antarctica Reprojected

Tilemill Antarctica when defined as 3857

Basic TileMill Styling code

Map {
  background-color: #000;

#sgeorgia {

#Antarctica {
  [cst01srf="land"] {polygon-fill:#fff;}
  [cst01srf="ocean"] {polygon-fill:#89cbd5;}
  [cst01srf="ice shelf"] {polygon-fill:#89cbd5;}
  [cst01srf="ice tongue"] {polygon-fill:#89cbd5;}

#shackletonroute {
  line-dasharray: 4,4;

#shackletonpoints [zoom>3]{

#ne150msrwantartic100 {

#graticule {
  line-dasharray: 2,2;

#icesea1979clipped {

Labeling code:

@font_reg: "Ubuntu Regular","Arial Regular","DejaVu Sans Book";
@title_reg: "Ubuntu Regular";


.genericlabel #oceanlabels{
  [zoom > 5]{

.genericlabel #weddellsealabel{
  [zoom > 5]{

.shackletonpoints [zoom>4] {
  text-dx: 7;
  text-placement-type: simple;

.Antarcticalabelline {
  text-character-spacing: 50;
  [zoom > 5]{

  text-placement: line;

Closing comments

It seemed easy and fast, but I spent some time on this map. Still there are some things that I don’t like, and maybe try to fix on the future.

MapBox Tiling Errors

MapBox: TileMill is cool, but tricking the projections just feels wrong. I had to play a little with the size of the map (I don’t want to pay for a MapBox account right now :-P) so I saved the tiles with PNG8 instead of PNG24.
Also, I don’t like the “limit” imposed on the extra information box size (the one that appears onhover of the points), I would like to have a bigger box and found no option for it, but Werner got a response!:

As he points (in the comments), you can override the default size of the infobox:

.wax-tooltip {
  max-width: 400px !important;

In this same topic, when there’s content bigger than the div scroll bars automatically appear, this is nice, but when scrolling with the bars the map also scrolls (Ugly!).

As a last MapBox comment, I see some problems on the lower levels of zoom with the labels on the lines being cutted đŸ˜¦ I think this might be a problem of using curved lines.

GDAL: Problems with gdal_warp by default. With no options the result exploded and it was not close to what I needed. But that’s why you can select options right?

Ya.. just last comment, I discovered that AntarCtica has a middle ‘C’



Filed under Maps

6 responses to “Shackleton – Imperial Trans-Antarctic Expedition Map

  1. Werner Stangl

    Hey there. Amazing work, and I think your tutorial walk through of what you did is pretty useful. About the size issue of the interaction box. Did you try changing the wax-tooltip style?

    .wax-tooltip {
    max-height: 300px !important;

  2. kxtells

    Thanks, I enjoyed preparing it đŸ™‚ And it’s nice to know that it was useful.

    You are right, to change the tooltip size I can override the wax-tooltip style:

    .wax-tooltip {
    max-width: 400px !important;

    This way is easier to read the Shackleton expedition information.

  3. Adam Green

    Hi, just wondered if you were able to share the Shackleton dataset with me, struggling to work out how to obtain the coordinates. I am working on a school project with my young one and would like to recreate this in tableau with some integration of mapbox. thanks in advance

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.