aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/coordinateoperation.cpp15
-rw-r--r--test/unit/test_c_api.cpp8
-rw-r--r--test/unit/test_operation.cpp2
3 files changed, 16 insertions, 9 deletions
diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp
index 6ecd3838..bbe84698 100644
--- a/src/coordinateoperation.cpp
+++ b/src/coordinateoperation.cpp
@@ -9328,6 +9328,7 @@ struct FilterAndSort {
// Precompute a number of parameters for each operation that will be
// useful for the sorting.
std::map<CoordinateOperation *, PrecomputedOpCharacteristics> map;
+ const auto gridAvailabilityUse = context->getGridAvailabilityUse();
for (const auto &op : res) {
bool dummy = false;
auto extentOp = getExtent(op, true, dummy);
@@ -9360,14 +9361,20 @@ struct FilterAndSort {
bool gridsAvailable = true;
bool gridsKnown = true;
if (context->getAuthorityFactory() &&
- context->getGridAvailabilityUse() ==
- CoordinateOperationContext::GridAvailabilityUse::
- USE_FOR_SORTING) {
+ (gridAvailabilityUse ==
+ CoordinateOperationContext::GridAvailabilityUse::
+ USE_FOR_SORTING ||
+ gridAvailabilityUse ==
+ CoordinateOperationContext::GridAvailabilityUse::
+ IGNORE_GRID_AVAILABILITY)) {
const auto gridsNeeded = op->gridsNeeded(
context->getAuthorityFactory()->databaseContext());
for (const auto &gridDesc : gridsNeeded) {
hasGrids = true;
- if (!gridDesc.available) {
+ if (gridAvailabilityUse ==
+ CoordinateOperationContext::GridAvailabilityUse::
+ USE_FOR_SORTING &&
+ !gridDesc.available) {
gridsAvailable = false;
}
if (gridDesc.packageName.empty()) {
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp
index 855ebf36..7db38601 100644
--- a/test/unit/test_c_api.cpp
+++ b/test/unit/test_c_api.cpp
@@ -1145,7 +1145,7 @@ TEST_F(CApi, proj_obj_create_operations) {
ASSERT_NE(res, nullptr);
ObjListKeeper keeper_res(res);
- EXPECT_EQ(proj_obj_list_get_count(res), 7);
+ EXPECT_EQ(proj_obj_list_get_count(res), 8);
EXPECT_EQ(proj_obj_list_get(m_ctxt, res, -1), nullptr);
EXPECT_EQ(proj_obj_list_get(m_ctxt, res, proj_obj_list_get_count(res)),
@@ -1233,8 +1233,8 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) {
proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt);
ASSERT_NE(res, nullptr);
ObjListKeeper keeper_res(res);
- EXPECT_EQ(proj_obj_list_get_count(res), 6);
- auto op = proj_obj_list_get(m_ctxt, res, 0);
+ EXPECT_EQ(proj_obj_list_get_count(res), 7);
+ auto op = proj_obj_list_get(m_ctxt, res, 1);
ASSERT_NE(op, nullptr);
ObjectKeeper keeper_op(op);
@@ -1263,7 +1263,7 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) {
ASSERT_NE(res, nullptr);
ObjListKeeper keeper_res(res);
// includes 2 results from ESRI
- EXPECT_EQ(proj_obj_list_get_count(res), 4);
+ EXPECT_EQ(proj_obj_list_get_count(res), 5);
auto op = proj_obj_list_get(m_ctxt, res, 0);
ASSERT_NE(op, nullptr);
ObjectKeeper keeper_op(op);
diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp
index bb8221fd..057f1717 100644
--- a/test/unit/test_operation.cpp
+++ b/test/unit/test_operation.cpp
@@ -4306,7 +4306,7 @@ TEST(operation, geogCRS_to_geogCRS_context_ntv1_ntv2_ctable2) {
authFactory->createCoordinateReferenceSystem("4267"), // NAD27
authFactory->createCoordinateReferenceSystem("4269"), // NAD83
ctxt);
- ASSERT_EQ(list.size(), 6);
+ ASSERT_EQ(list.size(), 7);
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
"+proj=pipeline +step +proj=axisswap +order=2,1 +step "
"+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift "