GeoAPI provides a set of interfaces in programming languages (currently Java and Python) for geospatial applications. The GeoAPI interfaces closely follow OGC specifications, adaptated to match the expectations of programmers.
Consider adding a Tuple interface as a parent interface of DirectPosition. This interface does not exist in abstract specifications as far as I know, so it would be an extension.
The reason is because MathTransform is used not only for coordinate transformations. It can also be used for other kinds of transformations, for example:
Sample values of a raster band (this is called transfer function in ISO 19115).
Displacement vectors instead of direct positions.
This is not a GeoAPI interpretation; it was intended that way in OGC 01-009 and OGC 01-004. But when the MathTransform is used that way, the transform(DirectPosition) method makes little sense. It should be transform(Tuple) instead.
Even when MathTransform is really used for transforming coordinates, it ignores the CoordinateReferenceSystem associated to DirectPosition. Because Tuple has no CRS, the use of Tuple instead of DirectPosition in MathTransform would make that semantic clear.
Consider adding a
Tuple
interface as a parent interface ofDirectPosition
. This interface does not exist in abstract specifications as far as I know, so it would be an extension.The reason is because
MathTransform
is used not only for coordinate transformations. It can also be used for other kinds of transformations, for example:This is not a GeoAPI interpretation; it was intended that way in OGC 01-009 and OGC 01-004. But when the
MathTransform
is used that way, thetransform(DirectPosition)
method makes little sense. It should betransform(Tuple)
instead.Even when
MathTransform
is really used for transforming coordinates, it ignores theCoordinateReferenceSystem
associated toDirectPosition
. BecauseTuple
has no CRS, the use ofTuple
instead ofDirectPosition
inMathTransform
would make that semantic clear.