Daniele, these dimensions are in effect a Z dimension. The data is sourced from GRIB2 but by the time it is ingested by ImageMosaic, it is equivalent to NetCDF (CDM API). Below I have included a small but self-consistent subset from the CDL generated with NetCDF-Java ToolsUI (current master 4.6.6-SNAPSHOT with rotated pole GRIB2 support). There are multiple files that vary in time only, and ImageMosaic aggregates them into a time series. I have included two variables as they appear in one file (granule):
Temperature_surface(time=1, rlat=834, rlon=953) works fine and I can use ImageMosaic to obtain a correct WCS time series. Panoply animations here: https://github.com/bencaradocdavies/geoserver/wiki/RAP-Native-Grid-ImageMosaic u-component_of_wind_sigma(time=1, sigma=50, rlat=834, rlon=953) appears to work but the output contains no sigma dimension. If I add a sigma dimension in indexer.xml, the ImageMosaic refuses to load. Without a sigma dimension in indexer.xml, the request appears to work, takes 50 times longer (as expected), but the output file contains no sigma dimension or coordinate variable and is the wrong size (same as Temperature_surface). In a nutshell: should elevation variables that are *internal* to each granule be indexed? Is this supported? If so, is indexer configuration required? Why would the granule index need to know? The indexer domain I tried unsuccessfully was this (no entry in the granule schema, ImageMosaic would not load): <domain name="sigma"> <attributes> <attribute>sigma</attribute> </attributes> </domain> All the examples that I have seen with an elevation or custom dimension have been where this dimension has a single value for each granule and varies across them. I have not seen an example with extra dimensions internal to each NetCDF file (granule). Kind regards, Ben. netcdf forecast { dimensions: rlat = 834; rlon = 953; time = 1; sigma = 50; variables: int RotatedLatLon32769_Projection; :grid_mapping_name = "rotated_latitude_longitude"; :grid_north_pole_latitude = 36.0; // double :grid_north_pole_longitude = 74.0; // double float rlat(rlat=834); :standard_name = "grid_latitude"; :units = "degrees"; float rlon(rlon=953); :standard_name = "grid_longitude"; :units = "degrees"; double reftime; :units = "Hour since 2016-04-25T22:00:00Z"; :standard_name = "forecast_reference_time"; :long_name = "GRIB reference time"; :calendar = "proleptic_gregorian"; double time(time=1); :units = "Hour since 2016-04-25T22:00:00Z"; :standard_name = "time"; :long_name = "GRIB forecast or observation time"; :calendar = "proleptic_gregorian"; float sigma(sigma=50); :units = "sigma"; :long_name = "Sigma level"; :positive = "down"; :Grib_level_type = 104; // int float Temperature_surface(time=1, rlat=834, rlon=953); :long_name = "Temperature @ Ground or water surface"; :units = "K"; :abbreviation = "TMP"; :missing_value = NaNf; // float :grid_mapping = "RotatedLatLon32769_Projection"; :coordinates = "reftime time rlat rlon "; :Grib_Variable_Id = "VAR_0-0-0_L1"; :Grib2_Parameter = 0, 0, 0; // int :Grib2_Parameter_Discipline = "Meteorological products"; :Grib2_Parameter_Category = "Temperature"; :Grib2_Parameter_Name = "Temperature"; :Grib2_Level_Type = "Ground or water surface"; :Grib2_Generating_Process_Type = "Forecast"; float u-component_of_wind_sigma(time=1, sigma=50, rlat=834, rlon=953); :long_name = "u-component of wind @ Sigma level"; :units = "m/s"; :abbreviation = "UGRD"; :missing_value = NaNf; // float :grid_mapping = "RotatedLatLon32769_Projection"; :coordinates = "reftime time sigma rlat rlon "; :Grib_Variable_Id = "VAR_0-2-2_L104"; :Grib2_Parameter = 0, 2, 2; // int :Grib2_Parameter_Discipline = "Meteorological products"; :Grib2_Parameter_Category = "Momentum"; :Grib2_Parameter_Name = "u-component of wind"; :Grib2_Level_Type = "Sigma level"; :Grib2_Generating_Process_Type = "Forecast"; // global attributes: :Originating_or_generating_Center = "The NOAA Forecast Systems Laboratory, Boulder, CO, United States"; :Originating_or_generating_Subcenter = "0"; :GRIB_table_version = "2,1"; :Type_of_generating_process = "Forecast"; :Analysis_or_forecast_generating_process_identifier_defined_by_originating_centre = "High-Resolution Rapid Refresh"; :file_format = "GRIB-2"; :Conventions = "CF-1.6"; :history = "Read using CDM IOSP GribCollection v3"; :featureType = "GRID"; } On 30/05/16 19:40, Daniele Romagnoli wrote: > I Ben. > I'm not sure to have fully understood your problem/question. > Can you give us an example of a ncdump output (a shorter form of the > interesting part) for 2 involved files? > > As far as I remember, the current NetCDF low level readers only deal with > inner dimension referencing to times and elevations/depths/heights/ > (everything is a Z). > > Please, let us know. > Cheers, > Daniele > > > > > On Sat, May 28, 2016 at 6:45 AM, Ben Caradoc-Davies <b...@transient.nz> > wrote: > >> I have several NetCDF files that comprise an ImageMosaic time series. >> This works fine for variables with only spatial dimensions, and I can >> get NetCDF output from WCS: >> >> foo(y, x) --ImageMosaic-NetCDF-out--> foo(t, y, x) >> >> However, when there is an extra dimension in the source NetCDF files >> (same values in all files), it is silently dropped: >> >> bar(s, y, x) --ImageMosaic-NetCDF-out--> bar(t, y, x) >> >> Not, as I had hoped: >> >> bar(s, y, x) --ImageMosaic-NetCDF-out--> bar(t, s, y, x) >> >> The documentation describes mosaicking over a custom dimension which >> varies between files and whose value is stored in the granule index. How >> to I deliver a variable with a dimension that is internal to each source >> NetCDF file? Is this supported? Is extra configuration is required? >> >> Kind regards, >> >> -- >> Ben Caradoc-Davies <b...@transient.nz> >> Director >> Transient Software Limited <http://transient.nz/> >> New Zealand >> >> >> ------------------------------------------------------------------------------ >> What NetFlow Analyzer can do for you? Monitors network bandwidth and >> traffic >> patterns at an interface-level. Reveals which users, apps, and protocols >> are >> consuming the most bandwidth. Provides multi-vendor support for NetFlow, >> J-Flow, sFlow and other flows. Make informed decisions using capacity >> planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e >> _______________________________________________ >> Geoserver-users mailing list >> Geoserver-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/geoserver-users >> > > > -- Ben Caradoc-Davies <b...@transient.nz> Director Transient Software Limited <http://transient.nz/> New Zealand ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e _______________________________________________ Geoserver-users mailing list Geoserver-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geoserver-users