Details
-
Type:
New Feature
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 3.06, 3.07, 3.08, 3.09, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17
-
Fix Version/s: 3.18
-
Component/s: Referencing
-
Labels:None
Description
CRS.equalsIgnoreMetadata(IdentifiedObject, IdentifiedObject) returns true only if every numerical values declared in the projection parameters and ellipsoid are strictly identical for both Coordinate Reference System. We should allow a tolerance value, probably relative to the greatest numerical value found in both objects for a given parameter.
In order to implement that, we will need to add this tolerance argument to the AbstractIdentifiedObject.equals(IdentifiedObject, boolean) method. One tricky issue we will face is how to redefine the AbstractMathTransform.equivalent(MathTransform, boolean) method, keeping in mind that the later does not expect a tolerance as a double because of the non-linear nature of map projection parameters.
We should also take the tolerance threshold in account during IdentifiedObjectFinder operations, which will require minor adjustments in the SQL queries built by DirectEpsgFactory.getCodeCandidates(IdentifiedObject).
Issue Links
- depends upon
-
GEOTK-169
Metadata objects of different classes should be comparable
-
Closed by mistake.