aboutsummaryrefslogtreecommitdiff
path: root/src/projections/cea.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-12-16 15:12:51 +0100
committerGitHub <noreply@github.com>2020-12-16 15:12:51 +0100
commit5e077729274f5d28e137e1a41f7d3350146614ef (patch)
treed1ef799526f06828328b58ce8ee92c028f723b6a /src/projections/cea.cpp
parent8b1ef9504d0bcfbd8433df943e307bbd1aa30c4f (diff)
parenta27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80 (diff)
downloadPROJ-5e077729274f5d28e137e1a41f7d3350146614ef.tar.gz
PROJ-5e077729274f5d28e137e1a41f7d3350146614ef.zip
Merge pull request #2487 from rouault/error_mgt_improvements
Error management: revise error codes and expose them to the public API
Diffstat (limited to 'src/projections/cea.cpp')
-rw-r--r--src/projections/cea.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/projections/cea.cpp b/src/projections/cea.cpp
index b7874b90..e26a14f3 100644
--- a/src/projections/cea.cpp
+++ b/src/projections/cea.cpp
@@ -53,7 +53,7 @@ static PJ_LP cea_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inverse
lp.phi = asin(xy.y);
lp.lam = xy.x / P->k0;
} else {
- proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
+ proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
return lp;
}
return (lp);
@@ -75,15 +75,19 @@ PJ *PROJECTION(cea) {
double t = 0.0;
struct pj_opaque *Q = static_cast<struct pj_opaque*>(calloc (1, sizeof (struct pj_opaque)));
if (nullptr==Q)
- return pj_default_destructor (P, ENOMEM);
+ return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/);
P->opaque = Q;
P->destructor = destructor;
if (pj_param(P->ctx, P->params, "tlat_ts").i) {
- P->k0 = cos(t = pj_param(P->ctx, P->params, "rlat_ts").f);
+ t = pj_param(P->ctx, P->params, "rlat_ts").f;
+ P->k0 = cos(t);
if (P->k0 < 0.)
- return pj_default_destructor (P, PJD_ERR_LAT_TS_LARGER_THAN_90);
+ {
+ proj_log_error(P, _("Invalid value for lat_ts: |lat_ts| should be <= 90°"));
+ return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
+ }
}
if (P->es != 0.0) {
t = sin(t);
@@ -91,7 +95,7 @@ PJ *PROJECTION(cea) {
P->e = sqrt(P->es);
Q->apa = pj_authset(P->es);
if (!(Q->apa))
- return pj_default_destructor(P, ENOMEM);
+ return pj_default_destructor(P, PROJ_ERR_OTHER /*ENOMEM*/);
Q->qp = pj_qsfn(1., P->e, P->one_es);
P->inv = cea_e_inverse;