A working document for the mapping of Rijkswaterstaat DONAR parameters to Um Aquo, CF and BODC/SeaDataNet is maintained in the OpenEarth repository: https://repos.deltares.nl/repos/OpenEarthTools/trunk/matlab/applications/Rijkswaterstaat/rws_waterbase_name2standard_name.xls (OpenEarth password required, register for free at http://oss.deltares.nl).
A presentation on this matter was presented in the joint Rijkswaterstaat-Deltares-KNMI SOS2012 project (ppt, only for SOS2012 members).
Code Block |
---|
//!! Working draft on how to encode UM Aquo semantics //!! into netCDF syntax. This will apply to Dutch government //!! data and model output in netCDF as present in: //!! OpenEarth: http://opendap.deltares.nl/thredds/catalog/opendap/rijkswaterstaat/waterbase/catalog.html //!! Matroos : https://opendap-matroos.deltares.nl/thredds/catalog.html (access registration required) //!! This is an example for in situ salinity data at one location. //!! The additions related to UM Aquo are indicated with //!! NetCDF id559-APPZK1.nc { dimensions: time = 174 ; locations = 1 ; name_strlen1 = 6 ; name_strlen2 = 25 ; //global Attributes: :title = " " :institution = "Rijkswaterstaat" :source = "surface observation" :history = "Source: http://live.waterbase.nl/wswaterbase/cgi-bin/wbGETDATA?ggt=id559&site=MIV&lang=nl&a=getData&gaverder=GaVerder&from=164810240000&loc=APPZK1&to=201103020000&fmt=text, tranformation to netCDF: $HeadURL: https://repos.deltares.nl/repos/OpenEarthTools/trunk/matlab/applications/Rijkswaterstaat/rws_waterbase2nc.m $ $Revision: 4182 $ $Date: 2011-03-06 22:49:53 +0100 (zo, 06 mrt 2011) $ $Author: boer_g $" :references = "<http://www.waterbase.nl>,<http://openearth.deltares.nl>" :email = "<servicedesk-data@rws.nl>" :comment = "The structure of this netCDF file is described in: https://cf-pcmdi.llnl.gov/trac/wiki/PointObservationConventions, http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#id2867470" :version = " " :terms_for_use = "These data can be used freely for research purposes provided that the following source is acknowledged: Rijkswaterstaat." :disclaimer = "This data is made available in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." :Conventions = "CF-1.6; UMAquo 201x" //!! In global Conventions attribute indicate that we use UMAquo 201x IN ADDITION(!) to CF according to: //!! http://www.unidata.ucar.edu/software/netcdf/conventions.html variables: single sea_water_salinity(locations,time), shape = [1 174] sea_water_salinity:long_name = "Saliniteit in oppervlaktewater" sea_water_salinity:units = "psu" sea_water_salinity:standard_name = "sea_water_salinity" sea_water_salinity:_FillValue = NaN f sea_water_salinity:cell_methods = "time: point area: point" sea_water_salinity:actual_range = 26.396 33.0996 //!! UMAquo 201x should prescribe the names of the required and optional //!! attributes that contain contents from the tables. Here are preliminary names //!! after a discussion with Hinne Reitsma (IHW) and Gerben de Boer (Deltares) //!! Any netCDF client can count on these keywords to be present when UMAquo //!! 201x is part of the global attribiute 'Conventions', see below. //!! //!! required: code form tables, same status as mandatory CF standard_name and units //!! //!! sea_water_salinity:aquo_grootheid_code = "SALNTT" //!! sea_water_salinity:aquo_grootheid_typering_code = "?" //!! sea_water_salinity:aquo_eenheid_code = "?" //!! sea_water_salinity:aquo_hoedanigheid_code = "?" //!! sea_water_salinity:aquo_compartiment_code = "?" //!! //!! optional: human readable text (resolved RDF), same status as optional CF long_name //!! //!! sea_water_salinity:aquo_grootheid_omschrijving = "?" //!! sea_water_salinity:aquo_grootheid_typering_omschrijving = "?" //!! sea_water_salinity:aquo_eenheid_omschrijving = "?" //!! sea_water_salinity:aquo_hoedanigheid_omschrijving = "?" //!! sea_water_salinity:aquo_compartiment_omschrijving = "?" //!! //!! sea_water_salinity:donar_wnsnum = 559 //!! sea_water_salinity:sdn_standard_name = "P011/185/ODSDM021" char station_id(locations,name_strlen1), shape = [1 6] station_id:long_name = "station ID" station_id:standard_name = "station_id" char station_name(locations,name_strlen2), shape = [1 25] station_name:long_name = "station name" station_name:standard_name = "station_name" single lon(locations), shape = [1] lon:long_name = "station longitude" lon:units = "degrees_east" lon:standard_name = "longitude" lon:grid_mapping = "wgs84" single lat(locations), shape = [1] lat:long_name = "station latitude" lat:units = "degrees_north" lat:standard_name = "latitude" lat:grid_mapping = "wgs84" int32 wgs84([]), shape = [1] wgs84:name = "WGS 84" wgs84:epsg = 4326 wgs84:grid_mapping_name = "latitude_longitude" wgs84:semi_major_axis = 6.37814e+006 wgs84:semi_minor_axis = 6.35675e+006 wgs84:inverse_flattening = 298.257 wgs84:proj4_params = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs " wgs84:EPSG_code = "EPSG:4326" wgs84:projection_name = "Latitude Longitude" single x(locations), shape = [1] x:long_name = "station x" x:units = "m" x:standard_name = "projection_x_coordinate" x:grid_mapping = "epsg" single y(locations), shape = [1] y:long_name = "station y" y:units = "m" y:standard_name = "projection_y_coordinate" y:grid_mapping = "epsg" int32 epsg([]), shape = [1] epsg:name = "Amersfoort / RD New" epsg:epsg = 7415 epsg:epsg_name = "Oblique Stereographic" epsg:grid_mapping_name = " " epsg:semi_major_axis = 6.3774e+006 epsg:semi_minor_axis = 6.35608e+006 epsg:inverse_flattening = 299.153 epsg:latitude_of_projection_origin = 52.0922 epsg:longitude_of_projection_origin = 5.23155 epsg:false_easting = 155000 epsg:false_northing = 463000 epsg:scale_factor_at_projection_origin = 0.999908 epsg:proj4_params = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.4174,50.3319,465.5542,-0.398957388243134,0.343987817378283,-1.87740163998045,4.0725 +no_defs" epsg:EPSG_code = "EPSG:7415" epsg:projection_name = "Amersfoort / RD New" single z(locations,time), shape = [1 174] z:long_name = "station depth" z:units = "meters" z:standard_name = "height_above_reference_ellipsoid" z:positive = "up" z:axis = "Z" double time(time), shape = [174] time:long_name = "time" time:units = "days since 1970-01-01 00:00:00 +01:00" time:standard_name = "time" time:_FillValue = NaN } |