Details
-
New Feature
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
We need some way to get the components of a spatio-temporal CRS over a range of indices. In Geotk we were used to provide a static CRS.getSubCRS(…) method. For Apache SIS, we should consider a member method in the AbstractCRS class instead. Reasons are:
- Would allow caching (by generalizing the existing derived private map).
- Implementation depends on the coordinate system and CRS type.
In particular, getting the two-dimensional (latitude, longitude) part of a three-dimensional GeographicCRS is a common operation. It would be nice if SIS were able to find the instance declared in EPSG database. However since it would be a relatively costly operation, this would justify caching the result.
Implementation plan
We may need to start the work in the coordinate system package:
- Sub CS of a CartesianCS can be an other CartesianCS.
- Sub CS of a SphericalCS or a CylindricalCS can be a PolarCS.
In the CRS package, the CompoundCRS, GeographicCRS and EngineeringCRS among others would probably have their custom subCRS method implementation. The GeographicCRS special case handled by CRS.getHorizontalComponent(…) and CRS.getVerticalComponent(…) would need to move in some SIS internal package in order to allow DefaultGeographicCRS to share it. The same warning about ellipsoidal height would apply, so the actual method signature may be:
public AbstractCRS subCRS(int lower, int upper, boolean allowCreateEllipsoidalHeight);