Martin Desruisseaux created SIS-359:
---------------------------------------

             Summary: Support coordinate transformations between CRS having 
duplicated axis orientations
                 Key: SIS-359
                 URL: https://issues.apache.org/jira/browse/SIS-359
             Project: Spatial Information Systems
          Issue Type: Improvement
          Components: Referencing
    Affects Versions: 0.7, 0.6
            Reporter: Martin Desruisseaux
            Assignee: Martin Desruisseaux
            Priority: Minor


Coordinate systems are usually not allowed to have two axes with the same 
orientation. For example it is considered an error to have two axes oriented 
toward East. But there is at least two exceptions to this rule:

* {{AxisDirection.OTHER}}: there is actually no way to know which direction it 
is, so two {{OTHER}} orientations may be actually different directions.
* {{AxisDirection.FUTURE}}: meteorological data can have two time axes. For 
more information, see [OGC Best Practice for using Web Map Services (WMS) with 
Time-Dependent or Elevation-Dependent 
Data|http://www.opengis.net/doc/bp/wms-tnz/1.0] (OGC 12-111r1).

Currently, attempt to transform two CRS having duplicated axis orientation 
produces an exception like below:

{noformat}
org.opengis.util.FactoryException: Ne peut pas créer l’objet géodétique pour « 
CompoundCRS[“grib-lonlat-crs+Java…”] → CompoundCRS[“grib-lonlat-crs+Java…”] ».
    at 
org.apache.sis.referencing.operation.CoordinateOperationFinder.createOperation(CoordinateOperationFinder.java:206)
    at 
org.apache.sis.referencing.operation.DefaultCoordinateOperationFactory.createOperation(DefaultCoordinateOperationFactory.java:750)
    at org.apache.sis.referencing.CRS.findOperation(CRS.java:610)
    ... 22 more
    Caused by: java.lang.IllegalArgumentException: Les directions d’axes Other 
et Other sont colinéaires.
    at 
org.apache.sis.referencing.operation.matrix.Matrices.createTransform(Matrices.java:267)
    at 
org.apache.sis.referencing.operation.matrix.Matrices.createTransform(Matrices.java:440)
    at 
org.apache.sis.referencing.cs.CoordinateSystems.swapAndScaleAxes(CoordinateSystems.java:280)
    at 
org.apache.sis.referencing.operation.CoordinateOperationFinder.createOperation(CoordinateOperationFinder.java:204)
    ... 26 more
{noformat}

One possible approach may be to remember the indirect association between axes 
and CRS during the computation performed by {{Matrices.createTransform(…)}}. If 
two axes have the same axis direction but we can still distinguish the axes by 
the enclosing CRS instance, then we can avoid throwing the exception.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to