Hello Thierry

Le 15/01/2020 à 14:53, Thierry Danard a écrit :

(…snip…) we have one error that appears on some of the tests:

InvalidGeodeticParameterException: Unit conversion from “DMS” to “°” is non-linear.

This test uses the Coordinate Operation EPSG::1473, which is marked as deprecated in EPSG database. The reason may be that this operation uses the Coordinate System EPSG::6402 ("Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: DMSH.") in its source CRS, which is itself marked as deprecated. The reason for this deprecation may be the unit of measurement of latitude/longitude values, which is DMSH in that particular coordinate system. DMSH is sexagesimal degrees encoded as floating point numbers. In this representation, 10°30'N is encoded as 10.3, not 10.5.

Sexagesimal degrees are difficult to use in a software. Those values have to be converted to decimal degrees (e.g. 10.3 → 10.5) before they can be used in computation. This conversion is non-linear since it has many discontinuities (e.g. value after 10.599999… is 11.0). Nevertheless Apache SIS can handle them to some extend. We handle them in map projection parameters because EPSG is still using sexagesimal degrees in those places, but we currently do not support them as coordinate system axis unit (i.e. the latitude/longitude values given to transform method).

In principle the lack of support of sexagesimal degrees in coordinate system axis should not be an issue since, to my knowledge, EPSG deprecated many years ago all Coordinate Systems, Coordinate Reference Systems and Coordinate Operations that were using them — maybe because of above-cited difficulty. New EPSG codes for the same CRS/operations but using decimal degrees should exist, but I have not checked what would be the replacement for EPSG::1473. It should be possible to find the replacement with a search in EPSG database, or alternatively by writing some code using Apache SIS.

If the support of those deprecated coordinate operations is needed, this is doable but would require some developments in SIS. Apache SIS handles conversions of axis units as affine transforms: this is convenient for converting all axes in a single operation and also allows efficient concatenation with other linear operations like axis swapping. But affine transforms can do only linear conversions, which is the reason for the error message that you got. If DMSH units in coordinate system axis is desired, it would have to be handled as a step separated from other unit conversions. Alternatively we could also ignore the DMSH units and handle them as if they were decimal degrees, but I'm not sure if it is the best thing to do.

    Regards,

        Martin


Reply via email to