[Geoserver-devel] New community module: NetCDF output format

Hi,
whilst working with WCS 2.0 community module we had the need to support multidimensional output in order to return back a response composed of multiple coverages/slices (coming from requests involving TRIMMING on different dimensions).

Something like: “get this coverage in this bounding box having elevation in the range 10m - 500m and time in the range 2013-01-01/2013-01-02” (Trimming on lat, lon, elevation and time).

I have worked to store responses to NetCDF files by developing a NetCDFCoverageResponseDelegate which allows to write a NetCDF with all the slices resulting from the response.

In case a dimension is a range (such as a TIME domain having a startTime and an endTime for each slice or an Elevation domain having a bottomElevation and a topElevation for each slice), we use the cell boundaries syntax [1]

The available code for the netcdfoutput has been put on the geosolutions’s geoserver fork, on the netcdfoutput branch [2].

That branch also contains some improvements to the WCS 2.0 community module to deal with
multiple output. We have defined a GranuleStack which is basically a collection of GridCoverage2D resulting from a multiple-results request.

Right now, the module depends on the unsupported gt-netcdf module to inherit the proper netCDF java Unidata library (to avoid dependencies conflict). After the freeze, we may consider defining a global property for both geotools and geoserver, defining the NetCDF java version and use it from both the projects.

Feedbacks are welcome.
Cheers,
Daniele

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Ops… Referred links are disappeared :slight_smile:

Pasting them back:

···

On Mon, Aug 12, 2013 at 3:01 PM, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Hi,
whilst working with WCS 2.0 community module we had the need to support multidimensional output in order to return back a response composed of multiple coverages/slices (coming from requests involving TRIMMING on different dimensions).

Something like: “get this coverage in this bounding box having elevation in the range 10m - 500m and time in the range 2013-01-01/2013-01-02” (Trimming on lat, lon, elevation and time).

I have worked to store responses to NetCDF files by developing a NetCDFCoverageResponseDelegate which allows to write a NetCDF with all the slices resulting from the response.

In case a dimension is a range (such as a TIME domain having a startTime and an endTime for each slice or an Elevation domain having a bottomElevation and a topElevation for each slice), we use the cell boundaries syntax 1

The available code for the netcdfoutput has been put on the geosolutions’s geoserver fork, on the netcdfoutput branch 2.

That branch also contains some improvements to the WCS 2.0 community module to deal with
multiple output. We have defined a GranuleStack which is basically a collection of GridCoverage2D resulting from a multiple-results request.

Right now, the module depends on the unsupported gt-netcdf module to inherit the proper netCDF java Unidata library (to avoid dependencies conflict). After the freeze, we may consider defining a global property for both geotools and geoserver, defining the NetCDF java version and use it from both the projects.

Feedbacks are welcome.
Cheers,
Daniele

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Hi guys,
I have created a couple of pull requests (one for 2.4.x and one for trunk) for NetCDF output support.

https://github.com/geoserver/geoserver/pull/345
https://github.com/geoserver/geoserver/pull/344

I have also created pull request for the community module to include the NetCDF coverage support as downloadable item (Right now, it can be triggered within the geoserver war through a netcdf profile).
https://github.com/geoserver/geoserver/pull/346
https://github.com/geoserver/geoserver/pull/347

Cheers,

Daniele

···

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Mon, Aug 12, 2013 at 3:07 PM, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Ops… Referred links are disappeared :slight_smile:

Pasting them back:

On Mon, Aug 12, 2013 at 3:01 PM, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Hi,
whilst working with WCS 2.0 community module we had the need to support multidimensional output in order to return back a response composed of multiple coverages/slices (coming from requests involving TRIMMING on different dimensions).

Something like: “get this coverage in this bounding box having elevation in the range 10m - 500m and time in the range 2013-01-01/2013-01-02” (Trimming on lat, lon, elevation and time).

I have worked to store responses to NetCDF files by developing a NetCDFCoverageResponseDelegate which allows to write a NetCDF with all the slices resulting from the response.

In case a dimension is a range (such as a TIME domain having a startTime and an endTime for each slice or an Elevation domain having a bottomElevation and a topElevation for each slice), we use the cell boundaries syntax 1

The available code for the netcdfoutput has been put on the geosolutions’s geoserver fork, on the netcdfoutput branch 2.

That branch also contains some improvements to the WCS 2.0 community module to deal with
multiple output. We have defined a GranuleStack which is basically a collection of GridCoverage2D resulting from a multiple-results request.

Right now, the module depends on the unsupported gt-netcdf module to inherit the proper netCDF java Unidata library (to avoid dependencies conflict). After the freeze, we may consider defining a global property for both geotools and geoserver, defining the NetCDF java version and use it from both the projects.

Feedbacks are welcome.
Cheers,
Daniele

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Hello,

This is great and the timing is wonderful. I had made plans to meet today with John Caron (primary NetCDF-Java contributor) at Unidata to look at pursuing NetCDF support in GeoServer.

I haven’t tracked this list recently so I apologize for being out of the loop.

Is there anything that you’d like us to review?

Has there been any work in adding a NetCDF-Java datastore for vending NetCDF data via WMS/WCS?

Tom Kunicki
Software Engineer | Boundless
tkunicki@anonymised.com
917-460-7212
@boundless

···

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Mon, Aug 12, 2013 at 3:07 PM, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Ops… Referred links are disappeared :slight_smile:

Pasting them back:

On Mon, Aug 12, 2013 at 3:01 PM, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Hi,
whilst working with WCS 2.0 community module we had the need to support multidimensional output in order to return back a response composed of multiple coverages/slices (coming from requests involving TRIMMING on different dimensions).

Something like: “get this coverage in this bounding box having elevation in the range 10m - 500m and time in the range 2013-01-01/2013-01-02” (Trimming on lat, lon, elevation and time).

I have worked to store responses to NetCDF files by developing a NetCDFCoverageResponseDelegate which allows to write a NetCDF with all the slices resulting from the response.

In case a dimension is a range (such as a TIME domain having a startTime and an endTime for each slice or an Elevation domain having a bottomElevation and a topElevation for each slice), we use the cell boundaries syntax 1

The available code for the netcdfoutput has been put on the geosolutions’s geoserver fork, on the netcdfoutput branch 2.

That branch also contains some improvements to the WCS 2.0 community module to deal with
multiple output. We have defined a GranuleStack which is basically a collection of GridCoverage2D resulting from a multiple-results request.

Right now, the module depends on the unsupported gt-netcdf module to inherit the proper netCDF java Unidata library (to avoid dependencies conflict). After the freeze, we may consider defining a global property for both geotools and geoserver, defining the NetCDF java version and use it from both the projects.

Feedbacks are welcome.
Cheers,
Daniele

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Ciao Tom,
sorry for the delay of getting back to you, please, find my answer
inline below...

Regards,
Simone Giannecchini

Our support, Your Success! Visit http://opensdi.geo-solutions.it for
more information.

Ing. Simone Giannecchini
@simogeo
Founder/Director

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 333 8128928

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

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

On Fri, Oct 4, 2013 at 6:22 PM, Tom Kunicki <tkunicki@anonymised.com> wrote:

Hello,

This is great and the timing is wonderful. I had made plans to meet today
with John Caron (primary NetCDF-Java contributor) at Unidata to look at
pursuing NetCDF support in GeoServer.

I haven't tracked this list recently so I apologize for being out of the
loop.

Is there anything that you'd like us to review?

Has there been any work in adding a NetCDF-Java datastore for vending NetCDF
data via WMS/WCS?

We have recently added support for serving NetCDF-CF alike files (I
mean, netcdf files that loosely follows the CF convention).
This allows us to expose them via WMS and WCS.

If you check here
http://ares.boundlessgeo.com/geoserver/2.4.x/community-latest/

there are two plugins one for input netcdf one for spitting out netcdf
(mostly from wcs 2.0)

Here
http://geoserver.geo-solutions.it/downloads/training/windows/64/2.4/multidim/

you can find the workshop we prepared for the foss4g. Mind you,
it needs some polishing which we aiming to do before mid November,
but you can already go thoìrough it and get a better understanding
about the capabilities as well as limitations.

Let me know if this is enough to get started.

Tom Kunicki
Software Engineer | Boundless
tkunicki@anonymised.com
917-460-7212
@boundless

On Oct 2, 2013, at 9:32 AM, Daniele Romagnoli
<daniele.romagnoli@anonymised.com> wrote:

Hi guys,
I have created a couple of pull requests (one for 2.4.x and one for trunk)
for NetCDF output support.

https://github.com/geoserver/geoserver/pull/345
https://github.com/geoserver/geoserver/pull/344

I have also created pull request for the community module to include the
NetCDF coverage support as downloadable item (Right now, it can be triggered
within the geoserver war through a netcdf profile).
https://github.com/geoserver/geoserver/pull/346
https://github.com/geoserver/geoserver/pull/347

Cheers,
Daniele

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

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

On Mon, Aug 12, 2013 at 3:07 PM, Daniele Romagnoli
<daniele.romagnoli@anonymised.com> wrote:

Ops.. Referred links are disappeared :slight_smile:
Pasting them back:

On Mon, Aug 12, 2013 at 3:01 PM, Daniele Romagnoli
<daniele.romagnoli@anonymised.com> wrote:

Hi,
whilst working with WCS 2.0 community module we had the need to support
multidimensional output in order to return back a response composed of
multiple coverages/slices (coming from requests involving TRIMMING on
different dimensions).

Something like: "get this coverage in this bounding box having elevation
in the range 10m - 500m and time in the range 2013-01-01/2013-01-02"
(Trimming on lat, lon, elevation and time).

I have worked to store responses to NetCDF files by developing a
NetCDFCoverageResponseDelegate which allows to write a NetCDF with all the
slices resulting from the response.

In case a dimension is a range (such as a TIME domain having a startTime
and an endTime for each slice or an Elevation domain having a
bottomElevation and a topElevation for each slice), we use the cell
boundaries syntax [1]

The available code for the netcdfoutput has been put on the
geosolutions's geoserver fork, on the netcdfoutput branch [2].

That branch also contains some improvements to the WCS 2.0 community
module to deal with
multiple output. We have defined a GranuleStack which is basically a
collection of GridCoverage2D resulting from a multiple-results request.

Right now, the module depends on the unsupported gt-netcdf module to
inherit the proper netCDF java Unidata library (to avoid dependencies
conflict). After the freeze, we may consider defining a global property for
both geotools and geoserver, defining the NetCDF java version and use it
from both the projects.

Feedbacks are welcome.
Cheers,
Daniele

[1]:
http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.6/ch07.html#cell-boundaries
[2]: https://github.com/geosolutions-it/geoserver/tree/netcdfoutput

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Daniele Romagnoli
Senior Software Engineer

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

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

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel