Polyhedral Snyder Equal Area projections

Added in version 9.9.

Polyhedral projection (DSEA A5 net)

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_lon and +azi this 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_lat and +azi this 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_lat and +orient_lon this 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_0 are 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_0 are 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 -le for 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, +R takes precedence.

See Ellipsoid size parameters for more information.