aboutsummaryrefslogtreecommitdiff
path: root/src/projections/aea.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-12-15 00:51:46 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-12-15 01:13:43 +0100
commit244a24104ded3a4573aeffa32160af21f76cbce6 (patch)
treef3a11529172719657cf7576e062e45e0f9452db5 /src/projections/aea.cpp
parent1e9894b0e2b161e61546672bccb85a9ef21df541 (diff)
downloadPROJ-244a24104ded3a4573aeffa32160af21f76cbce6.tar.gz
PROJ-244a24104ded3a4573aeffa32160af21f76cbce6.zip
Revise error codes to have a reduced set exposed in the public API.
Fixes #2482 And also add proj_context_errno_string() Revise gie 'expect failure errno XXXX' strings
Diffstat (limited to 'src/projections/aea.cpp')
-rw-r--r--src/projections/aea.cpp30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/projections/aea.cpp b/src/projections/aea.cpp
index af0f292d..c5b03158 100644
--- a/src/projections/aea.cpp
+++ b/src/projections/aea.cpp
@@ -107,7 +107,7 @@ static PJ_XY aea_e_forward (PJ_LP lp, PJ *P) { /* Ellipsoid/spheroid, forward
struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque);
Q->rho = Q->c - (Q->ellips ? Q->n * pj_qsfn(sin(lp.phi), P->e, P->one_es) : Q->n2 * sin(lp.phi));;
if (Q->rho < 0.) {
- proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
+ proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
return xy;
}
Q->rho = Q->dd * sqrt(Q->rho);
@@ -134,12 +134,12 @@ static PJ_LP aea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoid/spheroid, inverse
lp.phi = (Q->c - lp.phi * lp.phi) / Q->n;
if (fabs(Q->ec - fabs(lp.phi)) > TOL7) {
if (fabs(lp.phi) > 2 ) {
- proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
+ proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
return lp;
}
lp.phi = phi1_(lp.phi, P->e, P->one_es);
if (lp.phi == HUGE_VAL) {
- proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
+ proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
return lp;
}
} else
@@ -167,10 +167,21 @@ static PJ *setup(PJ *P) {
P->inv = aea_e_inverse;
P->fwd = aea_e_forward;
- if (fabs(Q->phi1) > M_HALFPI || fabs(Q->phi2) > M_HALFPI)
- return destructor(P, PJD_ERR_LAT_LARGER_THAN_90);
+ if (fabs(Q->phi1) > M_HALFPI)
+ {
+ proj_log_error(P, _("Invalid value for lat_1: |lat_1| should be <= 90°"));
+ return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
+ }
+ if (fabs(Q->phi2) > M_HALFPI)
+ {
+ proj_log_error(P, _("Invalid value for lat_2: |lat_2| should be <= 90°"));
+ return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
+ }
if (fabs(Q->phi1 + Q->phi2) < EPS10)
- return destructor(P, PJD_ERR_CONIC_LAT_EQUAL);
+ {
+ proj_log_error(P, _("Invalid value for lat_1 and lat_2: |lat_1 + lat_2| should be > 0"));
+ return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
+ }
double sinphi = sin(Q->phi1);
Q->n = sinphi;
double cosphi = cos(Q->phi1);
@@ -197,7 +208,8 @@ static PJ *setup(PJ *P) {
Q->n = (m1 * m1 - m2 * m2) / (ml2 - ml1);
if (Q->n == 0) {
// Not quite, but es is very close to 1...
- return destructor(P, PJD_ERR_INVALID_ECCENTRICITY);
+ proj_log_error(P, _("Invalid value for eccentricity"));
+ return destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
}
}
Q->ec = 1. - .5 * P->one_es * log((1. - P->e) /
@@ -221,7 +233,7 @@ static PJ *setup(PJ *P) {
PJ *PROJECTION(aea) {
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_INVALID_OP /*ENOMEM*/);
P->opaque = Q;
P->destructor = destructor;
@@ -234,7 +246,7 @@ PJ *PROJECTION(aea) {
PJ *PROJECTION(leac) {
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_INVALID_OP /*ENOMEM*/);
P->opaque = Q;
P->destructor = destructor;