MCPcopy Create free account
hub / github.com/Kitware/VTK / inv_prepare

Function inv_prepare

ThirdParty/libproj/vtklibproj/src/inv.cpp:39–94  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37#define OUTPUT_UNITS P->left
38
39static PJ_COORD inv_prepare (PJ *P, PJ_COORD coo) {
40 if (coo.v[0] == HUGE_VAL || coo.v[1] == HUGE_VAL || coo.v[2] == HUGE_VAL) {
41 proj_errno_set (P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
42 return proj_coord_error ();
43 }
44
45 /* The helmert datum shift will choke unless it gets a sensible 4D coordinate */
46 if (HUGE_VAL==coo.v[2] && P->helmert) coo.v[2] = 0.0;
47 if (HUGE_VAL==coo.v[3] && P->helmert) coo.v[3] = 0.0;
48
49 if (P->axisswap)
50 coo = proj_trans (P->axisswap, PJ_INV, coo);
51
52 /* Handle remaining possible input types */
53 switch (INPUT_UNITS) {
54 case PJ_IO_UNITS_WHATEVER:
55 return coo;
56
57 case PJ_IO_UNITS_DEGREES:
58 return coo;
59
60 /* de-scale and de-offset */
61 case PJ_IO_UNITS_CARTESIAN:
62 coo.xyz.x *= P->to_meter;
63 coo.xyz.y *= P->to_meter;
64 coo.xyz.z *= P->to_meter;
65 if (P->is_geocent) {
66 coo = proj_trans (P->cart, PJ_INV, coo);
67 }
68
69 return coo;
70
71 case PJ_IO_UNITS_PROJECTED:
72 case PJ_IO_UNITS_CLASSIC:
73 coo.xyz.x = P->to_meter * coo.xyz.x - P->x0;
74 coo.xyz.y = P->to_meter * coo.xyz.y - P->y0;
75 coo.xyz.z = P->vto_meter * coo.xyz.z - P->z0;
76 if (INPUT_UNITS==PJ_IO_UNITS_PROJECTED)
77 return coo;
78
79 /* Classic proj.4 functions expect plane coordinates in units of the semimajor axis */
80 /* Multiplying by ra, rather than dividing by a because the CalCOFI projection */
81 /* stomps on a and hence (apparently) depends on this to roundtrip correctly */
82 /* (CalCOFI avoids further scaling by stomping - but a better solution is possible) */
83 coo.xyz.x *= P->ra;
84 coo.xyz.y *= P->ra;
85 return coo;
86
87 case PJ_IO_UNITS_RADIANS:
88 coo.lpz.z = P->vto_meter * coo.lpz.z - P->z0;
89 break;
90 }
91
92 /* Should not happen, so we could return pj_coord_err here */
93 return coo;
94}
95
96

Callers 3

pj_invFunction · 0.85
pj_inv3dFunction · 0.85
pj_inv4dFunction · 0.85

Calls 3

proj_errno_setFunction · 0.85
proj_coord_errorFunction · 0.85
proj_transFunction · 0.85

Tested by

no test coverage detected