public class TransverseMercator extends AbstractCoordinatesProjection
| Constructor and Description |
|---|
TransverseMercator(ProjectedCoordinateSystem coordinateSystem)
Construct a new TransverseMercator projection.
|
| Modifier and Type | Method and Description |
|---|---|
void |
inverse(double x,
double y,
double[] targetCoordinates,
int targetOffset,
int targetAxisCount)
Project the projected coordinates in metres to lon/lat ordinates in
degrees.
|
void |
project(double lambda,
double phi,
double[] targetCoordinates,
int targetOffset,
int targetAxisCount)
Project the lon/lat ordinates in degrees to projected coordinates in
metres.
|
String |
toString()
Return the string representation of the projection.
|
getInverseOperation, getProjectOperationpublic TransverseMercator(ProjectedCoordinateSystem coordinateSystem)
coordinateSystem - The coordinate system.public void inverse(double x,
double y,
double[] targetCoordinates,
int targetOffset,
int targetAxisCount)
ϕ = ϕ1 – (ν1 * tanϕ1 / ρ1 ) * [ D ˆ 2/2 – (5 + 3 * T1 + 10 * C1 – 4 * C1 ˆ 2 – 9 * e' ˆ 2) * D ˆ 4 / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 ˆ 2 – 252 * e' ˆ 2 – 3 * C1 ˆ 2) * D ˆ 6 / 720 ] λ = λO + [ D – (1 + 2 * T1 + C1) * D ˆ 3 / 6 + (5 – 2 * C1 + 28 * T1 – 3 * C1 ˆ 2 + 8 * e' ˆ 2 + 24 * T1 ˆ 2) * D ˆ 5 / 120 ] / cosϕ1 ν1 = a /(1 – e ˆ 2 * sinϕ1 ˆ 2) ˆ 0.5 ρ1 = a * (1 – e ˆ 2) / (1 – e ˆ 2 * sinϕ1 ˆ 2) ˆ 1.5 ϕ1 = μ1 + (3 * e1 / 2 – 27 * e1 ˆ 3 /32 + .....) * sin(2 * μ1) + (21 * e1 ˆ 2 / 16 – 55 * e1 ˆ 4 / 32 + ....) * sin(4 * μ1) + (151 * e1 ˆ 3 / 96 + .....) * sin(6 * μ1) + (1097 * e1 ˆ 4 / 512 – ....) * sin(8 * μ1) + ...... e1 = [1 – (1 – e ˆ 2) ˆ 0.5] / [1 + (1 – e ˆ 2) ˆ 0.5] μ1 = M1 / [a * (1 – e ˆ 2 / 4 – 3 * e ˆ 4 / 64 – 5 * e ˆ 6 / 256 – ....)] M1 = MO + (y – y0) / k0 T1 = tanϕ1 ˆ 2 C1 = e' ˆ 2 * cosϕ1 ˆ 2 e' ˆ 2 = e ˆ 2 / (1 – e ˆ 2) D = (x – x0) / (ν1 * kO)
from - The ordinates to convert.to - The ordinates to write the converted ordinates to.public void project(double lambda,
double phi,
double[] targetCoordinates,
int targetOffset,
int targetAxisCount)
x = x0 + kO * ν * [
A + (1 – T + C) * A ˆ 3 / 6 +
(5 – 18 * T + T ˆ 2 + 72 *C – 58 *e' ˆ 2 ) * A ˆ 5 / 120
]
y = y0 + kO * { M – MO + ν * tanϕ * [
A ˆ 2 / 2 +
(5 – T + 9 * C + 4 * C ˆ 2) * A ˆ 4 / 24 +
(61 – 58 * T + T ˆ 2 + 600 * C – 330 * e' ˆ 2 ) * A ˆ 6 / 720
]}
T = tanϕ * 2
C = e ˆ 2 * cosϕ ˆ 2 / (1 – e ˆ 2)
A = (λ – λO) * cosϕ
ν = a / (1 – e ˆ 2 * sinϕ ˆ 2) ˆ 0.5
from - The ordinates to convert.to - The ordinates to write the converted ordinates to.Copyright © 2015 Revolution Systems Inc.. All rights reserved.