Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for more generic Space Oblique Mercator (SOM) projection #3338

Merged
merged 11 commits into from
Sep 27, 2022
Merged
12 changes: 12 additions & 0 deletions docs/plot/plotdefs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1321,6 +1321,18 @@
"res": "med",
"type": "poly"
},
{
"filename": "som.png",
"latmax": 90,
"latmin": -90,
"lonmax": 180,
"lonmin": -180,
"name": "som",
"projstring": "+proj=som +inc_angle=98.303820000243860022 +ps_rev=0.06866666666666667 +asc_lon=64.412896137498847793",
"res": "low",
"type": "line",
"delta_cut": 1e7
},
{
"filename": "stere.png",
"latmax": 90.0,
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/source/operations/projections/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ Projections map the spherical 3D space to a flat 2D space.
s2
sch
sinu
som
somerc
stere
sterea
Expand Down
15 changes: 15 additions & 0 deletions docs/source/operations/projections/lsat.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@
Space oblique for LANDSAT
********************************************************************************

Space oblique for LANDSAT is a specialization of :doc:`Space Oblique Mercator<som>`
which specifies the appropriate ascending longitude, inclination angle, and
orbital period for Landsat satellites, based on their satellite designation / id
and path number.

"Paths" are the repeating ground tracks that are traced by sun-synchronous
satellites like those of the Landsat program.

+---------------------+----------------------------------------------------------+
| **Classification** | Cylindrical |
+---------------------+----------------------------------------------------------+
Expand Down Expand Up @@ -56,3 +64,10 @@ Optional
.. include:: ../options/x_0.rst

.. include:: ../options/y_0.rst

Further reading
###############

#. `Landsat Wikipedia <https://en.wikipedia.org/wiki/Landsat_program>`_
#. :doc:`Space Oblique Mercator Projection<som>`

14 changes: 14 additions & 0 deletions docs/source/operations/projections/misrsom.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@
Space oblique for MISR
********************************************************************************

Space oblique for MISR is a specialization of :doc:`Space Oblique Mercator<som>`
which specifies the appropriate ascending longitude, inclination angle, and orbital
period for Multi-angle Imaging Spectroradiometer (MISR) orbits, based on the path
number for the orbit.

"Paths" are the repeating ground tracks that are traced by sun-synchronous
satellites like Terra on which the MISR instrument is aboard.


+---------------------+----------------------------------------------------------+
| **Classification** | Conformal |
+---------------------+----------------------------------------------------------+
Expand Down Expand Up @@ -51,3 +60,8 @@ Optional
.. include:: ../options/x_0.rst

.. include:: ../options/y_0.rst

#. `MISR Wikipedia <https://en.wikipedia.org/wiki/Landsat_program>`_
#. `Terra Wikipedia <https://en.wikipedia.org/wiki/Terra_(satellite)>`_
#. :doc:`Space Oblique Mercator Projection<som>`

88 changes: 88 additions & 0 deletions docs/source/operations/projections/som.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
.. _som:

********************************************************************************
Space Oblique Mercator (SOM)
********************************************************************************

The Space Oblique Mercator (SOM) projection is a generalization of the Oblique
Mercator projection, itself an (oblique) aspect of the Mercator projection with
origins in the 16th century. In the previously available map projections, ground
tracks of satellites traced curved lines which complicated their use in
representing satellite remote sensing data. In response, SOM was specifically
designed to represent satellite ground tracks as straight lines. This had the
effect of minimizing distortions of data along a ground track and allowing
satellite data to be represented accurately as a rectangular array.



+---------------------+----------------------------------------------------------+
| **Classification** | Conformal |
+---------------------+----------------------------------------------------------+
| **Available forms** | Forward and inverse, spherical and ellipsoidal |
+---------------------+----------------------------------------------------------+
| **Defined area** | Global |
+---------------------+----------------------------------------------------------+
| **Alias** | som |
+---------------------+----------------------------------------------------------+
| **Domain** | 2D |
+---------------------+----------------------------------------------------------+
| **Input type** | Geodetic coordinates |
+---------------------+----------------------------------------------------------+
| **Output type** | Projected coordinates |
+---------------------+----------------------------------------------------------+

kbevers marked this conversation as resolved.
Show resolved Hide resolved

.. figure:: ./images/som.png
:width: 500 px
:align: center
:alt: Space Oblique Mercator (SOM)


proj-string: ``+proj=som +inc_angle=98.303820000243860022 +ps_rev=0.06866666666666667 +asc_lon=64.412896137498847793``

proj-string: ``+proj=som +inc_angle=1.7157253262878522r +ps_rev=0.06866666666666667 +asc_lon=1.1242171183417042r``

Parameters
################################################################################

Required
--------------------------------------------------------------------------------

.. option:: +asc_lon=<value>

Longitude of the ascending node for the orbit (decimal degrees).

.. option:: +inc_angle=<value>

Inclination (vertical tilt) of the orbit with respect to the reference plane, measured at the ascending node (decimal degrees).

.. option:: +ps_rev=<value>

Time required for a single orbit (days).

.. note::

To specify asc_lon or inc_angle in radians (instead of degrees). Follow the value with the "r" character.

As an example, to specify the ascending longitude as 1.1242171183417042 radians (~64.4129 decimal degrees): `+asc_lon=1.1242171183417042r`.

For more information see :doc:`projections usage<../../usage/projections>`.

Optional
--------------------------------------------------------------------------------

.. include:: ../options/lon_0.rst

.. include:: ../options/ellps.rst

.. include:: ../options/R.rst

.. include:: ../options/x_0.rst

.. include:: ../options/y_0.rst

Further reading
###############

#. `Space Oblique Mercator Wikipedia <https://en.wikipedia.org/wiki/Space-oblique_Mercator_projection>`_
#. `USGS Report on Space Oblique Mercator Mathematical Development <https://web.archive.org/web/20211213011807/https://pubs.usgs.gov/bul/1518/report.pdf>`_
1 change: 1 addition & 0 deletions docs/source/spelling_wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ ogc
omerc
OSGeo
osgeo
som
srs
tmerc
towgs
Expand Down
3 changes: 1 addition & 2 deletions src/lib_proj.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ set(SRC_LIBPROJ_PROJECTIONS
projections/eqc.cpp
projections/gall.cpp
projections/labrd.cpp
projections/lsat.cpp
projections/misrsom.cpp
projections/som.cpp
projections/merc.cpp
projections/mill.cpp
projections/ocea.cpp
Expand Down
1 change: 1 addition & 0 deletions src/pj_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ PROJ_HEAD(s2, "S2")
PROJ_HEAD(sch, "Spherical Cross-track Height")
PROJ_HEAD(set, "Set coordinate value")
PROJ_HEAD(sinu, "Sinusoidal (Sanson-Flamsteed)")
PROJ_HEAD(som, "Space Oblique Mercator")
PROJ_HEAD(somerc, "Swiss. Obl. Mercator")
PROJ_HEAD(stere, "Stereographic")
PROJ_HEAD(sterea, "Oblique Stereographic Alternative")
Expand Down
Loading