Over the last 15 months, I have been slowly working on a novel hierarchical hexagonal grid, based upon the key insight that while one cannot tile hexagons with hexagons, one can tile half-hexagons with half-hexagons.
It’s been a journey, and I’ve had a lot of help from various people in the field. The grid system uses an octahedral projection, and involves quite a few novel aspects.
It’s pretty accurate. It supports near-lossless forward and inverse transforms to arbitrary depth, and is especially well-suited to hex-based tiling systems. I have a working implementation in Python with sub-millimeter accuracy using geodesics, and I’m considering a native port to C++ for potential integration with PROJ.
A sample of results (round trip is via the Hex addressing themselves)
Stonehenge
Reference GCD: [51.17886302 -1.82617712]
Roundtrip GCD: [51.17886302 -1.82617712]
Address :NWΛ01357247546275133355V0
Los Organos, La Gomera
Reference GCD: [28.21893217 -17.28230155]
Roundtrip GCD: [28.21893217 -17.28230155]
Address :WAΛ82524022847627233383V0
Healing Pond, Cat Island
Reference GCD: [24.18541798 -75.32541004]
Roundtrip GCD: [24.18541798 -75.32541004]
Address :NAΛ12651744507738008106V1
Statue of Liberty
Reference GCD: [40.68936032 -74.0445505]
Roundtrip GCD: [40.68936033 -74.0445505]
Address :NAΛ55836342885310738272V0
Great Pyramid
Reference GCD: [29.97916252 31.13426302]
Roundtrip GCD: [29.97916252 31.13426302]
Address :EAV48452028481533576536Λ2
The following image represents the fundamental structure of the entire grid.
The grid system itself is not tied to a specific projection, but I’ve also worked on that, (along with standard conformal projections) and, while I don’t really know about the GIS world, it seems to be pretty robust.
Here is layer five on conformal.
One of the key features is that the entire grid is geometric - there are no databases of grid points (beyond the six vertices of the octahedron) - and the shape of any cell at any level can be derived from the underlying projection itself.
I developed this for the purposes of hex-binning - but it may have other uses too.
The projection and grid together offer a bidirectional, distortion-aware, hierarchical projection of the Earth onto an octahedron, with uniform resolution scaling that tops out only at the numerical error of the system it’s running on. The grid part of the project uses well-defined mathematics - depending almost solely on resolving inequalities. The tiling above may look complex at first, but it depends upon insights relating strongly to the underlying symmetries (and brought to life by Shephard/Grunbaum, amongst others), which are further amended to support the cyclical nature of the sphere.
There is no dateline discontinuity, or poles. (Well, on conformal there are six poles - but that’s an artefact of conformal) There are also no degenerate tiles, or ragged edges, or ambiguities.
It’s a unversal spatial index (for surfaces!) with an arbitrary depth, precise translation to Euclidean geometry, and maintains all the advantages of hexagonal grids, while offering a robust hierarchy model that is (in my opinion) far stronger, more intuitive, and more available than many other existing systems.
Here is one net of the non-conformal projection - it’s not too shabby.
and again with tissot’ indicatrix
Here are the 12 root 0 hexagons along with the layer-1 hexagons (following a different net).
I have now finished with all the challenges I faced - apart from finalising my documentation, rewriting some of the examples, and pushing all of the fixes and finding onto the public repo.
What I want to know is - is there any interest at all for any of this sort of work? Have I been doing something that nobody else is remotely interested in?