diff --git a/src/iso19111/datum.cpp b/src/iso19111/datum.cpp index 777addd22c..4e3b472768 100644 --- a/src/iso19111/datum.cpp +++ b/src/iso19111/datum.cpp @@ -1156,7 +1156,7 @@ bool Ellipsoid::_isEquivalentTo(const util::IComparable *other, } } else { - if (!otherEllipsoid->computeSemiMinorAxis()._isEquivalentTo( + if (!computeSemiMinorAxis()._isEquivalentTo( otherEllipsoid->computeSemiMinorAxis(), criterion)) { return false; } diff --git a/test/unit/test_datum.cpp b/test/unit/test_datum.cpp index 423438cca1..b06d5dbc19 100644 --- a/test/unit/test_datum.cpp +++ b/test/unit/test_datum.cpp @@ -124,6 +124,12 @@ TEST(datum, ellipsoid_from_inverse_flattening) { EXPECT_FALSE(Ellipsoid::WGS84->isEquivalentTo( Ellipsoid::GRS1980.get(), IComparable::Criterion::EQUIVALENT)); + + auto sphere = Ellipsoid::createSphere(PropertyMap(), Length(6378137)); + EXPECT_FALSE(Ellipsoid::WGS84->isEquivalentTo( + sphere.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_FALSE(sphere->isEquivalentTo(Ellipsoid::WGS84.get(), + IComparable::Criterion::EQUIVALENT)); } // ---------------------------------------------------------------------------