Re: [galeon] how to handle "slicing" through n-D cubes?

NOTE: The galeon mailing list is no longer active. The list archives are made available for historical reasons.

Hello all:

In the CDM, which is more or less an implementation of the CF data model, we use the term 
"slice" to indicate that you want to reduce the dimensionality of the data variable, and 
"section" to indicate that the result is a subset with the same dimensionality, even if 
one or more dimensions have length 1. this sounds consistent with what you are proposing, AFAICT.

CF itself does not specify an API for subsetting, rather its an encoding standard. So if 
a WCS server was returning netCDF-CF in response to a WCS request, it would need to use a 
CF encoding consistent with WCS semantics. So if the "x/t cut from an x/y/z/t 
cube" was meant to indicate a reduced dimensionality, I might guess that the data 
variable would be returned as 2D, eg in netcdf CDL:

(1)

 float var(t, x);
   var:coordinates = "time lon";

 float time(t);
 float lon(x);

I think Steve is indicating (and I agree with him) that a better encoding would 
be:

(2)

 float var(t, x);
   var:coordinates = "time level lat lon";

 float time(t);
 float lon(x);
 float level;
 float lat;

where the value of the scalar coordinates level and lat are the ones specified 
in the slice.

The clients that we write would also be happy with:

(3)

 float var(t, z, y, x);
   var:coordinates = "time level lat lon";

 float time(t);
 float lon(x);
 float level(z);
 float lat(y);

where z and y are dimensions of length 1. But aesthetically I prefer (2).
From a data model, (2) and (3) are equivalent, and different from (1). So even if a "slice" WCS 
request required returning a 2D data array, it seems to me that the "correct" CRS is 4D, or at 
least a "2D section (manifold) of the 4D domain".

Im guessing Ive replicated at least some of your previous discussion, but I 
thought it would be interesting to see what it looks like in CDL.


John



Wenli Yang wrote:
Peter,

As I mentioned in yesterday's meeting.  If core requires slicing, it would also 
require offering of a CRS different from the offered coverage's original (or 
native/etc) CRS.  Other than that, I think slicing is a good function, i.e., we 
can say an output coverage being 2D (x,Y) instead of 4D (1,1,X,Y).  Of course, 
information on the locations of the trimmed 2Ds should still be provided 
somewhere in the coverage.

Wenli



------------------------------------------------------------------------

you're right, Max. I missed to add that, thanks for clarifying.
What I wanted to say is that with the mimics chosen we can support both use cases.
-Peter



Max Martinez wrote:

I read his response differently. His description sounds to me that the equivalent behavior in a WCS would be to trim with a coincident upper and lower bound and return a coverage with the same dimensionality and CRS just a whole bunch of data trimmed out of it. They wouldn’t use a slice.

Perhaps I’m misunderstanding his response.

------------------------------------------------------------------------

*From:* Peter Baumann [mailto:p.baumann@xxxxxxxxxxxxxxxxxxxx]
*Sent:* Thursday, June 17, 2010 10:36 AM
*To:* Steve Hankin
*Cc:* Unidata GALEON; Steven Keens; Max Martinez
*Subject:* Re: [galeon] how to handle "slicing" through n-D cubes?

Steve,

thanks again for explaining to me how your community handles the case.
In the end we agreed to go as follows in WCS:
- the slicing operation defines which axes remain in the output coverage
- the server is obliged to provide some fitting CRS for the resulting axis constellation (essentially, this only says: return a consistent coverage)

This should give degree of freedeom to servers to respond with something appropriate for their situation, and it allows us to keep all the intricate CRS issues out of the core.

>From what I understand when reading the page you list below this is
compatible
with our approach chosen.

So thanks again, that helped.

-Peter



Steve Hankin wrote:



Peter Baumann wrote:

Steve-

thanks a lot for taking time on this. Some questions inline:

Steve Hankin wrote:

Hi Peter,
I'll start the ball on this with a short answer. CF datasets are self-describing. They do not reference a controlled vocabulary of coordinate reference systems external to the file. Thus a CF subset of a valid CF dataset is always another valid CF dataset and its geo-location is self-describing -- even if it has fewer dimensions than the parent file. The question you are asking does not really apply to CF datasets "in their native habitat". I see. Does this inline description change during subsetting? I.e., when you are building 2-D slices (just as an example) is elevation and time information removed from the embedded CRS information? (They may well remain somewhere in a metadata description, this is not our concern for now.)

If we imagine extracting (say) a single 2D slice in the XT (lon-time) plane from a 4D XYZT dataset, then the Y and Z axes are conceptually reduced to single points ("projected"). A well constructed CF dataset will include single point axes (*) for Y and Z, just as it includes multi-point axes for X and T. We sometimes speak of the 2D slice as being a *degenerate* 4D dataset, since it still possesses the full 4D coordinate machinery. The way in which the slice is embedded into the larger coordinate system remains self-describing.

