[ 
https://issues.apache.org/jira/browse/SIS-359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Desruisseaux updated SIS-359:
------------------------------------
        Fix Version/s:     (was: 1.1)
                       1.2
    Affects Version/s: 1.1
                       1.0

> 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.6, 0.7, 0.8, 1.0, 1.1
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>            Priority: Minor
>             Fix For: 1.2
>
>
> 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
(v8.3.4#803005)

Reply via email to