1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.data.projection.proj;
|
---|
3 |
|
---|
4 | import static java.lang.Math.PI;
|
---|
5 | import static java.lang.Math.atan;
|
---|
6 | import static java.lang.Math.log;
|
---|
7 | import static java.lang.Math.sinh;
|
---|
8 | import static java.lang.Math.tan;
|
---|
9 | import static org.openstreetmap.josm.tools.I18n.tr;
|
---|
10 |
|
---|
11 | import org.openstreetmap.josm.data.Bounds;
|
---|
12 | import org.openstreetmap.josm.data.projection.ProjectionConfigurationException;
|
---|
13 |
|
---|
14 | /**
|
---|
15 | * Mercator Projection.
|
---|
16 | */
|
---|
17 | public class Mercator implements Proj {
|
---|
18 |
|
---|
19 | @Override
|
---|
20 | public String getName() {
|
---|
21 | return tr("Mercator");
|
---|
22 | }
|
---|
23 |
|
---|
24 | @Override
|
---|
25 | public String getProj4Id() {
|
---|
26 | return "josm:smerc"; // "merc" is ellipsoidal Mercator projection in PROJ.4
|
---|
27 | }
|
---|
28 |
|
---|
29 | @Override
|
---|
30 | public void initialize(ProjParameters params) throws ProjectionConfigurationException {
|
---|
31 | }
|
---|
32 |
|
---|
33 | @Override
|
---|
34 | public double[] project(double lat_rad, double lon_rad) {
|
---|
35 | return new double[] {lon_rad, log(tan(PI/4 + lat_rad/2))};
|
---|
36 | }
|
---|
37 |
|
---|
38 | @Override
|
---|
39 | public double[] invproject(double east, double north) {
|
---|
40 | return new double[] {atan(sinh(north)), east};
|
---|
41 | }
|
---|
42 |
|
---|
43 | @Override
|
---|
44 | public Bounds getAlgorithmBounds() {
|
---|
45 | return new Bounds(-89, -180, 89, 180, false);
|
---|
46 | }
|
---|
47 | }
|
---|