Martin Desruisseaux created SIS-162:
---------------------------------------

             Summary: Provide an AbstractCRS.subCRS(int lower, int upper) method
                 Key: SIS-162
                 URL: https://issues.apache.org/jira/browse/SIS-162
             Project: Spatial Information Systems
          Issue Type: New Feature
          Components: Referencing
            Reporter: Martin Desruisseaux


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.

h3. 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:

{code:java}
public AbstractCRS subCRS(int lower, int upper, boolean 
allowCreateEllipsoidalHeight);
{code}




--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to