Definitions
A pinnacle point is a point from which no higher point can be seen in a direct line of sight.
More specifically,
a pinnacle point is a point with zero inferiority, where inferiority is defined as the maximum elevation
that can be seen in a direct line of sight from a point minus the point's elevation.
Since all points can see themselves, the minimum possible inferiority is zero.
Datasets
Prominence is a measure of how much a summit rises above its surroundings. More specifically, it measures how far
down you have to go in order to get to a higher elevation. Thanks to Andrew Kirmse for finding 11,866,713 summits
with a prominence greater than 100 feet (~30 m).
An on-top-of-the-world mountain (OTOTW) is a summit where no land rises
above the horizontal plane from the summit.
Since any land that rises above the horizontal plane would have higher elevation than the summit itself, if a summit
is not an OTOTW then it can't be a pinnacle point either. In other words, pinnacle points are a subset of
OTOTWs. Thanks to Kai Xu for finding 6,464 OTOTWs around the world. Andreas Geyer-Schulz deserves
mention as well for his extremal peaks.
Algorithms
Finding Pinnacle Points
-
Categorize the 11,866,713 summits into patches based on longitude and latitude.
This is done for faster processing later. The patch size is 5 deg x 5 deg with some extra to take into account
the fact that summits may be able to see beyond the patch they are in.
-
Find the maximum horizon distance (MHD) defined as √(2*R_earth*Elevation) for each summit and OTOTW.
-
Define a list of remaining OTOTWs as the full list of OTOTWs.
-
Find the highest elevation remaining OTOTW (HERO).
-
Find all other remaining OTOTWs where the sum of the OTOTW's MHD and the HERO's MHD
is greater than the distance between them. In other words, find all OTOTWs that have a chance
of being seen by the HERO. For each, do line of sight analysis (described below) to find which OTOTWs
can actually be seen by the HERO. Each will have a lower elevation than the HERO, so they are removed from the
list of remaining OTOTWs.
-
Find the HERO's patch.
-
Find all summits in the patch where both the summit's elevation is greater than the HERO's elevation
and the sum of the summit's MHD and the HERO's MHD is greater than the distance between them. In other
words, find all summits that have a chance of disqualifying the HERO from being a pinnacle point. For each,
do line of sight analysis to determine if any summits can actually see the HERO. If any can, the HERO is
not a pinnacle point and is removed from the list of remaining OTOTWs. Otherwise, the HERO is a pinnacle
point and is added to a list.
-
Repeat 4-8 until there are no remaining OTOTWs.
Line of Sight Analysis
-
Generate a list of 100 latitude-longitude points between the two input points along the geodesic.
-
Find the elevation of each point using an API (thanks to
Open-Meteo),
and find the distance of each point to the first point.
-
Translate each distance-elevation point such that the first point is at (0, 0).
-
Apply a vertical drop to each elevation according to how far away the point is to take the
curvature of the earth into account.
-
Rotate the points to make the last point at the 0 elevation line. In other words,
make the line of sight along the x-axis.
-
If the maximum of the points is greater than 0, line of sight is blocked. Otherwise,
there is direct line of sight.
Sources of Error
-
When the OTOTWs were found, all summits with less than 300 m of prominence were omitted.
This cutoff is carried forward to pinnacle points.
-
The earth is approximated as a sphere instead of an ellispoid.
-
Atmospheric refraction is not taken into account. If it was, it would decrease the number of found
pinnacle points since atmospheric refraction increases how far you can see.
-
Only 100 elevations are sampled when determining if two points have line of sight. This can lead to points
that can block line of sight being missed. By increasing the number of elevations sampled,
more pinnacle points would be found.
-
There is some inherent error in the data. The datasets have a resolution of 30 m (1 arcsecond), and the API
uses 90 m (3 arcseconds). All data sources are surface elevation models, so trees and buildings are included.
Contact
Check out the latest on my github.
There, you can find a txt file of all pinnacle points.
Contact me at jamiegbreault@gmail.com. Here's an
article on OTOTWs and pinnacle points if you are interested.