In a similar manner, an in situ observation of a vertical profile or of a time series may simply be regarded as a degenerate 4D dataset. With this outlook broad classes of data may legitimately be thought of as "gridded" (though using that term would lead to confusion in some circles). This is part of the power of the netCDF data model -- that it unifies the representation and semantics of so many different types of features.

(*) footnote to say that there is a also a short-hand way to represent scalar axes in CF ... but using it doesn't alter the self-describing nature of the file.

     - Steve



Echoing your question back: CF 1.2 (??) added a section on "5.6. Grid Mappings and Projections Horizontal Coordinate Reference Systems", which is specifically to handle the associations between CF datasets and the corresponding crs. (http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.4/cf-conventions.html#grid-mappings-and-projections). Should this mapping be refined to address solutions to 4D (n-D) subsetting that you have developed in WCS? Interesting to read this, it helps us to understand your approach. Actually, we are not yet in a position to answer this question, currently we are trying to disentangle issues of slicing functionality and CRS handling (the former we would like to have in the core, the latter in an extension). We will gladly come back for this reverse discussion once we have something in our hands.

-Peter



    - Steve
============================= Peter Baumann wrote:
Hi community,
in the WCS group we are wondering how you deal with subsetting operations in n-D data spaces - obviously a result with less dimensions than the original cube needs to get a different CRS associated. How do you find the appropriate result CRS, for example, for a x/t cut from an x/y/z/t cube? thanks in advance for any bits of wisdom,
Peter


--
Dr. Peter Baumann
 - Professor of Computer Science, Jacobs University Bremen
   www.faculty.jacobs-university.de/pbaumann 
<http://www.faculty.jacobs-university.de/pbaumann>
   mail: p.baumann@xxxxxxxxxxxxxxxxxxxx <mailto:p.baumann@xxxxxxxxxxxxxxxxxxxx>
   tel: +49-421-200-3178, fax: +49-421-200-493178
 - Executive Director, rasdaman GmbH Bremen (HRB 147737)
   www.rasdaman.com <http://www.rasdaman.com>, mail: baumann@xxxxxxxxxxxx 
<mailto:baumann@xxxxxxxxxxxx>
   tel: 0800-rasdaman, fax: 0800-rasdafax, mobile: +49-173-5837882
"Si forte in alienas manus oberraverit hec peregrina epistola incertis ventis 
dimissa, sed Deo commendata, precamur ut ei reddatur cui soli destinata, nec preripiat 
quisquam non sibi parata." (mail disclaimer, AD 10xx)


--
Dr. Peter Baumann
 - Professor of Computer Science, Jacobs University Bremen
   www.faculty.jacobs-university.de/pbaumann 
<http://www.faculty.jacobs-university.de/pbaumann>
   mail: p.baumann@xxxxxxxxxxxxxxxxxxxx <mailto:p.baumann@xxxxxxxxxxxxxxxxxxxx>
   tel: +49-421-200-3178, fax: +49-421-200-493178
 - Executive Director, rasdaman GmbH Bremen (HRB 147737)
   www.rasdaman.com <http://www.rasdaman.com>, mail: baumann@xxxxxxxxxxxx 
<mailto:baumann@xxxxxxxxxxxx>
   tel: 0800-rasdaman, fax: 0800-rasdafax, mobile: +49-173-5837882
"Si forte in alienas manus oberraverit hec peregrina epistola incertis ventis 
dimissa, sed Deo commendata, precamur ut ei reddatur cui soli destinata, nec preripiat 
quisquam non sibi parata." (mail disclaimer, AD 10xx)

--
Dr. Peter Baumann
 - Professor of Computer Science, Jacobs University Bremen
   www.faculty.jacobs-university.de/pbaumann
   mail: p.baumann@xxxxxxxxxxxxxxxxxxxx
   tel: +49-421-200-3178, fax: +49-421-200-493178
 - Executive Director, rasdaman GmbH Bremen (HRB 147737)
   www.rasdaman.com, mail: baumann@xxxxxxxxxxxx
   tel: 0800-rasdaman, fax: 0800-rasdafax, mobile: +49-173-5837882
"Si forte in alienas manus oberraverit hec peregrina epistola incertis ventis 
dimissa, sed Deo commendata, precamur ut ei reddatur cui soli destinata, nec preripiat 
quisquam non sibi parata." (mail disclaimer, AD 10xx)




------------------------------------------------------------------------

_______________________________________________
galeon mailing list
galeon@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/

------------------------------------------------------------------------

_______________________________________________
galeon mailing list
galeon@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/



  • 2010 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the galeon archives: