Hi Daniele,
Thanks for your answer. I understand it better now.
My first goal was to get these aggregation files actually published. I
can publish them by ignoring the runtime dimension, but of course, that
does not create actual support to query the dimension. That is a way
bigger task, that is going to involve a lot more work. I will discuss
how to move forward.
Niels
On 23-09-16 15:36, Daniele Romagnoli wrote:
Hi Niels,
Nuno fixed a bug in the NetCDF machinery a couple of days ago. (I have
merged that PR right now).
At the very beginning of the NetCDF development, we started to support
what was able with the available NetCDF version (I thin 2.x or
something similar... a very old one).
Therefore the NetCDF reader also internally deal with a binary index
containing Time,Zeta based indexes for quick slices retrieval.
https://github.com/geotools/geotools/blob/master/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/Slice2DIndex.java
Basically, re-using the table I have put in the JIRA, for each 2D pair
a global index may be defined:
global Index =(Time index, Zeta Index)
0 = (0,0)
1 = (0,1)
2 = (0,2)
3 = (1,0)
4 = (1,1)
5 = (1,2)
6 = (2,0)
7 = (2,1)
8 = (2,2)
9 = (3,0)
10= (3,1)
11= (3,2)
The NetCDF internal catalog is similar to the ImageMosaic GranuleCatalog.
For each 2D slice available, it stores a global index, as well as the
timestamp/date (it T dimension is available) and the elevation value
(it Z dimension is available) related to that imageIndex.
(https://github.com/geotools/geotools/blob/master/modules/plugin/coverage-multidim/coverage-api/src/main/java/org/geotools/coverage/io/catalog/CoverageSlicesCatalog.java)
So, when requesting a read operation on a specific time and specific
elevation, the reader performs a query on the CoverageSlicesCatalog to
get the related imageIndex.
Then the imageIndex is provided to the Slice2DIndexManager in order to
get the proper integer indexes to be used as values for the
Section/Ranges to be provided to the underlying UCAR reader.
https://github.com/geotools/geotools/blob/master/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/NetCDFImageReader.java#L584
https://github.com/geotools/geotools/blob/master/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/NetCDFImageReader.java#L651-L658
We also thought about revisiting/removing the binary index machinery
and include it somehow this information in the CoverageSlicesCatalog
itself and investigate on the indexing objects automatically generated
by the UCAR library. However we never had time or resources to work on
that.
Therefore, right now, an additional real dimension for runtime isn't
fully supported. (We somehow support different runtimes for different
NetCDF through ImageMosaic store). Not sure to remember from which
version UCAR started exposing it as a separate dimension.
You may want to extend the Slice2DIndex machinery or remove that in
favor of a better management of additional dimensions.
Does it helps?
Cheers,
Daniele
On Fri, Sep 23, 2016 at 2:34 PM, Niels Charlier <ni...@scitus.be
<mailto:ni...@scitus.be>> wrote:
Hello Daniele,
As you know, I am working on support for aggregation on runtime
dimension in netcdf. I am now looking into what needs to happen in
VariableAdaptor.
I am very new at netcdf, so I do not yet understand everything
that is happening to the fullest extent in this class.
I have found a way to make it work, basically by ignoring the
runtime dimension altogether. Apart from adding it as an ignored
dimension, I also had to take into account the possibility of
there being four dimensions of which one is the runtime dimension.
This is the commit:
https://github.com/NielsCharlier/geotools/commit/5278115bd43a77c6509881d59a582e69c8bbe182
<https://github.com/NielsCharlier/geotools/commit/5278115bd43a77c6509881d59a582e69c8bbe182>
The aggregation files now pass and I can publish the layers. But I
am still wondering if this is the right approach. Or should
perhaps the runtime dimension be treated in the same way as the t-
and z-dimensions? Or should there actually be logic in
VariableAdaptor for the R-dimension, similar to the logic that
exists for the Z- and T-dimensions?
What is your opinion? Thanks for your assistance.
Kind Regards,
Niels
--
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
==
Ing. Daniele Romagnoli
Senior Software Engineer
GeoSolutions S.A.S.
Via di Montramito 3/A
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
-------------------------------------------------------
*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate.
Il loro utilizzo è consentito esclusivamente al destinatario del
messaggio, per le finalità indicate nel messaggio stesso. Qualora
riceviate questo messaggio senza esserne il destinatario, Vi preghiamo
cortesemente di darcene notizia via e-mail e di procedere alla
distruzione del messaggio stesso, cancellandolo dal Vostro sistema.
Conservare il messaggio stesso, divulgarlo anche in parte,
distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità
diverse, costituisce comportamento contrario ai principi dettati dal
D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely
for the attention and use of the named addressee(s) and may be
confidential or proprietary in nature or covered by the provisions of
privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New
Data Protection Code).Any use not in accord with its purpose, any
disclosure, reproduction, copying, distribution, or either
dissemination, either whole or partial, is strictly forbidden except
previous formal approval of the named addressee(s). If you are not the
intended recipient, please contact immediately the sender by
telephone, fax or e-mail and delete the information in this message
that has been received in error. The sender does not give any warranty
or accept liability as the content, accuracy or completeness of sent
messages and accepts no responsibility for changes made after they
were sent or for other risks which arise as a result of e-mail
transmission, viruses, etc.
------------------------------------------------------------------------------
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel