NetCDF grid mapping variable: Difference between revisions
From BAWiki
imported>Lang Guenther (→Maximum Depth (HB): text translated from German to English) |
(The LinkTitles extension automatically added links to existing pages (<a target="_blank" rel="nofollow noreferrer noopener" class="external free" href="https://github.com/bovender/LinkTitles">https://github.com/bovender/LinkTitles</a>).) |
||
Line 19: | Line 19: | ||
::: crs:scale_factor_at_central_merdian = ''value'' ; | ::: crs:scale_factor_at_central_merdian = ''value'' ; | ||
::: crs:longitude_of_central_meridian = ''value'' ; | ::: crs:longitude_of_central_meridian = ''value'' ; | ||
::: crs: | ::: crs:latitude_of_[[projection]]_origin = ''value'' ; | ||
::: crs:false_easting = ''value'' ; | ::: crs:false_easting = ''value'' ; | ||
::: crs:false_northing = ''value'' ; | ::: crs:false_northing = ''value'' ; | ||
Line 54: | Line 54: | ||
:: double Mesh0_node_water_depth_2d(time,nMesh0_node) ; | :: double Mesh0_node_water_depth_2d(time,nMesh0_node) ; | ||
::: Mesh0_node_water_depth_2d:standard_name = "sea_floor_depth_below_sea_surface" ; | ::: Mesh0_node_water_depth_2d:standard_name = "sea_floor_depth_below_sea_surface" ; | ||
::: Mesh0_node_water_depth_2d:long_name = "water depth at locations, vertically integrated" ; | ::: Mesh0_node_water_depth_2d:long_name = "[[water depth]] at locations, vertically integrated" ; | ||
::: Mesh0_node_water_depth_2d:units = "m" ; | ::: Mesh0_node_water_depth_2d:units = "m" ; | ||
::: Mesh0_node_water_depth_2d:<font color=blue>coordinates</font> = "Mesh0_node_lon Mesh0_node_lat" ; | ::: Mesh0_node_water_depth_2d:<font color=blue>coordinates</font> = "Mesh0_node_lon Mesh0_node_lat" ; |
Latest revision as of 09:40, 21 October 2022
Introduction
When the coordinate variables for a horizontal grid are not longitude and latitude, it is required that the true latitude and longitude coordinates be supplied via the "coordinates" attribute. If in addition it is desired to describe the mapping between the given coordinate variables and the true latitude and longitude coordinates, the attribute "grid_mapping" may be used to supply this description. This attribute is attached to data variables so that variables with different mappings may be present in a single file. The attribute takes a string value which is the name of another variable in the file that provides the description of the mapping via a collection of attached attributes. This variable is called a grid mapping variable and is of arbitrary type since it contains no data. Its purpose is to act as a container for the attributes that define the mapping.
In case the component of a vector is not given in eastward or northward direction the required coordinate transformation must be also supplied using the grid_mapping attribute.
Grid mapping variable
An extensive description is given in appendix F of the CF metadata conventions. Subsequently three different uses cases are going to be presented.
Transverse Mercator projection
This type of transformation can be used for UTM coordinates and Gauß-Krüger coordinates as well.
- integer crs ; \\ no value for this container variable must be specified
- crs:grid_mapping_name = "transverse_mercator" ;
- crs:scale_factor_at_central_merdian = value ;
- crs:longitude_of_central_meridian = value ;
- crs:latitude_of_projection_origin = value ;
- crs:false_easting = value ;
- crs:false_northing = value ;
- crs:longitude_of_prime_meridian = value ; // optional but recommended
- crs:semi_major_axis = value ; // optional but recommended
- crs:inverse_flattening = value ; // optional but recommended
- crs:comment = "X , Y : descriptive text\\nLON, LAT : Ellipsoid - European Terrestrial Reference System 1989" ; // additional BAW-DH
- crs:epsg_code = "EPSG:epsg-code" ; // see EPSG Geodetic Parameter Registry
- integer crs ; \\ no value for this container variable must be specified
Examples for valid EPSG codes are 31466, 31467, 31468, 31469 (all Gauß-Krüger) or 25831, 25832 (all UTM).
Geographic coordinates (ETRS 1989)
- integer crs ; \\ no value for this container variable must be specified
- crs:grid_mapping_name = "latitude_longitude" ;
- crs:semi_major_axis = 6378137.00 ; // optional but recommended
- crs:inverse_flattening = 298.257222101 ; // optional but recommended
- crs:comment = "X , Y : descriptive text; // optional
- crs:epsg_code = "EPSG:4258" ; // see EPSG Geodetic Parameter Registry
- integer crs ; \\ no value for this container variable must be specified
Rotated geographic coordinates
- integer crs ; \\ no value for this container variable must be specified
- crs:grid_mapping_name = "rotated_latitude_longitude" ;
- crs:grid_north_pole_longitude = value ;
- crs:grid_north_pole_latitude = value ;
- integer crs ; \\ no value for this container variable must be specified
Use cases
Referencing a grid mapping variable
When the coordinate variables for a horizontal grid are not longitude and latitude, it is required that the true latitude and longitude coordinates be supplied via the "coordinates" attribute. Attribute "grid_mapping" is used to describe the mapping between the given coordinate variables and the true latitude and longitude coordinates. Example:
- double Mesh0_node_water_depth_2d(time,nMesh0_node) ;
- Mesh0_node_water_depth_2d:standard_name = "sea_floor_depth_below_sea_surface" ;
- Mesh0_node_water_depth_2d:long_name = "water depth at locations, vertically integrated" ;
- Mesh0_node_water_depth_2d:units = "m" ;
- Mesh0_node_water_depth_2d:coordinates = "Mesh0_node_lon Mesh0_node_lat" ;
- Mesh0_node_water_depth_2d:_FillValue = fillvalue ;
- Mesh0_node_water_depth_2d:valid_range = valid minimum, valid maximum ;
- Mesh0_node_water_depth_2d:grid_mapping = "crs" ;
- double Mesh0_node_water_depth_2d(time,nMesh0_node) ;
Wind defined in rotated pole coordinates
The components of a wind field are given as local wind ("x_wind", "y_wind") in geographic coordinates. Attribute "grid_mapping" references variable "crs" which contains more information about the coordinate transformation used.
- float ugrd10m(time, latitude, longitude) ;
- ugrd10m:name_id = 557s ;
- ugrd10m:grid_mapping = "crs" ;
- ugrd10m:standard_name = "x_wind" ;
- ugrd10m:units = "m/s" ;
- ugrd10m:_FillValue = 9.999e+20 ;
- ugrd10m:long_name = "10 m above ground u-component of wind" ;
- float ugrd10m(time, latitude, longitude) ;
- float vgrd10m(time, latitude, longitude) ;
- vgrd10m:name_id = 558s ;
- vgrd10m:grid_mapping = "crs" ;
- vgrd10m:standard_name = "y_wind" ;
- vgrd10m:units = "m/s" ;
- vgrd10m:_FillValue = 9.999e+20 ;
- vgrd10m:long_name = "10 m above ground v-component of wind" ;
- float vgrd10m(time, latitude, longitude) ;
- int crs ;
- crs:grid_mapping_name = "rotated_latitude_longitude" ;
- crs:grid_north_pole_longitude = -170. ;
- crs:grid_north_pole_latitude = 40. ;
- int crs ;
A generic application will be able to detect that wind is defined locally ("x_wind", "y_wind"). In case "eastward_wind" and "northward_wind" is requested, the required coordinate transformation could be carried through using the parameters from grid mapping variable "crs". In this situation, to perform a correct transformation, standard names as well as grid mapping variable have to be avaluated.
back to NetCDF