aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_operation.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-10-29 11:48:17 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-10-29 11:48:17 +0100
commit805b187edd4c9246629e9aeb062118f8c2de2dfe (patch)
tree16544587f5ea1341fa749f31c7ad97840677023b /test/unit/test_operation.cpp
parent2366a528aa1bce3f9ccfea5940154dc7c6c947be (diff)
downloadPROJ-805b187edd4c9246629e9aeb062118f8c2de2dfe.tar.gz
PROJ-805b187edd4c9246629e9aeb062118f8c2de2dfe.zip
Little tweaks in implicit 2D/3D geog conversions in compoundCRS to geogCRS transformations
Diffstat (limited to 'test/unit/test_operation.cpp')
-rw-r--r--test/unit/test_operation.cpp36
1 files changed, 25 insertions, 11 deletions
diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp
index 739d8ec3..79541d88 100644
--- a/test/unit/test_operation.cpp
+++ b/test/unit/test_operation.cpp
@@ -7129,6 +7129,11 @@ TEST(operation, compoundCRS_to_geogCRS_2D_promote_to_3D_context) {
auto authFactory =
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0);
+ ctxt->setSpatialCriterion(
+ CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION);
+ ctxt->setGridAvailabilityUse(
+ CoordinateOperationContext::GridAvailabilityUse::
+ IGNORE_GRID_AVAILABILITY);
// NAD83 + NAVD88 height
auto srcObj = createFromUserInput("EPSG:4269+5703",
authFactory->databaseContext(), false);
@@ -7136,17 +7141,26 @@ TEST(operation, compoundCRS_to_geogCRS_2D_promote_to_3D_context) {
ASSERT_TRUE(src != nullptr);
auto nnSrc = NN_NO_CHECK(src);
auto dst = authFactory->createCoordinateReferenceSystem("4269"); // NAD83
- dst = dst->promoteTo3D(std::string(), authFactory->databaseContext());
- {
- auto list = CoordinateOperationFactory::create()->createOperations(
- nnSrc, dst, ctxt);
- ASSERT_GE(list.size(), 8U);
- }
- {
- auto list = CoordinateOperationFactory::create()->createOperations(
- dst, nnSrc, ctxt);
- ASSERT_GE(list.size(), 8U);
- }
+
+ auto listCompoundToGeog2D =
+ CoordinateOperationFactory::create()->createOperations(nnSrc, dst,
+ ctxt);
+ // The checked value is not that important, but in case this changes,
+ // likely due to a EPSG upgrade, worth checking
+ ASSERT_EQ(listCompoundToGeog2D.size(), 469U);
+
+ auto listGeog2DToCompound =
+ CoordinateOperationFactory::create()->createOperations(dst, nnSrc,
+ ctxt);
+ ASSERT_EQ(listGeog2DToCompound.size(), listCompoundToGeog2D.size());
+
+ auto listCompoundToGeog3D =
+ CoordinateOperationFactory::create()->createOperations(
+ nnSrc,
+ dst->promoteTo3D(std::string(), authFactory->databaseContext()),
+ ctxt);
+ // It includes a trailing ballpart transformation
+ ASSERT_EQ(listCompoundToGeog3D.size(), listCompoundToGeog2D.size() + 1);
}
// ---------------------------------------------------------------------------