aboutsummaryrefslogtreecommitdiff
path: root/docs/source
diff options
context:
space:
mode:
authorToby C. Wilkinson <open@tobywilkinson.co.uk>2021-12-20 19:22:46 +0000
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2021-12-20 20:23:20 +0000
commitd5d60b7154d149de797737ecd96fde56bfecb7c2 (patch)
tree2f7d41b6d83efc6329898aac5eec4cd073ddcfd5 /docs/source
parent247a79e6c7e425573900821c218c10ec2a272f97 (diff)
downloadPROJ-d5d60b7154d149de797737ecd96fde56bfecb7c2.tar.gz
PROJ-d5d60b7154d149de797737ecd96fde56bfecb7c2.zip
Fix and additional options for Peirce Quincuncial projections (#2978)
This fixes the current forward implementation of Peirce Quincuncial proj to correctly flip/reflect out the southern hemisphere to four triangles, and rotate entire result to a square or diamond. (It there resolves the issues identified with pull request https://github.com/OSGeo/PROJ/pull/2230 , where southern hemisphere was wrongly projected over northern, and reverses the restriction to northern hemisphere introduced there). It also adds additional lateral projection of the hemispheres. - This PR adds an optional parameter `+type` which allows selection of projection. The `+type=square` and `+type=diamond` types match in principle ESRI's twin implementations of square and diamond PQ projs. The **default** if not specified is `+type=diamond`. - The previous behaviour restricted to the northern hemisphere can be reproduced using the `+type=nhemisphere`, though this is an edge case only. - An additional `+type=horizontal` and `+type=vertical` rectangular lateral versions have been added that place each hemisphere side-by-side. This is primarily to allow creation of projections such as Greiger Triptychial, which also require the additional optional params `scrollx` or `scrolly` in order to shift parts of the projection from one side of the map to the other. - Additional documentation has been added to proj description, including quoting the usual meridian used in common usage of projection, and images showing the different types.
Diffstat (limited to 'docs/source')
-rw-r--r--docs/source/operations/projections/images/grieger_triptychial.pngbin0 -> 603219 bytes
-rw-r--r--docs/source/operations/projections/images/peirce_q.pngbin375467 -> 0 bytes
-rw-r--r--docs/source/operations/projections/images/peirce_q_diamond.pngbin0 -> 394555 bytes
-rw-r--r--docs/source/operations/projections/images/peirce_q_horizontal.pngbin0 -> 568102 bytes
-rw-r--r--docs/source/operations/projections/images/peirce_q_square.pngbin0 -> 587992 bytes
-rw-r--r--docs/source/operations/projections/peirce_q.rst79
6 files changed, 76 insertions, 3 deletions
diff --git a/docs/source/operations/projections/images/grieger_triptychial.png b/docs/source/operations/projections/images/grieger_triptychial.png
new file mode 100644
index 00000000..2e03a67b
--- /dev/null
+++ b/docs/source/operations/projections/images/grieger_triptychial.png
Binary files differ
diff --git a/docs/source/operations/projections/images/peirce_q.png b/docs/source/operations/projections/images/peirce_q.png
deleted file mode 100644
index 646e4f80..00000000
--- a/docs/source/operations/projections/images/peirce_q.png
+++ /dev/null
Binary files differ
diff --git a/docs/source/operations/projections/images/peirce_q_diamond.png b/docs/source/operations/projections/images/peirce_q_diamond.png
new file mode 100644
index 00000000..b8a84967
--- /dev/null
+++ b/docs/source/operations/projections/images/peirce_q_diamond.png
Binary files differ
diff --git a/docs/source/operations/projections/images/peirce_q_horizontal.png b/docs/source/operations/projections/images/peirce_q_horizontal.png
new file mode 100644
index 00000000..615c2abf
--- /dev/null
+++ b/docs/source/operations/projections/images/peirce_q_horizontal.png
Binary files differ
diff --git a/docs/source/operations/projections/images/peirce_q_square.png b/docs/source/operations/projections/images/peirce_q_square.png
new file mode 100644
index 00000000..485b23a1
--- /dev/null
+++ b/docs/source/operations/projections/images/peirce_q_square.png
Binary files differ
diff --git a/docs/source/operations/projections/peirce_q.rst b/docs/source/operations/projections/peirce_q.rst
index 86445ea1..cf972932 100644
--- a/docs/source/operations/projections/peirce_q.rst
+++ b/docs/source/operations/projections/peirce_q.rst
@@ -4,6 +4,23 @@
Peirce Quincuncial
********************************************************************************
+The Peirce Quincuncial projection is a conformal map projection
+that transforms the circle of the northern hemisphere into a square,
+and the southern hemisphere split into four triangles arranged
+around the square to form a quincunx. The resulting projection
+is a regular diamond shape or can be rotated to form a square.
+The resulting tile can be infinitely tessellated. Though this implementation
+defaults to a central meridian of 0, it is more common to use a central
+meridian of around 25 to optimise the distortions. Peirce's original
+published map from 1879 used a central meridian of approx -70.
+The diamond and square versions can be produced using the
+``+type=diamond`` and ``+type=square`` options respectively.
+This implementation includes an alternative lateral projection
+which places hemispheres side-by-side (``+type=horizontal`` or
+``+type=vertical``). Combined with a general oblique transformation,
+this can be used to produced a Grieger Triptychial projection
+(see example below).
+
+---------------------+----------------------------------------------------------+
| **Classification** | Miscellaneous |
+---------------------+----------------------------------------------------------+
@@ -21,12 +38,33 @@ Peirce Quincuncial
+---------------------+----------------------------------------------------------+
-.. figure:: ./images/peirce_q.png
+.. figure:: ./images/peirce_q_square.png
+ :width: 500 px
+ :align: center
+ :alt: Peirce Quincuncial (Square)
+
+ proj-string: ``+proj=peirce_q +lon_0=25 +type=square``
+
+.. figure:: ./images/peirce_q_diamond.png
+ :width: 500 px
+ :align: center
+ :alt: Peirce Quincuncial (Diamond)
+
+ proj-string: ``+proj=peirce_q +lon_0=25 +type=diamond``
+
+.. figure:: ./images/peirce_q_horizontal.png
+ :width: 500 px
+ :align: center
+ :alt: Peirce Quincuncial (Horizontal)
+
+ proj-string: ``+proj=peirce_q +lon_0=25 +type=horizontal``
+
+.. figure:: ./images/grieger_triptychial.png
:width: 500 px
:align: center
- :alt: Peirce Quincuncial
+ :alt: Grieger Triptychial
- proj-string: ``+proj=peirce_q``
+ proj-string: ``+proj=pipeline +step +proj=ob_tran +o_proj=peirce_q +o_lat_p=-45 +o_lon_p=45 +o_type=horizontal +o_scrollx=-0.25 +step +proj=affine +s11=-1 +s12=0 +s21=0 +s22=-1``
Parameters
################################################################################
@@ -35,6 +73,41 @@ Parameters
.. include:: ../options/lon_0.rst
+.. option:: +type=square/diamond/horizontal/vertical/nhemisphere/shemisphere
+
+ .. versionadded:: 8.2.1
+
+ *Defaults to diamond.*
+
+ Indicates the type of transformation applied to the southern hemisphere:
+ ``square`` and ``diamond`` represent the traditional quincuncial form suggested
+ by Peirce with the southern hemisphere divided into 4 triangles and reflected
+ outward from the northern hemisphere. The ``square`` type is rotated by 45
+ degrees to produce the conventional square presentation. The origin lies at
+ the centre of the square or diamond.
+
+ By contrast, the ``horizontal`` and ``vertical`` forms reflect the southern
+ hemisphere laterally across the x or y axis respectively to produce a rectangular
+ form. The origin lies at the centre of the rectangle.
+
+ The other two types, ``nhemisphere`` and ``shemisphere``, discard latitudes of less
+ than 0 or more than 0, respectively, to allow single hemispheres to be selected.
+ The origin lies at the centre of the square or diamond.
+
+.. option:: +scrollx=<value>
+
+ For ``horizontal`` type allows a scalar circular scroll of resulting x coordinates
+ to shift sections of the projection to the other horizontal side of the map.
+
+ *Defaults to 0.0. Must be a scale between -1.0 and 1.0.*
+
+.. option:: +scrolly=<value>
+
+ For ``vertical`` type allows a scalar circular scroll of resulting y coordinates
+ to shift sections of the projection to the other vertical side of the map.
+
+ *Defaults to 0.0. Must be a scale between -1.0 and 1.0.*
+
.. include:: ../options/R.rst
.. include:: ../options/x_0.rst