Pinnacle Points
Pinnacle points are a points from which no higher point can be seen. In other words, at a pinnacle point you would be at the highest elevation in sight. Two points are defined to have line of sight if light can theoretically travel from one to the other unobstructed in clear atmospheric conditions. The curvature of the Earth, atmospheric refraction, and local topography are all taken into account. It is possible for two pinnacle points of equal elevation to have line of sight since neither is tall enough to disqualify the other.
Interactive Map: https://www.pinnacle-points.com
Data Sources:
- On-Top-Of-The-World Mountains
- Andrew Kirmse and Jonathan de Ferranti found all 11,866,713 summits on Earth with over 100 ft (~30 m) of prominence. Prominence is the minimum vertical distance one must descend to reach a higher point. Kai Xu identified OTOTW mountains using this dataset, so I use this dataset to identify which OTOTW mountains are pinnacle points. This source primarily uses the Copernicus GLO-30 DEM.
- Mountains by Prominence
- Andrew Kirmse and Jonathan de Ferranti found all 24,749,518 summits on Earth with over 1 km of isolation. Isolation is the distance to the nearest higher point. Extreme isolation points are strong pinnacle point candidates, so I use this dataset to find all pinnacle points with an isolation of at least 100 km. This source uses the STRM 90m DEM.
- Mountains by Isolation
- On-top-of-the-world (OTOTW) mountains are mountains where no land rises above the horizontal plane from its summit. Since any land that rises above the horizontal plane would have a higher elevation than the mountain itself, if a mountain is not an OTOTW mountain then it can not be a pinnacle point either. In other words, pinnacle points are a subset of OTOTW mountains. Kai Xu found all 6,464 OTOTW mountains on Earth with over 300 m of prominence, and I have identified which qualify as pinnacle points. Andreas Geyer-Schulz deserves mention as well for his extremal peaks, a nearly identical concept to OTOTW mountains developed completely independently.
- Open-Meteo's Elevation API
- Open-Meteo offers an elevation API that can be used to find the elevation on any point on Earth. I host this API locally to find the elevation of points between summits that could obstruct line of sight. I also use this API to correct a few faulty summit elevations from the other data sources. This source uses the Copernicus GLO-90 DEM.
- Beyond Horizons
- Beyond Horizons has catalogued many of the longest lines of sight ever captured by photograph. I use these confirmed lines of sight to determine how to model light bending from atmospheric refraction over great distances.
Sources of Error:
- There is some inherent error in the elevation data.
- The Earth is approximated as a sphere instead of an ellipsoid for simpler math.
- To take atmospheric refraction into account, light rays are approximated as arcs of circles. Though this is a commonly used approximation, the path light takes in the atmosphere is in fact much more complex and depends on many local factors. This is probably the largest source of error.
- Only summits with more than 300 m of prominence or more than 100 km of isolation are considered. The prominence threshold is determined by the OTOTW mountain dataset. The isolation threshold was chosen arbitrarily to be a pretty number that my algorithm can handle in a reasonable amount of time.
- When doing LOS analysis, a discrete number of points between the observer and target are sampled to see if the ground obstructs LOS. The samples are at most 100 m apart. It is possible for points that would block LOS to not be captured. By increasing the number of samples, more pinnacle points could be found.
Project Structure:
PinnaclePoints/
├── data/
│ ├── clean/ # Modified versions of datasets that have been cleaned up
│ ├── patches/ # Holds summit patches
│ ├── raw/ # Raw untouched data straight from the source
│ │ ├── all-peaks-sorted-p100.txt # Mountains by prominence
│ │ ├── alliso-sorted.txt # Mountains by isolation
│ │ ├── beyond_horizons.txt # Longest confirmed lines of sight
│ │ ├── extremals-geojson.js # Extremals (not used)
│ │ └── ototw_p300.csv # On-Top-Of-The-World mountains
│ └── results/ # Data generated by algorithms
│ └── pinnacle_points/ # Results from the pinnacle point algorithm
│ ├── iso/ # Results for mountains by isolation
│ ├── prm/ # Results for mountains by prominence
│ └── prm_iso/ # The combined and final result
├── misc/
│ ├── images/ # Pretty pictures and plots
│ ├── math/
│ │ ├── formatted/
│ │ │ ├── atmoshperic_refraction.pdf # Math for light bending
│ │ │ ├── diagrams.pdf # Diagrams to help with the math
│ │ │ └── earth_curvature.pdf # Math for Earth curvature
│ │ └── raw/ # Math markdown
│ ├── papers/ # Relevant scientific papers
│ ├── method.txt # Explanation of this project
│ └── pinnacle_points.apk # Pinnacle point app for Android
├── scripts/
│ ├── commons.py # Common contants, functions, and classes
│ ├── known_los_analysis.ipynb # Determines how to bend light using the confirmed longest lines of sight
│ ├── known_los_parser.ipynb # Parses html from Beyone Horizons for the confirmed longest lines of sight
│ ├── patch_maker.py # Divides a file containing global summits into patches
│ ├── pinnacle_point_finder.py # The algorithm to find pinnacle points
│ ├── pinnacle_point_mapper.ipynb # Generates the interactive pinnacle point map
│ ├── pinnacle_point_merger.py # Merges the results of the isolation and prominence datasets
│ └── summit_cleaner.py # Cleans data from the isolation and prominence datasets
├── CNAME # Needed to host index.html on pinnacle-points.com
├── index.html # Interactive pinnacle point map
└── README.md # This file :D
The longest line of sight confirmed by photograph:
Relevant Mathematics:





