Open ppKrauss opened 2 years ago
I don't know of any plans. Contributions are always welcome—in this case, the original cpp implementation is 1100 lines… it's probably be a tough one! I wonder if ISEA's faces are close to Gray-Fuller? https://observablehq.com/@fil/gray-fuller-grid
Hi @Fil, beautiful work at the link (!). Yes ISEA is close to Gray-Fuller, and historically it is an evolution from it. I am imagining that is possible to reuse something of D3-geo's implementation of Gray-Fuller to reduce the CPP translation work. (see also some clues here).
... Is it possible to pay someone to do that translation with some help from you? What you or d3-geo-projection suggest as public crowdfunding?
Another (besides OSGeo/PROJ/src/projections/isea.cpp) source-codes:
H3 Uber use a ISEA simplification, but have a good Javascript implementation at uber/h3-js. Perhaps we can reuse something, see simplification explanation here.
Sahrk's DGGRID project also implemented ISEA with CPP, and the option to build "ISEA4D", the ISEA projection with diamond cells and an aperture of 4.
... Other "open works" are implementating ISEA, for example the Sirdeshmuk's Thesis in Python; Java code at mocnik-science/geogrid or TaehoonK/dggs_code.
What is ISEA? Good definition, citating the Wikipedia's D. Carr et al. (1997) citation:
... (the Snyder equal-area projection) "is a modified Lambert azimuthal equal-area projection, most often applied to a polyhedral globe consisting of truncated icosahedron with 32 same-area faces...", that is ISEA.
The S in ISEA refers to John P. Snyder. He came out of retirement specifically to address projection problems with the original EMAP grid (see Snyder, 1992). He developed the equal area projection that underlies the gridding system.
ISEA grids are simple in concept. Begin with a Snyder Equal Area projection to a regular icosahedron (...) inscribed in a sphere. In each of the 20 equilateral triangle faces of the icosahedron inscribe a hexagon by dividing each triangle edge into thirds (...). Then project the hexagon back onto the sphere using the Inverse Snyder Icosahedral equal area projection. This yields a coarse-resolution equal area grid called the resolution 1 grid. It consists of 20 hexagons on the surface of the sphere and 12 pentagons centered on the 12 vertices of the icosahedron.
So, it is like Gray-Fuller, with an icosahedron holding a planar projection on each face, and using same polyhedron orientation (that seems optimal). But Gray-Fuller's use gnomonic projection (near but not equal-area), while ISEA use Lambert azimuthal (precise equal-area). A big difference when we think that equal-area is very important for DGGS. See also ISEA/Dymaxion comparison here.
Thanks for the links. I hadn't stumbled on Barnes, 2019 yet. A recent resource is https://brsr.github.io/2021/08/31/snyder-equal-area.html which presents compact formulas for ISEA.
Note that the Gray-Fuller projection is not gnomonic. Its equations are published in Gray, 1995 and re-implemented (with a free/libre licence) in https://observablehq.com/@fil/buckminster-fullers-triangle-transformation.
The most cited projection for DGGS (the new ISO 19170-1:2021 standard — also an OGC standard) is ISEA, Icosahedral Snyder Equal Area.
PROJ is providing it as operations/projections/ISEA, is perhaps the main reference as "standard ISEA" for open-source implementations.
Is there a D3-geo-projection plan for ISEA implementation? Seems that it can be classified as an polyhedral-projection.
See also PostGIS/QGIS problem with ISEA visualization.