Polyhedral Snyder Equal Area projections
Added in version 9.9.
This page describes the theory shared by the Tetrahedral Snyder Equal Area, Dodecahedral Snyder Equal Area,
Icosahedral Snyder Equal Area and Icosahedral Vertex-oriented great circle Equal Area projections. It is not a projection in its own
right — there is no +proj=polyhedral operation.
The polyhedral Snyder equal-area projections map the sphere onto the faces of a polyhedron using the method described in [Snyder1992]. The mapping is area-preserving and supports both forward and inverse transforms on either a sphere or an ellipsoid (input geodetic latitudes are converted to authalic latitudes internally so the equal-area property is preserved).
The implementation is generic: each polyhedral face is subdivided into right sub-triangles, Snyder's equal-area mapping is applied independently on each sub-triangle, and the planar results are laid out according to a net — a 2D unfolding of the polyhedron.
Four projections use this construction:
Triangles
At its core, the projection is an area-preserving mapping from a spherical right triangle ABC to a planar right triangle XYZ. Both triangles have one distinguished vertex — the apex — which is listed first in either triple: A on the sphere, X in the plane. The apex is shared by the sub-triangles that fan out from a single face centre, so the sub-triangles meeting at the apex tile a complete polyhedral face.
The planar triangles can be chosen with any consistent shape, as long as the edges around the shared apex match the way the corresponding edges meet on the sphere. The freedom in choosing this planar shape — together with the freedom in choosing how to glue the faces together — is what defines a net.
Polyhedra and nets
Each polyhedral projection is built from two compact definitions:
A polyhedron: a list of 3D vertices on the unit sphere plus a list of face vertex indices (CCW from outside). By convention the first vertex is always {0, 0, 1}
A net: a parent tree over the faces. The indexing is 1-based, with 0 reserved as the marker for the root face (that which has no parent). For example, {2, 3, 0, 3} means:
the 1st face has the 2nd face as its parent
the 2nd face has the 3rd face as its parent
the 3rd face has the no face as its parent (root)
the 4th face has the 3rd face as its parent
Projection specifications
Because the planar layout is decoupled from the spherical triangulation, the
same polyhedron can be unfolded into several different nets, which can be
selected by name using the +net parameter, e.g. +proj=tsea +net=triangle
The defaults for +orient_lat / +orient_lon / +azi rotate each
polyhedron into a sensible default pose (e.g. centred on Europe / Africa for
dsea; matching Snyder's published Figure 12 for isea). When
+lat_0 / +lon_0 are not supplied, the projected origin (0, 0) lands
on the centroid of the unfold's root face — except for isea, which
uses the bounding-box centre of the root face instead so the unfolded net
sits centred in the output.
Parameters
Note
All parameters are optional. Each polyhedral projection ships with a default orientation that places its vertices in symmetric, well-known positions; the parameters below override that default.
- +net=<name>
Selects the planar unfolding (net).
The accepted values and defaults depend on the projection.
- +orient_lat=<value>
Geodetic latitude of the polyhedron's first vertex, in degrees. Together with
+orient_lonand+azithis fully constrains the 3D pose of the polyhedron on the sphere.
- +orient_lon=<value>
Longitude of the polyhedron's first vertex, in degrees. Together with
+orient_latand+azithis fully constrains the 3D pose of the polyhedron on the sphere.
- +azi=<value>
Azimuth from the polyhedron's first vertex to its second, in degrees clockwise. Together with
+orient_latand+orient_lonthis fully constrains the 3D pose of the polyhedron on the sphere.
- +lat_0=<value>
Geodetic latitude of the geographic point that should land at the projected origin
(0, 0). Used together with+lon_0; the pair translates the projected output without rotating the polyhedron.+x_0/+y_0are applied on top of this translation.When unset, the projected origin falls on the unfold's root face instead (its centroid in general, or its bounding-box centre for
+proj=isea) rather than at a fixed lat / lon.Note
The default convention is to interpret this value as decimal degrees. To specify radians instead, follow the value with the "r" character.
Example: +lat_0=1.570796r
See Projection Units for more information.
- +lon_0=<value>
Geodetic longitude of the geographic point that should land at the projected origin
(0, 0). Used together with+lat_0; the pair translates the projected output without rotating the polyhedron.+x_0/+y_0are applied on top of this translation.When unset, the projected origin falls on the unfold's root face instead (its centroid in general, or its bounding-box centre for
+proj=isea) rather than at a fixed lat / lon.Note
The default convention is to interpret this value as decimal degrees. To specify radians instead, follow the value with the "r" character.
Example: +lon_0=1.570796r
See Projection Units for more information.
- +x_0=<value>
False easting, easting at false origin or easting at projection centre (naming and meaning depend on the projection method). Always in meters.
Defaults to 0.0.
- +y_0=<value>
False northing, northing at false origin or northing at projection centre (naming and meaning depend on the projection method). Always in meters.
Defaults to 0.0.
- +ellps=<value>
The name of a built-in ellipsoid definition.
See Ellipsoids for more information, or execute
proj -lefor a list of built-in ellipsoid names.Defaults to "GRS80".
- +R=<value>
Radius of the sphere, given in meters. If used in conjunction with
+ellps,+Rtakes precedence.See Ellipsoid size parameters for more information.