Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



11 Commits

Repository files navigation


Finding the Southern Pole of Inaccessibility

This repository contains the source code needed to reproducibly locate the Southern Pole of Inaccessibility (SPI).

The data directory contains the Antarctic Digital Database (ADD) v5, v7.2, and v7.4 data files as well as a list of previously identified locations for the SPI.

Our goal is to use this data to identify the "true" location of the SPI.


To proceed we need some software.

GDAL must be installed for reprojecting and reading shapefiles.

Snakemake is used to enable reproducable and scalable workflows. Install it with:

pip3 install snakemake

Next, compile the code with

mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ../submodules/Barnes2019-DggBestOrientations/
make -j 6 poi.exe
cd ..

User Settings

The Snakefile is already configured to provide turn-key identification of the SPI. The settings can be adjusted by referring to the documentation in Snakefile and to the command-line interface of build/poi.exe.

Running It

To find the poles, type


Data Sources

The ADDv7.2 data is available at:

The ADDv5 and ADDv7.4 data were provided by Laura Gerrish.

Feature categories in ADDv7.2 and ADDv7.4 are largely self-explanatory. Feature categories for ADDv5 were inferred from and are as follows:

  • 22010 for ice coastline (definite)
  • 22011 for rock coastline (definite)
  • 22012 for grounding line (definite)
  • 22013 for rock against ice shelf (definite)
  • 22020 for ice coastline (approximate)
  • 22021 for rock coastline (approximate)
  • 22022 for grounding line (approximate)
  • 22023 for rock against ice shelf (approximate)
  • 22030 for iceberg tongue
  • 22040 for floating glacier tongue
  • 22050 for ice shelf front
  • 22090 for ice rumples (distinct)
  • 22100 for ice rumples (indistinct)


The methodology used was previously described in detail in @Barnes2019. Some slight modifications were made for this work so we review the algorithm.

  1. Coastline features are read from a shapefile.
  2. The coastline features are interpolated so that no two coastline vertices are more than 500m from each other. Note that this preserves the exact geometry of the coastline, the interpolated points do not affect the shape of the coast and are a convenience used later.
  3. The vertices comprising the coastline and projected into a 3D space based on a very accurate WGS84 projection and indexed with a k-d tree to accelerate distance queries.
  4. A series of initial points is generated by wrapping a spiral around a spherical model of the globe. The interpoint spacing is ~50km.
  5. Points north of -66.5 degrees are rejected.
  6. Points within 500km of the Antarctic coast are rejected; this value is based on SPI distances found in previous studies with a ~200km margin of safety added.
  7. The distances of the remaining points to the coast are calculated. The 10% of points farthest from the coast are retained for further consideration.
  8. All the previously reported positions of the SPI are added to the list of points. This ensures that the algorithm can do no worse than a previously reported position.
  9. Each of the remaining points is used as the seed location for a random restart hillclimbing algorithm which moves the point farther and farther from the coast until it fails to find an improvement a certain number of times.
  10. The points now represent an estimate of the SPI. The point farthest from the coast is the best estimate (points very far from the coast, approximately 16,000km indicate the farthest you can be from the coastline while not being constrained to be within Antarctica - these result from the optimization procedure ignoring whether or not a point is constrained by the coastline).
  11. The circle of inaccessibility is calculated by asking for the nearest coastal point to each SPI and then returning all points within a 30km annulus whose inner boundary is at that distance. The three innermost points at distinct locations represent the circle of inaccessibility.
  12. All the points are sorted by distance and written to CSV.


Note that the algorithm above has several useful properties.

  1. It uses the full high-resolution data available to it. No simplifications are made.
  2. Random restart hillclimbing from many initial points avoids the problem of identifying only local maxima and therefore provides a robust approach to finding the true location of the SPI.
  3. Calculations are performed using ellipsoidal models, unlike some previous studies.

The SPI locations are as follows:

Coastline     Longitude      Latitude        Distance from Coast
ADDv5 Inner   55.0877304200  -82.9557084809  1242.7569109758
ADDv5 Outer   65.6671478591  -83.9340046532  1588.5717760481
ADDv72 Inner  53.7204104397  -83.6098203200  1179.4002101212
ADDv72 Outer  64.8899669821  -83.9040073174  1590.3640236480
ADDv74 Inner  53.7204104397  -83.6098203200  1179.4002101212
ADDv74 Outer  64.8900417225  -83.9040120436  1590.3643468821

The Circles of Inaccessibility are approximated by:

Coastline          Longitude         Latitude         Distance
ADDv5 Inner      68.6481822749   -72.1395126066    1242.7569109758
ADDv5 Inner     -44.1631365097   -82.4287674237    1242.7556079637
ADDv5 Inner    -160.6656782771   -85.3773147805    1242.7567341764

ADDv5 Outer      74.7492701901   -69.8104376596    1588.5717760481
ADDv5 Outer     164.5075711018   -78.0121824510    1588.5685027770
ADDv5 Outer     -36.0871166375   -78.2916187563    1588.5698459154

ADDv72 Inner     67.2153366299   -73.3254448776    1179.4002101212
ADDv72 Inner    -44.0614952271   -82.4001307819    1179.3992009832
ADDv72 Inner   -160.5339079205   -85.3522518964    1179.3995893028

ADDv72 Outer     73.7543135023   -69.7598961098    1590.3640236480
ADDv72 Outer    -35.9171682350   -78.2032445423    1590.3610013130
ADDv72 Outer    164.4134070100   -78.0793593993    1590.3621013355

ADDv74 Inner     67.2153366299   -73.3254448776    1179.4002101212
ADDv74 Inner    -44.0614952271   -82.4001307819    1179.3992009832
ADDv74 Inner   -160.5339079205   -85.3522518964    1179.3995893028

ADDv74 Outer     73.7543135023   -69.7598961098    1590.3643468821
ADDv74 Outer    164.4134070100   -78.0793593993    1590.3610713442
ADDv74 Outer    -35.9171682350   -78.2032445423    1590.3614201227

Why previous values are incorrect

@Barnes2019 uses a variant of the above algorithm to calculate the location of the SPI, but obtains a value significantly different from ours. This is because the @Barnes2019 calculation relies on the GSHHG dataset which divides Antarctica in half into two polygons. This line of division is then interpolated (per the algorithm) resulting in an inaccurate SPI location. Because the data we use here does not have this anomaly the algorithm returns correct results in our case.


@Barnes2019: Richard Barnes. Optimal orientations of discrete global grids and the Poles of Inaccessibility. 10.1080/17538947.2019.1576786


No description, website, or topics provided.






No packages published