For future reference, here are the config files that demonstrate the problem I encountered. They are from the GeoSolutions multidimension training. First I have included the original versions, which function fine. They are followed by the versions where I changed the schema for elevation to match the datatype in the NetCDF files. The second version fails to return NetCDF files when I make a WCS request like the one included in my previous mail. The resulting error is also in my previous mail.
-Paddy McCarthy.
Header from one of the polyphemus NetCDF files:
netcdf polyphemus_20130301 {
dimensions:
time = UNLIMITED ; // (24 currently)
z = 14 ;
lat = 96 ;
lon = 80 ;
variables:
float time(time) ;
time:units = “hours since 2013-03-01 0:00:00” ;
float z(z) ;
z:long_name = “height” ;
z:units = “meters” ;
float lat(lat) ;
lat:long_name = “latitudes” ;
lat:units = “degrees_north” ;
float lon(lon) ;
lon:long_name = “longitudes” ;
lon:units = “degrees_east” ;
float O3(time, z, lat, lon) ;
O3:long_name = “Ozone concentration” ;
O3:standard_name = “mass_concentration_of_ozone_in_air” ;
O3:unit = “microgram/m3” ;
O3:missing_value = NaN ;
float NO2(time, z, lat, lon) ;
NO2:long_name = “NO2 concentration” ;
NO2:standard_name = “mass_concentration_of_nitrogen_dioxide_in_air” ;
NO2:unit = “microgram/m3” ;
NO2:missing_value = NaN ;
float V(time, z, lat, lon) ;
V:long_name = “Meridional wind” ;
V:unit = “m/s” ;
V:missing_value = NaN ;
}
indexer.xml - Original Version:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
time
elevation
fileDate
updated
the_geom:Polygon,location:String,imageindex:Integer,time:java.util.Date,elevation:Double,fileDate:java.util.Date,updated:java.util.Date
NO2
[0-9]{8}
TimestampFileNameExtractorSPI
fileDate
MODIFY_TIME
RuntimeExtractorSPI
updated
polyphemus-test.xml - Original Version:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
the_geom:Polygon,imageindex:Integer,time:java.util.Date,elevation:Double
NO2
**indexer.xml - Modified Version (yields "**illegal dataType: String not supported in netcdf-3" exception on WCS request):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
time
elevation
fileDate
updated
the_geom:Polygon,location:String,imageindex:Integer,time:java.util.Date,elevation:Float,fileDate:java.util.Date,updated:java.util.Date
NO2
NO22
[0-9]{8}
TimestampFileNameExtractorSPI
fileDate
MODIFY_TIME
RuntimeExtractorSPI
updated
polyphemus-test.xml - **Modified Version (yields "**illegal dataType: String not supported in netcdf-3" exception on WCS request):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
the_geom:Polygon,imageindex:Integer,time:java.util.Date,elevation:Float
NO2
NO22
···
On Mon, Apr 18, 2016 at 12:26 PM, Padhrig Mccarthy <paddy@anonymised.com> wrote:
Hi Daniele-
Will do.
I followed the polyphemus example from the multidim training, which also uses a Double in the config. The only difference is that I had to name my attribute “z” in the indexer.xml for some reason, where the polyphemus multidim training somehow uses “elevation”. I could not get that to work with my dataset.
I just changed indexer.xml and polyphemus-test.xml Double to Float in the polyphemus multidim training and it produces the same error when I try to access netcdf and netcdf4. WMS works fine. This is a well-known example and might simplify replicating the problem.
Here is my request url:
http://nnew-vm9:8089/geoserver/RAL_WCS/wcs?service=WCS&version=2.0.0&request=GetCoverage&coverageId=RAL_WCS:NO2&subset=time(&subset=elevation(“10”)&format=application/x-netcdf4
Simpler requests cause the same response, but take a lot longer.
And response:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ows:ExceptionReport xmlns:xs=“http://www.w3.org/2001/XMLSchema” xmlns:ows=“http://www.opengis.net/ows/2.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” version=“2.0.0” xsi:schemaLocation=“http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd”>
java.lang.IllegalArgumentException: illegal dataType: String not supported in netcdf-3 illegal dataType: String not supported in netcdf-3 []
-Paddy.
On Fri, Apr 15, 2016 at 11:44 AM, Daniele Romagnoli <daniele.romagnoli@anonymised.com07…> wrote:
Hi Paddy,
if you can open a JIRA containing sample data, config files and requests needed to replicate the issue, we could investigate on that and check the problem through a debug session.
I’m wondering if the z dimension has been configured/recognized as elevation / custom dimension.
Please, let us know.
Cheers,
Daniele
On Fri, Apr 15, 2016 at 5:19 PM, Padhrig Mccarthy <paddy@anonymised.com> wrote:
Hi-
This is report of a recent discovery I made after repeatedly banging my head against the wall, so I thought I should write it up here to help future users. Basically, you MUST define your elevation dimension as a Double in your schema (using ImageMosaic indexer.xml), even if your NetCDF files define the z dimension as a float. Otherwise you get exceptions when making WCS requests that say “illegal dataType: String not supported in netcdf-3”
I was getting the following error when accessing my NetCDF-based ImageMosaic with a request (to a private host) such as this:
http://nnew-vm9:8089/geoserver/RAL_WCS/wcs?service=WCS&version=2.0.0&request=GetCoverage&coverageId=RAL_WCS:CAT_GPML_GTG&subset=time(&subset=elevation(“13.411”)&subset=LEADSECONDS(“0”)&format=application/x-netcdf4
(LEADSECONDS is a custom variable I’ve defined for our ImageMosaic)
Error returned in browser (similar in GeoServer logs):
<ows:Exception exceptionCode=“NoApplicableCode”>
ows:ExceptionText
java.lang.IllegalArgumentException: illegal dataType: String not supported in netcdf-3 illegal dataType: String not supported in netcdf-3
</ows:ExceptionText>
</ows:Exception>
FYI, a the equivalent WMS request worked fine:
http://nnew-vm9:8089/geoserver/RAL_WCS/wms?service=WMS&version=1.1.0&request=GetMap&layers=RAL_WCS:CAT_GPML_GTG&styles=gtg&bbox=-120.0,22.0,-60.0,50.0&width=768&height=573&srs=EPSG:4326&format=image/png&time=2016-04-14T02:00:00.000Z&elevation=13.411&DIM_LEADSECONDS=0
When I changed the schema config from this:
the_geom:Polygon,location:String,imageindex:Integer,time:java.util.Date,z:Float,fileDate:java.util.Date,leadSeconds:Integer
to this:
the_geom:Polygon,location:String,imageindex:Integer,time:java.util.Date,z:Double,fileDate:java.util.Date,leadSeconds:Integer
the request started to work, returning a NetCDF file, instead of the misleading exception text.
Also FYI, the NetCDF file headers look like this (note the float data type for dimension z):
/d1/nnew/GeoServer/8089_server/GTG_index: ncdump -h …/GTG_granules/lambert_sample_20160414T020000000Z_l_0000000.nc
netcdf lambert_sample_20160414T020000000Z_l_0000000 {
dimensions:
time = 1 ;
x = 451 ;
y = 337 ;
z = 46 ;
variables:
double time(time) ;
time:standard_name = “time” ;
time:long_name = “data valid time” ;
time:units = “seconds since 1970-01-01T00:00:00Z” ;
time:calendar = “gregorian” ;
time:axis = “T” ;
time:reference_date = “2016-04-14T02:00:00Z” ;
float x(x) ;
x:standard_name = “projection_x_coordinate” ;
x:units = “km” ;
x:axis = “X” ;
float y(y) ;
y:standard_name = “projection_y_coordinate” ;
y:units = “km” ;
y:axis = “Y” ;
float lat(y, x) ;
lat:standard_name = “latitude” ;
lat:units = “degrees_north” ;
float lon(y, x) ;
lon:standard_name = “longitude” ;
lon:units = “degrees_east” ;
float z(z) ;
z:standard_name = “altitude” ;
z:long_name = “Specific altitude above mean sea level” ;
z:units = “km” ;
z:positive = “up” ;
z:axis = “Z” ;
int grid_mapping ;
grid_mapping:grid_mapping_name = “lambert_conformal_conic” ;
grid_mapping:longitude_of_central_meridian = -95.f ;
grid_mapping:latitude_of_projection_origin = 25.f ;
grid_mapping:standard_parallel = 25.f ;
float CAT_GPML(time, z, y, x) ;
CAT_GPML:valid_min = 0.f ;
CAT_GPML:valid_max = 0.5949897f ;
CAT_GPML:_FillValue = -9999.f ;
CAT_GPML:long_name = “Clear Air Turbulence (CAT)” ;
CAT_GPML:units = “%” ;
CAT_GPML:coordinates = “lon lat” ;
CAT_GPML:grid_mapping = “grid_mapping” ;
// global attributes:
:Conventions = “CF-1.6” ;
:source = “US NWS - NCEP - Aviation Weather Center” ;
:title = “Rapid Refresh (RAP)” ;
:history = “Converted to NetCDF from Grib2 with Grib2toNc from NCAR-RAL.” ;
}
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users
–
==
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.