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