aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/gie/peirce_q.gie342
-rw-r--r--test/unit/test_io.cpp75
2 files changed, 409 insertions, 8 deletions
diff --git a/test/gie/peirce_q.gie b/test/gie/peirce_q.gie
index 713d2581..777ce054 100644
--- a/test/gie/peirce_q.gie
+++ b/test/gie/peirce_q.gie
@@ -14,7 +14,7 @@
------------------------------------------------------------
------------------------------------------------------------
-operation +proj=peirce_q +R=6370997 +type=square
+operation +proj=peirce_q +R=6370997 +shape=square
tolerance 10 mm
------------------------------------------------------------
@@ -138,7 +138,7 @@ accept 170.3972098164 87.6222109978
expect -153172.25 215556.52
------------------------------------------------------------
- operation +proj=peirce_q +R=6370997 +type=diamond
+ operation +proj=peirce_q +R=6370997 +shape=diamond
tolerance 10 mm
------------------------------------------------------------
@@ -262,7 +262,7 @@ accept 170.3972098164 87.6222109978
expect 44112.34 260730.62
------------------------------------------------------------
-operation +proj=peirce_q +R=6370997 +type=horizontal
+operation +proj=peirce_q +R=6370997 +shape=horizontal
tolerance 10 mm
------------------------------------------------------------
@@ -386,7 +386,7 @@ accept 170.3972098164 87.6222109978
expect -11768191.87 260730.62
------------------------------------------------------------
- operation +proj=peirce_q +R=6370997 +type=horizontal +scrollx=0.75
+ operation +proj=peirce_q +R=6370997 +shape=horizontal +scrollx=0.75
tolerance 10 mm
------------------------------------------------------------
@@ -510,7 +510,7 @@ accept 170.3972098164 87.6222109978
expect -23580496.07 260730.62
------------------------------------------------------------
- operation +proj=peirce_q +R=6370997 +type=vertical
+ operation +proj=peirce_q +R=6370997 +shape=vertical
tolerance 10 mm
------------------------------------------------------------
@@ -634,7 +634,7 @@ accept 170.3972098164 87.6222109978
expect 44112.34 -11551573.59
------------------------------------------------------------
- operation +proj=peirce_q +R=6370997 +type=vertical +scrolly=-0.25
+ operation +proj=peirce_q +R=6370997 +shape=vertical +scrolly=-0.25
tolerance 10 mm
------------------------------------------------------------
@@ -758,7 +758,7 @@ accept 170.3972098164 87.6222109978
expect 44112.34 -23363877.80
------------------------------------------------------------
- operation +proj=peirce_q +R=6370997 +type=nhemisphere
+ operation +proj=peirce_q +R=6370997 +shape=nhemisphere
tolerance 10 mm
------------------------------------------------------------
@@ -882,7 +882,7 @@ accept 170.3972098164 87.6222109978
expect 44112.34 260730.62
------------------------------------------------------------
- operation +proj=peirce_q +R=6370997 +type=shemisphere
+ operation +proj=peirce_q +R=6370997 +shape=shemisphere
tolerance 10 mm
------------------------------------------------------------
@@ -1005,4 +1005,330 @@ expect failure errno coord_transfm_outside_projection_domain
accept 170.3972098164 87.6222109978
expect failure errno coord_transfm_outside_projection_domain
+# Test inverse
+------------------------------------------------------------
+operation +proj=peirce_q +shape=square
+------------------------------------------------------------
+
+#tolerance 1 mm
+# has to bump to this for i386
+tolerance 150 mm
+
+accept 0 90
+expect 0 0
+roundtrip 1
+
+accept 0 0
+expect 8361921.234827487729 -8361921.234827487729
+roundtrip 1
+
+accept 0 -90
+expect 16723842.303160080686 -16723842.303160080686
+#tolerance 2 mm
+roundtrip 1
+#tolerance 1 mm
+
+accept 0 45
+expect 3725360.212758612353 -3725360.212758612353
+roundtrip 1
+
+accept 0 -45
+expect 12998482.090401465073 -12998482.090401465073
+roundtrip 1
+
+accept 45 0
+tolerance 200 mm
+expect 16723842.564696932212 -0.095041956369
+roundtrip 1
+tolerance 150 mm
+
+accept -45 0
+expect 0 -16723842.469654975459
+#roundtrip 1
+
+accept 90 0
+expect 8361921.329869444482 8361921.329869444482
+roundtrip 1
+
+accept -90 0
+expect -8361921.234827487729 -8361921.234827487729
+roundtrip 1
+
+accept 135 0
+expect 0.095041956369 16723842.564696932212
+roundtrip 1
+
+accept -135 0
+expect -16723842.430287310854 -0.039367665210
+#roundtrip 1
+
+accept 179.99 0
+expect -8360808.039828131907 8363034.429826845415
+#roundtrip 1
+
+accept -179.99 0
+expect -8363034.429826845415 8360808.039828131907
+#roundtrip 1
+
+accept 45 45
+expect 5299570.257319082506 0
+roundtrip 1
+
+accept -45 45
+expect 0 -5299570.257319079712
+roundtrip 1
+
+accept 90 45
+expect 3725360.212758610491 3725360.212758610491
+roundtrip 1
+
+accept -90 45
+expect -3725360.212758613285 -3725360.212758613285
+roundtrip 1
+
+accept 135 45
+expect 0 5299570.257319079712
+roundtrip 1
+
+accept -135 45
+expect -5299570.257319079712 0
+#roundtrip 1
+
+accept 179.99 45
+expect -3724717.456456150394 3726002.863303491380
+roundtrip 1
+
+accept -179.99 45
+expect -3726002.863303492777 3724717.456456151791
+roundtrip 1
+
+accept 45 -45
+expect 16723842.303160080686 11424272.045840997249
+roundtrip 1
+
+accept -45 -45
+expect 11424272.045840999112 -16723842.303160080686
+roundtrip 1
+
+accept 90 -45
+expect 12998482.090401468799 12998482.090401468799
+roundtrip 1
+
+accept -90 -45
+expect -12998482.090401465073 -12998482.090401465073
+roundtrip 1
+
+accept 135 -45
+expect -11424272.045840999112 16723842.303160080686
+roundtrip 1
+
+accept -135 -45
+expect -16723842.303160080686 -11424272.045840999112
+roundtrip 1
+
+accept 179.99 -45
+expect -12997839.439856586978 12999124.846703927964
+roundtrip 1
+
+accept -179.99 -45
+expect -12999124.846703927964 12997839.439856585115
+roundtrip 1
+
+accept 45 -89.999
+expect 16723842.303160080686 16723730.983657168224
+#roundtrip 1
+
+accept -45 -89.999
+expect 16723730.983657168224 -16723842.303160080686
+#roundtrip 1
+
+accept 90 -89.999
+expect 16723763.588384689763 16723763.588384689763
+roundtrip 1
+
+accept -90 -89.999
+expect -16723763.588384689763 -16723763.588384689763
+roundtrip 1
+
+accept 135 -89.999
+expect -16723730.983657168224 16723842.303160080686
+#roundtrip 1
+
+accept -135 -89.999
+expect -16723842.303160080686 -16723730.983657168224
+#roundtrip 1
+
+accept 179.99 -89.999
+expect -16723763.588384689763 16723763.588384689763
+#roundtrip 1
+
+accept -179.99 -89.999
+expect -16723763.588384689763 16723763.588384689763
+#roundtrip 1
+
+# Test inverse
+------------------------------------------------------------
+operation +proj=peirce_q +shape=diamond
+------------------------------------------------------------
+
+#tolerance 1 mm
+# has to bump to this for i386
+tolerance 150 mm
+
+accept 0 90
+expect 0 0
+roundtrip 1
+
+accept 0 -90
+#tolerance 10 mm
+expect 0 -23651084.600117880851
+roundtrip 1
+#tolerance 1 mm
+
+accept 0 45
+expect 0 -5268454.937608348206
+roundtrip 1
+
+accept 0 -45
+expect 0 -18382629.662509534508
+roundtrip 1
+
+accept 45 0
+tolerance 200 mm
+expect 11825542.417788611725 -11825542.552198234946
+roundtrip 1
+tolerance 150 mm
+
+accept -45 0
+expect -11825542.417788611725 -11825542.417788611725
+roundtrip 1
+
+accept 90 0
+expect 11825542.552198234946 0.000000000000
+roundtrip 1
+
+accept -90 0
+expect -11825542.417788611725 0.000000000000
+#tolerance 20 mm
+#roundtrip 1
+#tolerance 1 mm
+
+accept 135 0
+expect 11825542.552198234946 11825542.417788611725
+roundtrip 1
+
+accept -135 0
+expect -11825542.417788611725 11825542.362114325166
+roundtrip 1
+
+accept 179.99 0
+expect 1574.295465656175 11825542.417788611725
+#tolerance 200 mm
+#roundtrip 1
+#tolerance 1 mm
+
+accept -179.99 0
+expect -1574.295465656175 11825542.417788611725
+#tolerance 30 mm
+#roundtrip 1
+#tolerance 1 mm
+
+accept 45 45
+expect 3747362.066324858926 -3747362.066324859392
+roundtrip 1
+
+accept -45 45
+expect -3747362.066324857529 -3747362.066324857995
+roundtrip 1
+
+accept 90 45
+expect 5268454.937608345412 0.000000000000
+#roundtrip 1
+
+accept -90 45
+expect -5268454.937608350068 0.000000000000
+#roundtrip 1
+
+accept 135 45
+expect 3747362.066324858926 3747362.066324857995
+roundtrip 1
+
+accept -135 45
+expect -3747362.066324857529 3747362.066324857529
+roundtrip 1
+
+accept 179.99 45
+expect 908.919898338959 5268454.862826444209
+roundtrip 1
+
+accept -179.99 45
+expect -908.919898338959 5268454.862826446071
+roundtrip 1
+
+accept 45 -45
+expect 19903722.533793020993 -3747362.066324859392
+roundtrip 1
+
+accept -45 -45
+expect -3747362.066324857529 -19903722.533793020993
+roundtrip 1
+
+accept 90 -45
+expect 18382629.662509534508 0.000000000000
+roundtrip 1
+
+accept -90 -45
+expect -18382629.662509530783 0.000000000000
+#tolerance 3 mm
+#roundtrip 1
+#tolerance 1 mm
+
+accept 135 -45
+expect 3747362.066324858926 19903722.533793020993
+roundtrip 1
+
+accept -135 -45
+expect -19903722.533793020993 3747362.066324857529
+roundtrip 1
+
+accept 179.99 -45
+expect 908.919898338959 18382629.737291436642
+#roundtrip 1
+
+accept -179.99 -45
+expect -908.919898338959 18382629.737291432917
+roundtrip 1
+
+accept 45 -89.999
+expect 23651005.885342493653 -78.714775386137
+#roundtrip 1
+
+accept -45 -89.999
+expect -78.714775386137 -23651005.885342493653
+#roundtrip 1
+
+accept 90 -89.999
+expect 23650973.280614964664 0.000000000000
+#roundtrip 1
+
+accept -90 -89.999
+expect -23650973.280614964664 0.000000000000
+#roundtrip 1
+
+accept 135 -89.999
+expect 78.714775386137 23651005.885342493653
+#roundtrip 1
+
+accept -135 -89.999
+expect -23651005.885342493653 78.714775386137
+#roundtrip 1
+
+accept 179.99 -89.999
+expect 0.000000000000 23650973.280614964664
+#roundtrip 1
+
+accept -179.99 -89.999
+expect 0.000000000000 23650973.280614964664
+#roundtrip 1
+
</gie-strict>
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index 5ffa461b..1c7fc812 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -6075,6 +6075,38 @@ static const struct {
{"False northing", 2},
}},
+ {"Peirce_Quincuncial",
+ {{"False_Easting", 1},
+ {"False_Northing", 2},
+ {"Central_Meridian", 3},
+ {"Scale_Factor", 4},
+ {"Latitude_Of_Origin", 5},
+ {"Option", 0}},
+ "Peirce Quincuncial (Square)",
+ {
+ {"Latitude of natural origin", 5},
+ {"Longitude of natural origin", 3},
+ {"Scale factor at natural origin", 4},
+ {"False easting", 1},
+ {"False northing", 2},
+ }},
+
+ {"Peirce_Quincuncial",
+ {{"False_Easting", 1},
+ {"False_Northing", 2},
+ {"Central_Meridian", 3},
+ {"Scale_Factor", 4},
+ {"Latitude_Of_Origin", 5},
+ {"Option", 1}},
+ "Peirce Quincuncial (Diamond)",
+ {
+ {"Latitude of natural origin", 5},
+ {"Longitude of natural origin", 3},
+ {"Scale factor at natural origin", 4},
+ {"False easting", 1},
+ {"False northing", 2},
+ }},
+
{
"Unknown_Method",
{{"False_Easting", 1},
@@ -9931,6 +9963,49 @@ TEST(io, projparse_ortho_spherical_on_sphere) {
// ---------------------------------------------------------------------------
+TEST(io, projparse_peirce_q) {
+ std::string input("+proj=peirce_q +shape=square +type=crs");
+ auto obj = PROJStringParser().createFromPROJString(input);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_EQ(
+ crs->exportToPROJString(
+ PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4)
+ .get()),
+ "+proj=peirce_q +shape=square +lat_0=90 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 "
+ "+datum=WGS84 +units=m +no_defs +type=crs");
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(io, projparse_peirce_q_invalid_lat_0) {
+ std::string input("+proj=peirce_q +lat_0=0 +shape=square +type=crs");
+ auto obj = PROJStringParser().createFromPROJString(input);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_THROW(
+ crs->exportToPROJString(
+ PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4)
+ .get()),
+ FormattingException);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(io, projparse_peirce_q_invalid_k_0) {
+ std::string input("+proj=peirce_q +k_0=0.5 +shape=square +type=crs");
+ auto obj = PROJStringParser().createFromPROJString(input);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_THROW(
+ crs->exportToPROJString(
+ PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4)
+ .get()),
+ FormattingException);
+}
+
+// ---------------------------------------------------------------------------
+
TEST(io, projparse_axisswap_unitconvert_longlat_proj) {
std::string input =
"+type=crs +proj=pipeline +step +proj=axisswap +order=2,1 +step "