Martin Desruisseaux created SIS-547:
---------------------------------------
Summary: Mercator projecction should wraparound longitude values
Key: SIS-547
URL: https://issues.apache.org/jira/browse/SIS-547
Project: Spatial Information Systems
Issue Type: Improvement
Components: Referencing
Affects Versions: 1.1, 1.0, 0.8, 0.7, 0.6, 1.2
Reporter: Martin Desruisseaux
Assignee: Martin Desruisseaux
Fix For: 1.3
When the central meridian has a value different than zero, user may expect a
range of 180° on the east of central meridian to produce positive easting
values and conversely on for 180° on the west of central meridian. This is
currently not the case:
{code:java}
ProjectedCRS crs = (ProjectedCRS) CRS.forCode("EPSG:3994");
MathTransform prj = crs.getConversionFromBase().getMathTransform();
double[] coordinates = {-41, 100, -41, 179, -41, 181, -41, -179};
prj.transform(coordinates, 0, coordinates, 0, 4);
System.out.println(java.util.Arrays.toString(coordinates));
{code}
Output (reformatted for readability):
{code:none}
0 -3767132
6646680 -3767132
6814950 -3767132
-23473717 -3767132
{code}
Other map projection implementations rely on trigonometric functions for
applying an implicit wraparound. For example in a call to {{sin(λ)}} the λ
argument value is implicitly reduced to a range of -π … +π around the λ₀
(central meridian). But it does not happen in the particular case of the
Mercator projection, since the Easting value is just a multiplication factor
without trigonometric functions involved. So we have to do the wraparound
ourselves.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)