diff options
| author | Andrew Bell <andrew.bell.ia@gmail.com> | 2019-05-15 10:47:03 -0400 |
|---|---|---|
| committer | Andrew Bell <andrew.bell.ia@gmail.com> | 2019-05-15 10:47:03 -0400 |
| commit | 8f268409d37cea329d263e177b83e42f8384d3c7 (patch) | |
| tree | c4d0f3dd19456600f718a6e0c8573577f433549b /src/projections/laea.cpp | |
| parent | 886ced02f0aaab5d66d16459435f7447cf976650 (diff) | |
| parent | d67203a6f76a74f5ac029ff052dbcc72e3b59624 (diff) | |
| download | PROJ-8f268409d37cea329d263e177b83e42f8384d3c7.tar.gz PROJ-8f268409d37cea329d263e177b83e42f8384d3c7.zip | |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src/projections/laea.cpp')
| -rw-r--r-- | src/projections/laea.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/projections/laea.cpp b/src/projections/laea.cpp index 22fb1691..8a23c504 100644 --- a/src/projections/laea.cpp +++ b/src/projections/laea.cpp @@ -32,7 +32,7 @@ struct pj_opaque { #define EPS10 1.e-10 -static PJ_XY e_forward (PJ_LP lp, PJ *P) { /* Ellipsoidal, forward */ +static PJ_XY laea_e_forward (PJ_LP lp, PJ *P) { /* Ellipsoidal, forward */ PJ_XY xy = {0.0,0.0}; struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque); double coslam, sinlam, sinphi, q, sinb=0.0, cosb=0.0, b=0.0; @@ -94,7 +94,7 @@ eqcon: } -static PJ_XY s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forward */ +static PJ_XY laea_s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forward */ PJ_XY xy = {0.0,0.0}; struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque); double coslam, cosphi, sinphi; @@ -136,7 +136,7 @@ oblcon: } -static PJ_LP e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, inverse */ +static PJ_LP laea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, inverse */ PJ_LP lp = {0.0,0.0}; struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque); double cCe, sCe, q, rho, ab=0.0; @@ -185,7 +185,7 @@ static PJ_LP e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, inverse */ } -static PJ_LP s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inverse */ +static PJ_LP laea_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inverse */ PJ_LP lp = {0.0,0.0}; struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque); double cosz=0.0, rh, sinz=0.0; @@ -248,6 +248,9 @@ PJ *PROJECTION(laea) { P->destructor = destructor; t = fabs(P->phi0); + if (t > M_HALFPI + EPS10 ) { + return destructor(P, PJD_ERR_LAT_LARGER_THAN_90); + } if (fabs(t - M_HALFPI) < EPS10) Q->mode = P->phi0 < 0. ? S_POLE : N_POLE; else if (fabs(t) < EPS10) @@ -284,15 +287,15 @@ PJ *PROJECTION(laea) { Q->xmf *= Q->dd; break; } - P->inv = e_inverse; - P->fwd = e_forward; + P->inv = laea_e_inverse; + P->fwd = laea_e_forward; } else { if (Q->mode == OBLIQ) { Q->sinb1 = sin(P->phi0); Q->cosb1 = cos(P->phi0); } - P->inv = s_inverse; - P->fwd = s_forward; + P->inv = laea_s_inverse; + P->fwd = laea_s_forward; } return P; |
