## Details

## Description

This is an umbrella task for some coordinate operation methods not yet supported in Apache SIS. Coordinate operations include *map projections* (e.g. Transverse Mercator, Lambert Conic Conformal, *etc.*), *datum shifts* (e.g. transformations from NAD27 to NAD83 in United States), transformation of vertical coordinates, *etc*. We can of course not list all possible formulas that we do not support, but this JIRA task lists at least some of the operations listed in the EPSG guidance notes.

The main material for this work is the EPSG guidance notes, which can be downloaded freely from the following site:

IOGP Publication 373-7-2 – Geomatics Guidance Note number 7, part 2

Coordinate Conversions and Transformations including Formulas

http://www.epsg.org/GuidanceNotes

Google summer of code students interested in this work would need to be reasonably comfortable with the Java language (but not necessarily with the JDK library at large, since this work uses relatively few JDK classes outside `Math`), and in mathematic. In particular, this work requires a good understanding of *affine transforms*: their representation as a matrix, and how to map a term in a formula to a coefficient in the affine transform matrix.

Apache SIS has one advanced feature which is not easily found in popular geospatial software or text books: the capability to compute the *derivative* (or more precisely, the *Jacobian*) of a transformation at a given point. Implementation of this feature requires the capability to find the analytic derivative of a non-linear formula and to simplify it.

Implementations of those formulas take place in one of the `org.apache.sis.referencing.operation` sub-packages (`projection` or `transform`). Implementations of JUnit test happen partially in Apache SIS, and partially in the "conformance module" of the GeoAPI project, if possible through the Geospatial Integrity of Geoscience Software (GIGS) tests.