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
Tupleinterface 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
MathTransformis 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
MathTransformis used that way, thetransform(DirectPosition)method makes little sense. It should betransform(Tuple)instead.Even when
MathTransformis really used for transforming coordinates, it ignores theCoordinateReferenceSystemassociated toDirectPosition. BecauseTuplehas no CRS, the use ofTupleinstead ofDirectPositioninMathTransformwould make that semantic clear.