diff options
Diffstat (limited to 'src/projections/urm5.cpp')
| -rw-r--r-- | src/projections/urm5.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/projections/urm5.cpp b/src/projections/urm5.cpp index c3021841..25db4391 100644 --- a/src/projections/urm5.cpp +++ b/src/projections/urm5.cpp @@ -32,22 +32,29 @@ PJ *PROJECTION(urm5) { double alpha, t; 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; - if (pj_param(P->ctx, P->params, "tn").i) { - Q->n = pj_param(P->ctx, P->params, "dn").f; - if (Q->n <= 0. || Q->n > 1.) - return pj_default_destructor(P, PJD_ERR_N_OUT_OF_RANGE); - } else { - return pj_default_destructor(P, PJD_ERR_N_OUT_OF_RANGE); + if (!pj_param(P->ctx, P->params, "tn").i ) + { + proj_log_error(P, _("Missing parameter n.")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_MISSING_ARG); } + + Q->n = pj_param(P->ctx, P->params, "dn").f; + if (Q->n <= 0. || Q->n > 1.) + { + proj_log_error(P, _("Invalid value for n: it should be in ]0,1] range.")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } + Q->q3 = pj_param(P->ctx, P->params, "dq").f / 3.; alpha = pj_param(P->ctx, P->params, "ralpha").f; t = Q->n * sin (alpha); const double denom = sqrt (1. - t * t); if( denom == 0 ) { - return pj_default_destructor(P, PJD_ERR_LAT_0_OR_ALPHA_EQ_90); + proj_log_error(P, _("Invalid value for n / alpha: n * sin(|alpha|) should be < 1.")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } Q->m = cos (alpha) / denom; Q->rmn = 1. / (Q->m * Q->n); |
