aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/crs.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-11-23 16:54:48 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-11-23 16:56:44 +0100
commitb503c2e5ae4b90da5e390be929ab5a37ab534232 (patch)
tree50e8944b6e1eefe5d6cf1f4187dc26cb6236264e /src/iso19111/crs.cpp
parent765faba8984aa1e5f2a91853d18f0453e7bed105 (diff)
downloadPROJ-b503c2e5ae4b90da5e390be929ab5a37ab534232.tar.gz
PROJ-b503c2e5ae4b90da5e390be929ab5a37ab534232.zip
GeographicCRS::_isEquivalentTo(EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS): make it work when comparing easting,northing,up and northing,easting,up
Diffstat (limited to 'src/iso19111/crs.cpp')
-rw-r--r--src/iso19111/crs.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/iso19111/crs.cpp b/src/iso19111/crs.cpp
index de882105..5d2c6d7b 100644
--- a/src/iso19111/crs.cpp
+++ b/src/iso19111/crs.cpp
@@ -2522,6 +2522,27 @@ bool GeographicCRS::_isEquivalentTo(
->GeodeticCRS::_isEquivalentToNoTypeCheck(other, standardCriterion,
dbContext);
}
+ if (axisOrder ==
+ cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH_HEIGHT_UP ||
+ axisOrder ==
+ cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST_HEIGHT_UP) {
+ const auto &angularUnit = coordinateSystem()->axisList()[0]->unit();
+ const auto &linearUnit = coordinateSystem()->axisList()[2]->unit();
+ return GeographicCRS::create(
+ util::PropertyMap().set(common::IdentifiedObject::NAME_KEY,
+ nameStr()),
+ datum(), datumEnsemble(),
+ axisOrder == cs::EllipsoidalCS::AxisOrder::
+ LONG_EAST_LAT_NORTH_HEIGHT_UP
+ ? cs::EllipsoidalCS::
+ createLatitudeLongitudeEllipsoidalHeight(
+ angularUnit, linearUnit)
+ : cs::EllipsoidalCS::
+ createLongitudeLatitudeEllipsoidalHeight(
+ angularUnit, linearUnit))
+ ->GeodeticCRS::_isEquivalentToNoTypeCheck(other, standardCriterion,
+ dbContext);
+ }
return false;
}
//! @endcond