aboutsummaryrefslogtreecommitdiff
path: root/src/projections/imw_p.cpp
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2020-12-21 17:28:48 +0100
committerKristian Evers <kristianevers@gmail.com>2020-12-21 17:28:48 +0100
commit5aad0d25f8423b8b88a716d0333c7bd19f6184c7 (patch)
treef0a248ef08fb51ef0ec29178ef41fd4168d4c85d /src/projections/imw_p.cpp
parentc3efbd23a5bf26f1dfd5bc55ae3488d5665ace98 (diff)
parent1cafe3e602d3f697c8d2daaa9b634f3ad23b0d53 (diff)
downloadPROJ-5aad0d25f8423b8b88a716d0333c7bd19f6184c7.tar.gz
PROJ-5aad0d25f8423b8b88a716d0333c7bd19f6184c7.zip
Merge remote-tracking branch 'osgeo/master'
Diffstat (limited to 'src/projections/imw_p.cpp')
-rw-r--r--src/projections/imw_p.cpp30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/projections/imw_p.cpp b/src/projections/imw_p.cpp
index 6e82d287..ed5cb897 100644
--- a/src/projections/imw_p.cpp
+++ b/src/projections/imw_p.cpp
@@ -34,15 +34,27 @@ static int phi12(PJ *P, double *del, double *sig) {
struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque);
int err = 0;
- if (!pj_param(P->ctx, P->params, "tlat_1").i ||
- !pj_param(P->ctx, P->params, "tlat_2").i) {
- err = PJD_ERR_LAT_1_2_UNSPECIFIED;
- } else {
+ if (!pj_param(P->ctx, P->params, "tlat_1").i )
+ {
+ proj_log_error(P, _("Missing parameter: lat_1 should be specified"));
+ err = PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE;
+ }
+ else if ( !pj_param(P->ctx, P->params, "tlat_2").i)
+ {
+ proj_log_error(P, _("Missing parameter: lat_2 should be specified"));
+ err = PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE;
+ }
+ else
+ {
Q->phi_1 = pj_param(P->ctx, P->params, "rlat_1").f;
Q->phi_2 = pj_param(P->ctx, P->params, "rlat_2").f;
*del = 0.5 * (Q->phi_2 - Q->phi_1);
*sig = 0.5 * (Q->phi_2 + Q->phi_1);
- err = (fabs(*del) < EPS || fabs(*sig) < EPS) ? PJD_ERR_ABS_LAT1_EQ_ABS_LAT2 : 0;
+ err = (fabs(*del) < EPS || fabs(*sig) < EPS) ? PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE : 0;
+ if( err )
+ {
+ proj_log_error(P, _("Illegal value for lat_1 and lat_2: |lat_1 - lat_2| and |lat_1 + lat_2| should be > 0"));
+ }
}
return err;
}
@@ -120,7 +132,7 @@ static PJ_LP imw_p_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, invers
if( denom != 0 || fabs(t.y - xy.y) > TOL )
{
if( denom == 0 ) {
- proj_errno_set(P, PJD_ERR_NON_CONVERGENT);
+ proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
return proj_coord_error().lp;
}
lp.phi = ((lp.phi - Q->phi_1) * (xy.y - yc) / denom) + Q->phi_1;
@@ -133,7 +145,7 @@ static PJ_LP imw_p_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, invers
if( i == N_MAX_ITER )
{
- proj_errno_set(P, PJD_ERR_NON_CONVERGENT);
+ proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
return proj_coord_error().lp;
}
@@ -171,10 +183,10 @@ PJ *PROJECTION(imw_p) {
int err;
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;
- if (!(Q->en = pj_enfn(P->es))) return pj_default_destructor (P, ENOMEM);
+ if (!(Q->en = pj_enfn(P->es))) return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/);
if( (err = phi12(P, &del, &sig)) != 0) {
return destructor(P, err);
}