diff options
| author | John Krasting <John.Krasting@noaa.gov> | 2020-05-19 11:22:04 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-19 17:22:04 +0200 |
| commit | b6b0ae12e306c8b7760e79f338bb0f155340117a (patch) | |
| tree | a2df12c5aa9273ff19d0474dbd775005647598cf /src/projections | |
| parent | 3ee7c9495b7340fbc189f43d9bb4bf5753307991 (diff) | |
| download | PROJ-b6b0ae12e306c8b7760e79f338bb0f155340117a.tar.gz PROJ-b6b0ae12e306c8b7760e79f338bb0f155340117a.zip | |
Zone Definition Fixes for igh_o projection (#2233)
- Central lon for zone 2 should be -d10, not d10
- Extra lobe was missing for zone 11
- New figure generated
- New test suite values generated
Diffstat (limited to 'src/projections')
| -rw-r--r-- | src/projections/igh_o.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/projections/igh_o.cpp b/src/projections/igh_o.cpp index 785a8784..b14d79a5 100644 --- a/src/projections/igh_o.cpp +++ b/src/projections/igh_o.cpp @@ -37,9 +37,11 @@ static const double phi_boundary = (40 + 44/60. + 11.8/3600.) * DEG_TO_RAD; static const double d10 = 10 * DEG_TO_RAD; static const double d20 = 20 * DEG_TO_RAD; +static const double d40 = 40 * DEG_TO_RAD; static const double d50 = 50 * DEG_TO_RAD; static const double d60 = 60 * DEG_TO_RAD; static const double d90 = 90 * DEG_TO_RAD; +static const double d100 = 100 * DEG_TO_RAD; static const double d110 = 110 * DEG_TO_RAD; static const double d140 = 140 * DEG_TO_RAD; static const double d150 = 150 * DEG_TO_RAD; @@ -149,7 +151,9 @@ static PJ_LP igh_o_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, invers case 8: ok = (lp.lam >= -d60-EPSLN && lp.lam <= d90+EPSLN); break; case 9: ok = (lp.lam >= d90-EPSLN && lp.lam <= d180+EPSLN); break; case 10: ok = (lp.lam >= -d180-EPSLN && lp.lam <= -d60+EPSLN); break; - case 11: ok = (lp.lam >= -d60-EPSLN && lp.lam <= d90+EPSLN); break; + case 11: ok = (lp.lam >= -d60-EPSLN && lp.lam <= d90+EPSLN) || + ((lp.lam >= d90-EPSLN && lp.lam <= d100+EPSLN) && + (lp.phi >= -d90-EPSLN && lp.phi <= -d40+EPSLN)); break; case 12: ok = (lp.lam >= d90-EPSLN && lp.lam <= d180+EPSLN); break; } @@ -226,7 +230,7 @@ PJ *PROJECTION(igh_o) { /* sinusoidal zones */ if (!setup_zone(P, Q, 4, pj_sinu, -d140, 0, -d140) || - !setup_zone(P, Q, 5, pj_sinu, d10, 0, d10) || + !setup_zone(P, Q, 5, pj_sinu, -d10, 0, -d10) || !setup_zone(P, Q, 6, pj_sinu, d130, 0, d130) || !setup_zone(P, Q, 7, pj_sinu, -d110, 0, -d110) || !setup_zone(P, Q, 8, pj_sinu, d20, 0, d20) || @@ -250,7 +254,7 @@ PJ *PROJECTION(igh_o) { Q->pj[0]->y0 = Q->dy0; /* mollweide zones (cont'd) */ - if (!setup_zone(P, Q, 2, pj_moll, d10, Q->dy0, d10) || + if (!setup_zone(P, Q, 2, pj_moll, -d10, Q->dy0, -d10) || !setup_zone(P, Q, 3, pj_moll, d130, Q->dy0, d130) || !setup_zone(P, Q, 10, pj_moll, -d110, -Q->dy0, -d110) || !setup_zone(P, Q, 11, pj_moll, d20, -Q->dy0, d20) || |
