Details
-
Task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
0.7, 0.8, 1.0, 1.1
-
None
Description
Calls to CRS.findOperation(sourceCRS, targetCRS, areaOfInterest) currently cache the CoordinateOperation only when areaOfInterest is null. It is hard to implement a general cache mechanism for all non-null area of interest, but we can implement an intermediate solution:
- When EPSGFactory or CoordinateOperationRegistry detects that there is only one CoordinateOperation for given source and target CRS, it automatically adds some sentinel value in PositionalAccuracy metadata. It could be some internal sub-class.
- When DefaultCoordinateOperationFactory sees above sentinel values, it allows caching even if areaOfInterest is non-null. Otherwise caching is enabled only if areaOfInterest is null, as today.
- After this optimization has been implemented, we should search for occurrences of factory() in Envelopes and replace them by calls to Envelope.findOperation(Envelope, Envelope).
We could also take this opportunity for adding an information message if we detected may transformations for the same pair of CRS. Something like "Note: many transformations are defined for this pair of referencing systems in different domains of validity."