aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/4D_api.cpp5
-rw-r--r--test/unit/gie_self_tests.cpp11
2 files changed, 12 insertions, 4 deletions
diff --git a/src/4D_api.cpp b/src/4D_api.cpp
index 97aadb12..15ac1e8a 100644
--- a/src/4D_api.cpp
+++ b/src/4D_api.cpp
@@ -379,10 +379,7 @@ size_t proj_trans_generic (
coord.xyzt.z = *z;
coord.xyzt.t = *t;
- if (PJ_FWD==direction)
- coord = pj_fwd4d (coord, P);
- else
- coord = pj_inv4d (coord, P);
+ coord = proj_trans(P, direction, coord);
/* in all full length cases, we overwrite the input with the output, */
/* and step on to the next element. */
diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp
index 2d298ea3..14bb2241 100644
--- a/test/unit/gie_self_tests.cpp
+++ b/test/unit/gie_self_tests.cpp
@@ -694,6 +694,17 @@ TEST(gie, proj_create_crs_to_crs_PULKOVO42_ETRS89) {
EXPECT_NEAR(c.xy.x, 45, 1e-9);
EXPECT_NEAR(c.xy.y, 25, 1e-9);
+ c.xyz.x = 45; // Lat
+ c.xyz.y = 25; // Long
+ c.xyz.z = 0;
+ proj_trans_generic (P, PJ_FWD,
+ &(c.xyz.x), sizeof(double), 1,
+ &(c.xyz.y), sizeof(double), 1,
+ &(c.xyz.z), sizeof(double), 1,
+ nullptr, 0, 0);
+ EXPECT_NEAR(c.xy.x, 44.999701238, 1e-9);
+ EXPECT_NEAR(c.xy.y, 24.998474948, 1e-9);
+
// Poland
c.xyz.x = 52; // Lat
c.xyz.y = 20; // Long