diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common.cpp | 6 | ||||
| -rw-r--r-- | src/datum.cpp | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/common.cpp b/src/common.cpp index 2a9d17c7..bd690924 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -370,15 +370,17 @@ bool Measure::operator==(const Measure &other) PROJ_CONST_DEFN { /** \brief Returns whether an object is equivalent to another one. * @param other other object to compare to * @param criterion comparaison criterion. + * @param maxRelativeError Maximum relative error allowed. * @return true if objects are equivalent. */ bool Measure::_isEquivalentTo(const Measure &other, - util::IComparable::Criterion criterion) const { + util::IComparable::Criterion criterion, + double maxRelativeError) const { if (criterion == util::IComparable::Criterion::STRICT) { return operator==(other); } return std::fabs(getSIValue() - other.getSIValue()) <= - 1e-10 * std::fabs(getSIValue()); + maxRelativeError * std::fabs(getSIValue()); } // --------------------------------------------------------------------------- diff --git a/src/datum.cpp b/src/datum.cpp index 9f9fb4ec..975a870a 100644 --- a/src/datum.cpp +++ b/src/datum.cpp @@ -388,7 +388,10 @@ bool PrimeMeridian::_isEquivalentTo( !IdentifiedObject::_isEquivalentTo(other, criterion)) { return false; } - return longitude()._isEquivalentTo(otherPM->longitude(), criterion); + // In MapInfo, the Paris prime meridian is returned as 2.3372291666667 + // instead of the official value of 2.33722917, which is a relative + // error in the 1e-9 range. + return longitude()._isEquivalentTo(otherPM->longitude(), criterion, 1e-8); } //! @endcond |
