aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/iso19111/coordinateoperation.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp
index cc2ee3b1..575b0350 100644
--- a/src/iso19111/coordinateoperation.cpp
+++ b/src/iso19111/coordinateoperation.cpp
@@ -11447,7 +11447,14 @@ static std::vector<CoordinateOperationNNPtr>
applyInverse(const std::vector<CoordinateOperationNNPtr> &list) {
auto res = list;
for (auto &op : res) {
+#ifdef DEBUG
+ auto opNew = op->inverse();
+ assert(opNew->targetCRS()->isEquivalentTo(op->sourceCRS().get()));
+ assert(opNew->sourceCRS()->isEquivalentTo(op->targetCRS().get()));
+ op = opNew;
+#else
op = op->inverse();
+#endif
}
return res;
}
@@ -12372,7 +12379,13 @@ void CoordinateOperationFactory::Private::setCRSs(
auto invCO = dynamic_cast<InverseCoordinateOperation *>(co);
if (invCO) {
- setCRSs(invCO->forwardOperation().get(), targetCRS, sourceCRS);
+ invCO->forwardOperation()->setCRSs(targetCRS, sourceCRS, nullptr);
+ }
+
+ auto transf = dynamic_cast<Transformation *>(co);
+ if (transf) {
+ transf->inverseAsTransformation()->setCRSs(targetCRS, sourceCRS,
+ nullptr);
}
auto concat = dynamic_cast<ConcatenatedOperation *>(co);