Hi Ben,

Thanks for your answer. It gave good insights in the nature of the
problem. Therefore I tried to use another NetCDF based map from the
same provider, which does use a spatial grid as supported by NetCDF.
That works much better.

However, I'm currently looking at better sources for maps with the
same information, as I'd like to be able to update the map smoothly
(since it contains actual weather information, which is updated
frequently). I'll keep your suggestion in mind, but prefer to
investigate another, more straightforward approach first.

Kind Regards,
Danny

On Tue, Oct 11, 2016 at 7:58 PM, Ben Caradoc-Davies <b...@transient.nz> wrote:
> Danny,
>
> it looks like the NetCDF libraries are guessing that your station variable
> is a dimension because its name matches its dimension name, but it is not a
> standard axis and not a supported type. If this was the only problem, you
> could rename the variable.
>
> The larger problem is that this file appears to be a collection of point
> data. As far as I know, NetCDF support is limited to coverages, that is,
> files that define a variable over a two-dimensional spatial grid (and higher
> dimensions). Your file does not have a supported spatial structure because
> it represents a collection of points.
>
> Can you extract the samples and store them in a database, or convert them to
> another file format such as shapefiles or a property file that supports
> point data?
>
> Kind regards,
> Ben.
>
>
> On 11/10/16 22:13, Danny Smit wrote:
>>
>> Hello everyone,
>>
>> I have downloaded the NetCDF file from:
>>
>> https://data.knmi.nl/download/Actuele10mindataKNMIstations/1/noversion/2016/10/11/KMDS__OPER_P___10M_OBS_L2.nc
>> and am trying to add it as a store to the geoserver.
>>
>> However when trying to add the store the geoserver gives the error:
>>
>>     Could not list layers for this store, an error occurred retrieving
>> them: Failed to create reader from file:data/KMDS__OPER_P___10M_OBS_L2
>> (1).nc and hints null
>>
>> The geoserver.log gives a couple of warnings and exceptions. However,
>> since I'm not very experienced with the netcdf format, I don't know
>> what to make of it.  Is there something wrong with the content of the
>> .nc file, or perhaps is some of its syntax not supported by the netcdf
>> plugin?
>>
>>
>> See below the headers of the .nc file and the warnings and start of
>> the exceptions from the logfile.
>>
>> ncdump outoutp:
>>
>> netcdf KMDS__OPER_P___10M_OBS_L2\ \(1\) {
>> dimensions:
>>         station = 48 ;
>>         time = 1 ;
>> variables:
>>         string station(station) ;
>>                 station:long_name = "Station id" ;
>>                 station:cf_role = "timeseries_id" ;
>>         double time(time) ;
>>                 time:long_name = "time of measurement" ;
>>                 time:standard_name = "time" ;
>>                 time:units = "seconds since 1950-01-01 00:00:00" ;
>>         string stationname(station) ;
>>                 stationname:long_name = "Station name" ;
>>         double lat(station) ;
>>                 lat:long_name = "station  latitude" ;
>>                 lat:standard_name = "latitude" ;
>>                 lat:units = "degrees_north" ;
>>         double lon(station) ;
>>                 lon:long_name = "station longitude" ;
>>                 lon:standard_name = "longitude" ;
>>                 lon:units = "degrees_east" ;
>>         double height(station) ;
>>                 height:long_name = "Station height" ;
>>                 height:standard_name = "height" ;
>>                 height:units = "m" ;
>>         double dd(station) ;
>>                 dd:_FillValue = -9999. ;
>>                 dd:standard_name = "wind_from_direction" ;
>>                 dd:units = "degree" ;
>>                 dd:long_name = "Wind Direction 10 Min Average" ;
>>         double ff(station) ;
>>                 ff:_FillValue = -9999. ;
>>                 ff:standard_name = "wind_speed" ;
>>                 ff:units = "m s-1" ;
>>                 ff:long_name = "Wind Speed at 10m 10 Min Average" ;
>>         double gff(station) ;
>>                 gff:_FillValue = -9999. ;
>>                 gff:standard_name = "wind_speed_of_gust" ;
>>                 gff:units = "m s-1" ;
>>                 gff:long_name = "Wind Gust at 10m 10 Min Maximum" ;
>>         double ta(station) ;
>>                 ta:_FillValue = -9999. ;
>>                 ta:standard_name = "air_temperature" ;
>>                 ta:units = "degrees Celsius" ;
>>                 ta:long_name = "Air Temperature 1 Min Average" ;
>>         double rh(station) ;
>>                 rh:_FillValue = -9999. ;
>>                 rh:standard_name = "relative_humidity" ;
>>                 rh:units = "%" ;
>>                 rh:long_name = "Relative Humidity 1 Min Average" ;
>>         double pp(station) ;
>>                 pp:_FillValue = -9999. ;
>>                 pp:standard_name = "air_pressure_at_sea_level" ;
>>                 pp:units = "hPa" ;
>>                 pp:long_name = "Air Pressure at Sea Level 1 Min Average" ;
>>         double zm(station) ;
>>                 zm:_FillValue = -9999. ;
>>                 zm:standard_name = "visibility_in_air" ;
>>                 zm:units = "m" ;
>>                 zm:long_name = "Meteorological Optical Range 10 Min
>> Average" ;
>>         double D1H(station) ;
>>                 D1H:_FillValue = -9999. ;
>>                 D1H:long_name = "Rainfall Duration in last Hour" ;
>>                 D1H:standard_name = "rainfall_duration" ;
>>                 D1H:units = "min" ;
>>         double dr(station) ;
>>                 dr:_FillValue = -9999. ;
>>                 dr:long_name = "Precipitation Duration (Rain Gauge) 10
>> Min Sum" ;
>>                 dr:standard_name = "precipitation_duration" ;
>>                 dr:units = "sec" ;
>>         double hc(station) ;
>>                 hc:_FillValue = -9999. ;
>>                 hc:long_name = "Cloud Base" ;
>>                 hc:standard_name = "cloud_base_altitude" ;
>>                 hc:units = "ft" ;
>>         double hc1(station) ;
>>                 hc1:_FillValue = -9999. ;
>>                 hc1:long_name = "Cloud Base First Layer" ;
>>                 hc1:standard_name = "cloud_base_altitude" ;
>>                 hc1:units = "ft" ;
>>         double hc2(station) ;
>>                 hc2:_FillValue = -9999. ;
>>                 hc2:long_name = "Cloud Base Second Layer" ;
>>                 hc2:standard_name = "cloud_base_altitude" ;
>>                 hc2:units = "ft" ;
>>         double hc3(station) ;
>>                 hc3:_FillValue = -9999. ;
>>                 hc3:long_name = "Cloud Base Third Layer" ;
>>                 hc3:standard_name = "cloud_base_altitude" ;
>>                 hc3:units = "ft" ;
>>         double nc(station) ;
>>                 nc:_FillValue = -9999. ;
>>                 nc:long_name = "Total cloud cover" ;
>>                 nc:standard_name = "cloud_cover" ;
>>                 nc:units = "octa" ;
>>         double nc1(station) ;
>>                 nc1:_FillValue = -9999. ;
>>                 nc1:long_name = "Cloud Amount First Layer" ;
>>                 nc1:standard_name = "cloud_cover" ;
>>                 nc1:units = "octa" ;
>>         double nc2(station) ;
>>                 nc2:_FillValue = -9999. ;
>>                 nc2:long_name = "Cloud Amount Second Layer" ;
>>                 nc2:standard_name = "cloud_cover" ;
>>                 nc2:units = "octa" ;
>>         double nc3(station) ;
>>                 nc3:_FillValue = -9999. ;
>>                 nc3:long_name = "Cloud Amount Third Layer" ;
>>                 nc3:standard_name = "cloud_cover" ;
>>                 nc3:units = "octa" ;
>>         double pg(station) ;
>>                 pg:_FillValue = -9999. ;
>>                 pg:long_name = "Precipitation Intensity (PWS) 10 Min
>> Average" ;
>>                 pg:standard_name = "lwe_precipitation_rate" ;
>>                 pg:units = "mm/h" ;
>>         double pr(station) ;
>>                 pr:_FillValue = -9999. ;
>>                 pr:long_name = "Precipitation Duration (PWS) 10 Min Sum" ;
>>                 pr:standard_name = "precipitation_duration" ;
>>                 pr:units = "sec" ;
>>         double qg(station) ;
>>                 qg:_FillValue = -9999. ;
>>                 qg:long_name = "Global Solar Radiation 10 Min Average" ;
>>                 qg:standard_name =
>> "total_downwelling_shortwave_flux_in_air" ;
>>                 qg:units = "W m-2" ;
>>         double R12H(station) ;
>>                 R12H:_FillValue = -9999. ;
>>                 R12H:long_name = "Rainfall in last 12 Hours" ;
>>                 R12H:standard_name = "rainfall_amount" ;
>>                 R12H:units = "mm" ;
>>         double R1H(station) ;
>>                 R1H:_FillValue = -9999. ;
>>                 R1H:long_name = "Rainfall in last Hour" ;
>>                 R1H:standard_name = "rainfall_amount" ;
>>                 R1H:units = "mm" ;
>>         double R24H(station) ;
>>                 R24H:_FillValue = -9999. ;
>>                 R24H:long_name = "Rainfall in last 24 Hours" ;
>>                 R24H:standard_name = "rainfall_amount" ;
>>                 R24H:units = "mm" ;
>>         double R6H(station) ;
>>                 R6H:_FillValue = -9999. ;
>>                 R6H:long_name = "Rainfall in last 6 Hours" ;
>>                 R6H:standard_name = "rainfall_amount" ;
>>                 R6H:units = "mm" ;
>>         double rg(station) ;
>>                 rg:_FillValue = -9999. ;
>>                 rg:long_name = "Precipitation Intensity (Rain Gauge)
>> 10 Min Average" ;
>>                 rg:standard_name = "precipitation_rate" ;
>>                 rg:units = "mm/h" ;
>>         double ss(station) ;
>>                 ss:_FillValue = -9999. ;
>>                 ss:long_name = "Sunshine Duration" ;
>>                 ss:standard_name = "duration_of_sunshine" ;
>>                 ss:units = "min" ;
>>         double td(station) ;
>>                 td:_FillValue = -9999. ;
>>                 td:long_name = "Dew Point Temperature 1.5m 1 Min Average"
>> ;
>>                 td:standard_name = "dew_point_temperature" ;
>>                 td:units = "degrees Celsius" ;
>>         double tgn(station) ;
>>                 tgn:_FillValue = -9999. ;
>>                 tgn:long_name = "Grass Temperature 10cm 10 Min Minimum" ;
>>                 tgn:standard_name = "air_temperature" ;
>>                 tgn:units = "degrees Celsius" ;
>>         double Tgn12(station) ;
>>                 Tgn12:_FillValue = -9999. ;
>>                 Tgn12:long_name = "Grass Temperature Minimum last 12
>> Hours" ;
>>                 Tgn12:standard_name = "air_temperature" ;
>>                 Tgn12:units = "degrees Celsius" ;
>>         double Tgn14(station) ;
>>                 Tgn14:_FillValue = -9999. ;
>>                 Tgn14:long_name = "Grass Temperature Minimum last 14
>> Hours" ;
>>                 Tgn14:standard_name = "air_temperature" ;
>>                 Tgn14:units = "degrees Celsius" ;
>>         double Tgn6(station) ;
>>                 Tgn6:_FillValue = -9999. ;
>>                 Tgn6:long_name = "Grass Temperature Minimum last 6 Hours"
>> ;
>>                 Tgn6:standard_name = "air_temperature" ;
>>                 Tgn6:units = "degrees Celsius" ;
>>         double tn(station) ;
>>                 tn:_FillValue = -9999. ;
>>                 tn:long_name = "Ambient Temperature 1.5m 10 Min Minimum" ;
>>                 tn:standard_name = "air_temperature" ;
>>                 tn:units = "degrees Celsius" ;
>>         double Tn12(station) ;
>>                 Tn12:_FillValue = -9999. ;
>>                 Tn12:long_name = "Air Temperature Minimum last 12 Hours" ;
>>                 Tn12:standard_name = "air_temperature" ;
>>                 Tn12:units = "degrees Celsius" ;
>>         double Tn14(station) ;
>>                 Tn14:_FillValue = -9999. ;
>>                 Tn14:long_name = "Air Temperature Minimum last 14 Hours" ;
>>                 Tn14:standard_name = "air_temperature" ;
>>                 Tn14:units = "degrees Celsius" ;
>>         double Tn6(station) ;
>>                 Tn6:_FillValue = -9999. ;
>>                 Tn6:long_name = "Air Temperature Minimum last 6 Hours" ;
>>                 Tn6:standard_name = "air_temperature" ;
>>                 Tn6:units = "degrees Celsius" ;
>>         double tx(station) ;
>>                 tx:_FillValue = -9999. ;
>>                 tx:long_name = "Ambient Temperature 1.5m 10 Min Maximum" ;
>>                 tx:standard_name = "air_temperature" ;
>>                 tx:units = "degrees Celsius" ;
>>         double Tx12(station) ;
>>                 Tx12:_FillValue = -9999. ;
>>                 Tx12:long_name = "Air Temperature Maximum last 12 Hours" ;
>>                 Tx12:standard_name = "air_temperature" ;
>>                 Tx12:units = "degrees Celsius" ;
>>         double Tx24(station) ;
>>                 Tx24:_FillValue = -9999. ;
>>                 Tx24:long_name = "Air Temperature Maximum last 24 Hours" ;
>>                 Tx24:standard_name = "air_temperature" ;
>>                 Tx24:units = "degrees Celsius" ;
>>         double Tx6(station) ;
>>                 Tx6:_FillValue = -9999. ;
>>                 Tx6:long_name = "Air Temperature Maximum last 6 Hours" ;
>>                 Tx6:standard_name = "air_temperature" ;
>>                 Tx6:units = "degrees Celsius" ;
>>         double ww(station) ;
>>                 ww:_FillValue = -9999. ;
>>                 ww:long_name = "wawa Weather Code" ;
>>                 ww:units = "code" ;
>>                 ww:comment = "WMO table 4680" ;
>>         double pwc(station) ;
>>                 pwc:_FillValue = -9999. ;
>>                 pwc:long_name = "Present Weather" ;
>>                 pwc:units = "code" ;
>>                 pwc:comment = "KNMI: Handboek waarnemingen" ;
>>         double ww-10(station) ;
>>                 ww-10:_FillValue = -9999. ;
>>                 ww-10:long_name = "wawa Weather Code for Previous 10
>> Min Interval" ;
>>                 ww-10:units = "code" ;
>>                 ww-10:comment = "WMO table 4680" ;
>>         char iso_dataset ;
>>                 iso_dataset:title = "KMDS__OPER_P___10M_OBS_L2" ;
>>                 iso_dataset:abstract = "Most recent 10 minute in situ
>> observations of the Dutch meteorological observation network" ;
>>                 iso_dataset:status = "ongoing" ;
>>                 iso_dataset:type = "dataset" ;
>>                 iso_dataset:uid = "c3a312e2-2d8f-440b-ae7d-3406c9fe2f77" ;
>>                 iso_dataset:topic = "climatology, meteorology, atmosphere"
>> ;
>>                 iso_dataset:keyword = "temperature, pressure, relative
>> humidity, visibility, wind speed, wind direction, wind gust" ;
>>                 iso_dataset:max-x = 10.f ;
>>                 iso_dataset:min-x = 0.f ;
>>                 iso_dataset:max-y = 60.f ;
>>                 iso_dataset:min-y = 40.f ;
>>                 iso_dataset:temporal_extent = "1950-01-01 and ongoing" ;
>>                 iso_dataset:date = "2013-10-10" ;
>>                 iso_dataset:dateType = "publication date" ;
>>                 iso_dataset:statement = "KNMI operates in the
>> Netherlands 33 automatic weather stations on land, 15 wind poles in
>> coastal areas and 13 automatic weather stations on North Sea platforms
>> (Dutch part of the Continental Shelf North Sea). These weather
>> stations report meteorological paramaters such as temperature,
>> relative humidity, wind (speed, gust, direction), air pressure and
>> visibility every 10 minutes. Only stations that report within 6
>> minutes after observation time - 47 in total - are part of this
>> dataset: actual synoptic observations per 10 minutes." ;
>>                 iso_dataset:code = "4326" ;
>>                 iso_dataset:codeSpace = "EPSG" ;
>>                 iso_dataset:accessConstraints = "No limitations" ;
>>                 iso_dataset:useLimitation = "No use limitations" ;
>>                 iso_dataset:organisationName_dataset = "Royal
>> Netherlands Meteorological Institute (KNMI)" ;
>>                 iso_dataset:email_dataset = "datacent...@knmi.nl" ;
>>                 iso_dataset:role_dataset = "pointOfContact" ;
>>                 iso_dataset:metadata_id =
>> "fbfad5b9-1dd2-425e-bb35-c96386380c0e" ;
>>                 iso_dataset:organisationName_metadata = "Royal
>> Netherlands Meteorological Institute (KNMI)" ;
>>                 iso_dataset:role_metadata = "pointOfContact" ;
>>                 iso_dataset:email_metadata = "datacent...@knmi.nl" ;
>>                 iso_dataset:url_metadata = "http://data.knmi.nl"; ;
>>                 iso_dataset:datestamp = "2014-07-23" ;
>>                 iso_dataset:language = "eng" ;
>>                 iso_dataset:metadataStandardName = "ISO 19115" ;
>>                 iso_dataset:metadataStandardNameVersion = "Nederlandse
>> metadatastandaard op ISO 19115 voor geografie 1.2" ;
>>         char product ;
>>                 product:units = "1" ;
>>                 product:long_name = "ADAGUC Data Products Standard" ;
>>                 product:ref_doc = "ADAGUC Data Products Standard" ;
>>                 product:ref_doc_version = "1.1" ;
>>                 product:format_version = "1.1" ;
>>                 product:originator = "Royal Netherlands Meteorological
>> Institute (KNMI)" ;
>>                 product:type = "P" ;
>>                 product:acronym = "KMDS__OPER_P___10M_OBS_L2" ;
>>                 product:level = "L2" ;
>>                 product:style = "camelCase" ;
>>         char projection ;
>>                 projection:EPSG_code = "EPSG:4326" ;
>>
>> // global attributes:
>>                 :featureType = "timeSeries" ;
>>                 :Conventions = "CF-1.4" ;
>>                 :title = "KMDS__OPER_P___10M_OBS_L2" ;
>>                 :institution = "Royal Netherlands Meteorological
>> Institute (KNMI)" ;
>>                 :source = "Royal Netherlands Meteorological Institute
>> (KNMI)" ;
>>                 :history = "File created from KMDS ASCII file. " ;
>>                 :references = "http://data.knmi.nl"; ;
>>                 :comment =  ;
>> }
>>
>>
>>
>> geoserver.log:
>>
>> 11 Oct 10:59:51 WARN [netcdf.NetCDFGeoreferenceManager] - Unsupported
>> axis: String station(station=48);
>>   :long_name = "Station id";
>>   :cf_role = "timeseries_id";
>>   :_ChunkSizes = 48; // int
>>  in input: C:/Program Files (x86)/GeoServer
>> 2.9.1/data_dir/data/KMDS__OPER_P___10M_OBS_L2 (1).nc has been found
>> 11 Oct 10:59:51 WARN [netcdf.NetCDFFormat] - Unable to connect
>> org.geotools.data.DataSourceException: Unable to connect
>>         at
>> org.geotools.coverage.io.netcdf.NetCDFReader.<init>(NetCDFReader.java:159)
>>         at
>> org.geotools.coverage.io.netcdf.NetCDFFormat.getReader(NetCDFFormat.java:95)
>>         at
>> org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1441)
>>         at
>> org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1369)
>>         at
>> org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:59)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>         at java.lang.reflect.Method.invoke(Unknown Source)
>>         at
>> org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:147)
>>         at com.sun.proxy.$Proxy9.getGridCoverageReader(Unknown Source)
>>         ...
>>
>> 11 Oct 10:59:51 INFO [geoserver.web] - Getting list of coverages for
>> saved store file:data/KMDS__OPER_P___10M_OBS_L2 (1).nc
>> java.lang.RuntimeException: Could not list layers for this store, an
>> error occurred retrieving them: Failed to create reader from
>> file:data/KMDS__OPER_P___10M_OBS_L2 (1).nc and hints null
>>         at
>> org.geoserver.web.data.layer.NewLayerPageProvider.getItemsInternal(NewLayerPageProvider.java:150)
>>         at
>> org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:57)
>>         at
>> org.geoserver.web.wicket.GeoServerDataProvider.fullSize(GeoServerDataProvider.java:243)
>>         at
>> org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.updateMatched(GeoServerTablePanel.java:583)
>>         at
>> org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.<init>(GeoServerTablePanel.java:576)
>>         at
>> org.geoserver.web.wicket.GeoServerTablePanel.<init>(GeoServerTablePanel.java:176)
>>         at
>> org.geoserver.web.wicket.GeoServerTablePanel.<init>(GeoServerTablePanel.java:97)
>>         ...
>>
>>
>> 2016-10-11 10:59:51,754 WARN [netcdf.NetCDFGeoreferenceManager] -
>> Unsupported axis: String station(station=48);
>>   :long_name = "Station id";
>>   :cf_role = "timeseries_id";
>>   :_ChunkSizes = 48; // int
>>  in input: C:/Program Files (x86)/GeoServer
>> 2.9.1/data_dir/data/KMDS__OPER_P___10M_OBS_L2 (1).nc has been found
>> 2016-10-11 10:59:51,754 WARN [netcdf.NetCDFFormat] - Unable to connect
>> org.geotools.data.DataSourceException: Unable to connect
>>         at
>> org.geotools.coverage.io.netcdf.NetCDFReader.<init>(NetCDFReader.java:159)
>>         at
>> org.geotools.coverage.io.netcdf.NetCDFFormat.getReader(NetCDFFormat.java:95)
>>         at
>> org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1441)
>>         at
>> org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1369)
>>         at
>> org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:59)
>>        ...
>>
>
> --
> Ben Caradoc-Davies <b...@transient.nz>
> Director
> Transient Software Limited <http://transient.nz/>
> New Zealand

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to