diff options
| author | Kristian Evers <kristianevers@gmail.com> | 2017-07-17 23:10:09 +0200 |
|---|---|---|
| committer | Kristian Evers <kristianevers@gmail.com> | 2017-07-18 11:47:20 +0200 |
| commit | ad7a7c1b1d54c69b9df442797a809418d00d647d (patch) | |
| tree | ad9a4dd1bb9aa1fcbc17e82508ec0482d1d6d06d /src/PJ_omerc.c | |
| parent | 2ec0759b8cdd45deae8b9aba70ec7d23c7c3ddd8 (diff) | |
| download | PROJ-ad7a7c1b1d54c69b9df442797a809418d00d647d.tar.gz PROJ-ad7a7c1b1d54c69b9df442797a809418d00d647d.zip | |
Expanded *_ERROR* macros.
Expanded *_ERROR* macros with calls to proj_errno_set() and proper
returns when necessary. Defined a bunch of new PJD_ERR_ constants in
projects.h that corresponds to the error numbers in pj_strerrno.c. A few
unknown error numbers were replaced by existing ones in pj_strerrno.c.
Diffstat (limited to 'src/PJ_omerc.c')
| -rw-r--r-- | src/PJ_omerc.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/PJ_omerc.c b/src/PJ_omerc.c index 8874784d..0d86e460 100644 --- a/src/PJ_omerc.c +++ b/src/PJ_omerc.c @@ -22,7 +22,8 @@ ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define PJ_LIB__ -#include <projects.h> +#include <proj.h> +#include "projects.h" PROJ_HEAD(omerc, "Oblique Mercator") "\n\tCyl, Sph&Ell no_rot\n\t" @@ -50,8 +51,10 @@ static XY e_forward (LP lp, PJ *P) { /* Ellipsoidal, forward */ T = .5 * (W + temp); V = sin(Q->B * lp.lam); U = (S * Q->singam - V * Q->cosgam) / T; - if (fabs(fabs(U) - 1.0) < EPS) - F_ERROR; + if (fabs(fabs(U) - 1.0) < EPS) { + proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION); + return xy; + } v = 0.5 * Q->ArB * log((1. - U)/(1. + U)); temp = cos(Q->B * lp.lam); if(fabs(temp) < TOL) { @@ -97,8 +100,10 @@ static LP e_inverse (XY xy, PJ *P) { /* Ellipsoidal, inverse */ lp.phi = Up < 0. ? -M_HALFPI : M_HALFPI; } else { lp.phi = Q->E / sqrt((1. + Up) / (1. - Up)); - if ((lp.phi = pj_phi2(P->ctx, pow(lp.phi, 1. / Q->B), P->e)) == HUGE_VAL) - I_ERROR; + if ((lp.phi = pj_phi2(P->ctx, pow(lp.phi, 1. / Q->B), P->e)) == HUGE_VAL) { + proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION); + return lp; + } lp.lam = - Q->rB * atan2((Sp * Q->cosgam - Vp * Q->singam), cos(Q->BrA * u)); } @@ -159,7 +164,10 @@ PJ *PROJECTION(omerc) { (con = fabs(phi1)) <= TOL || fabs(con - M_HALFPI) <= TOL || fabs(fabs(P->phi0) - M_HALFPI) <= TOL || - fabs(fabs(phi2) - M_HALFPI) <= TOL) E_ERROR(-33); + fabs(fabs(phi2) - M_HALFPI) <= TOL) { + proj_errno_set(P, PJD_ERR_LAT_0_OR_ALPHA_EQ_90); + return freeup_new(P); + } } com = sqrt(P->one_es); if (fabs(P->phi0) > EPS) { |
