NetCDF Unstrukturiertes Gitter: Unterschied zwischen den Versionen
Aus BAWiki
imported>Lang Guenther K (→Dimensionen: Korrektur) |
imported>Lang Guenther (Eine Überschriftenebene teilweise entfernt (Variablen)) |
||
Zeile 18: | Zeile 18: | ||
:: nMaxMesh2_poly_nodes = ''maximum number of nodes in polygon'' ; | :: nMaxMesh2_poly_nodes = ''maximum number of nodes in polygon'' ; | ||
== | ==Lokale Koordinaten== | ||
===Knoten=== | |||
:: double Mesh2_node_x(nMesh2_node) ; | :: double Mesh2_node_x(nMesh2_node) ; | ||
::: Mesh2_node_x:standard_name = "'''projection_x_coordinate'''" ; | ::: Mesh2_node_x:standard_name = "'''projection_x_coordinate'''" ; | ||
Zeile 31: | Zeile 29: | ||
::: Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ; | ::: Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ; | ||
::: Mesh2_node_y:units = "m" ; | ::: Mesh2_node_y:units = "m" ; | ||
===Kanten=== | |||
:: double Mesh2_edge_x(nMesh2_edge) ; | :: double Mesh2_edge_x(nMesh2_edge) ; | ||
::: Mesh2_edge_x:standard_name = "'''projection_x_coordinate'''" ; | ::: Mesh2_edge_x:standard_name = "'''projection_x_coordinate'''" ; | ||
Zeile 42: | Zeile 40: | ||
::: Mesh2_edge_y:units = "m" ; | ::: Mesh2_edge_y:units = "m" ; | ||
::: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" \\ optional | ::: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" \\ optional | ||
===Polygone=== | |||
:: double Mesh2_poly_x(nMesh2_poly) ; | :: double Mesh2_poly_x(nMesh2_poly) ; | ||
::: Mesh2_poly_x:standard_name = "'''projection_x_coordinate'''" ; | ::: Mesh2_poly_x:standard_name = "'''projection_x_coordinate'''" ; | ||
Zeile 54: | Zeile 52: | ||
::: Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" \\ optional | ::: Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" \\ optional | ||
===(optional) Begrenzung für Kanten=== | |||
:: double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required | :: double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required | ||
:: double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required | :: double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required | ||
===(optional) Begrenzung für Polygone=== | |||
:: double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required | :: double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required | ||
:: double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required | :: double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required | ||
==Geografische Koordinaten== | |||
===Knoten=== | |||
:: double Mesh2_node_lon(nMesh2_node) ; | :: double Mesh2_node_lon(nMesh2_node) ; | ||
::: Mesh2_node_lon:standard_name = "'''longitude'''" ; | ::: Mesh2_node_lon:standard_name = "'''longitude'''" ; | ||
Zeile 73: | Zeile 71: | ||
::: Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ; | ::: Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ; | ||
::: Mesh2_node_lat:units = "degrees_north" ; | ::: Mesh2_node_lat:units = "degrees_north" ; | ||
===Kanten=== | |||
:: double Mesh2_edge_lon(nMesh2_edge) ; | :: double Mesh2_edge_lon(nMesh2_edge) ; | ||
::: Mesh2_edge_lon:standard_name = "'''longitude'''" ; | ::: Mesh2_edge_lon:standard_name = "'''longitude'''" ; | ||
Zeile 84: | Zeile 82: | ||
::: Mesh2_edge_lat:units = "degrees_north" ; | ::: Mesh2_edge_lat:units = "degrees_north" ; | ||
::: Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" // optional | ::: Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" // optional | ||
===Polygone=== | |||
:: double Mesh2_poly_lon(nMesh2_poly) ; | :: double Mesh2_poly_lon(nMesh2_poly) ; | ||
::: Mesh2_poly_lon:standard_name = "'''longitude'''" ; | ::: Mesh2_poly_lon:standard_name = "'''longitude'''" ; | ||
Zeile 95: | Zeile 93: | ||
::: Mesh2_poly_lat:units = "degrees_north" ; | ::: Mesh2_poly_lat:units = "degrees_north" ; | ||
::: Mesh2_poly_lat:bounds = "Mesh2_poly_lat_bnd" // optional | ::: Mesh2_poly_lat:bounds = "Mesh2_poly_lat_bnd" // optional | ||
===(optional) Begrenzung für Kanten=== | |||
:: double Mesh2_edge_lon_bnd(nMesh2_edge,Two) ; \\ no metadata required | :: double Mesh2_edge_lon_bnd(nMesh2_edge,Two) ; \\ no metadata required | ||
:: double Mesh2_edge_lat_bnd(nMesh2_edge,Two) ; \\ no metadata required | :: double Mesh2_edge_lat_bnd(nMesh2_edge,Two) ; \\ no metadata required | ||
===(optional) Begrenzung für Polygone=== | |||
:: double Mesh2_poly_lon_bnd(nMesh2_poly,Three) ; \\ no metadata required | :: double Mesh2_poly_lon_bnd(nMesh2_poly,Three) ; \\ no metadata required | ||
:: double Mesh2_poly_lat_bnd(nMesh2_poly,Three) ; \\ no metadata required | :: double Mesh2_poly_lat_bnd(nMesh2_poly,Three) ; \\ no metadata required | ||
==Topologische Daten== | |||
===Knotenverzeichnis der Kanten=== | |||
:: integer Mesh2_edge_nodes(nMesh2_edge,Two) ; | :: integer Mesh2_edge_nodes(nMesh2_edge,Two) ; | ||
::: Mesh2_edge_nodes:standard_name = "'''???'''" \\ yet to be determined | ::: Mesh2_edge_nodes:standard_name = "'''???'''" \\ yet to be determined | ||
::: Mesh2_edge_nodes:long_name = "list of nodes for all edges, start node - end node" | ::: Mesh2_edge_nodes:long_name = "list of nodes for all edges, start node - end node" | ||
:: ''Bemerkung: Indizes starten mit Null!'' | :: ''Bemerkung: Indizes starten mit Null!'' | ||
===Knotenverzeichnis der Polygone=== | |||
:: integer Mesh2_poly_nodes(nMesh2_poly,Three) ; | :: integer Mesh2_poly_nodes(nMesh2_poly,Three) ; | ||
::: Mesh2_poly_nodes:standard_name = "'''???'''" \\ yet to be determined | ::: Mesh2_poly_nodes:standard_name = "'''???'''" \\ yet to be determined | ||
::: Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise" | ::: Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise" | ||
:: ''Bemerkung: Indizes starten mit Null!'' | :: ''Bemerkung: Indizes starten mit Null!'' | ||
===Polygonverzeichnis der Kanten=== | |||
:: integer Mesh2_edge_polys(nMesh2_edge,Two) ; | :: integer Mesh2_edge_polys(nMesh2_edge,Two) ; | ||
::: Mesh2_edge_polys:standard_name "'''???'''" \\ yet to be determined | ::: Mesh2_edge_polys:standard_name "'''???'''" \\ yet to be determined | ||
Zeile 121: | Zeile 119: | ||
:: ''Bemerkung: Indizes starten mit Null!'' | :: ''Bemerkung: Indizes starten mit Null!'' | ||
==Topologievariable== | |||
:: integer Mesh2 ; | :: integer Mesh2 ; | ||
Zeile 135: | Zeile 133: | ||
::: Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ; \\ different from Deltares | ::: Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ; \\ different from Deltares | ||
==Koordinatentransformation== | |||
:: integer crs ; \\ value is equivalent to the EPSG code of the transformation | :: integer crs ; \\ value is equivalent to the EPSG code of the transformation |
Version vom 10. September 2010, 09:09 Uhr
Kurze Beschreibung
Ein aus beliebigen Polygonen - Dreiecke und Vierecke - aufgebautes Gitter wird beschrieben. Typische Dateitypen hierfür sind z. B. untrim_grid.dat sowie utrsub_grid.dat. Die Speicherung von Daten auf diesem Gitter, z. B. der Tiefe (Bathymetrie), wird an anderer Stelle beschrieben (siehe NetCDF Synoptische Daten im Dreiecksgitter). Ebenso werden hier keine Informationen über offene und geschlossene Kanten oder Positionen zum Einsteuern von Randwerten aufgeführt. Es wird ausschließlich die Struktur (Topologie) des Gitters beschrieben.
Die Beschreibung wurde vollständig für die staggered data Positionen node, edge und poly gestaltet.
Inhalt der Datei
Dimensionen
Siehe NetCDF Dreiecksgitter, Abschnitt "Dimensionen". Zusätzlich zu den dort angegebenen Dimensionen werden noch benötigt:
- dimensions:
- nMaxMesh2_poly_nodes = maximum number of nodes in polygon ;
Lokale Koordinaten
Knoten
- double Mesh2_node_x(nMesh2_node) ;
- Mesh2_node_x:standard_name = "projection_x_coordinate" ;
- Mesh2_node_x:long_name = "x-coordinate of 2D mesh nodes" ;
- Mesh2_node_x:units = "m" ;
- double Mesh2_node_y(nMesh2_node) ;
- Mesh2_node_y:standard_name = "projection_y_coordinate" ;
- Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ;
- Mesh2_node_y:units = "m" ;
- double Mesh2_node_x(nMesh2_node) ;
Kanten
- double Mesh2_edge_x(nMesh2_edge) ;
- Mesh2_edge_x:standard_name = "projection_x_coordinate" ;
- Mesh2_edge_x:long_name = "x-coordinate of 2D mesh edges, e.g. center of edge" ;
- Mesh2_edge_x:units = "m" ;
- Mesh2_edge_x:bounds = "Mesh2_edge_x_bnd" \\ optional
- double Mesh2_edge_y(nMesh2_edge) ;
- Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
- Mesh2_edge_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of edge" ;
- Mesh2_edge_y:units = "m" ;
- Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" \\ optional
- double Mesh2_edge_x(nMesh2_edge) ;
Polygone
- double Mesh2_poly_x(nMesh2_poly) ;
- Mesh2_poly_x:standard_name = "projection_x_coordinate" ;
- Mesh2_poly_x:long_name = "x-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;
- Mesh2_poly_x:units = "m" ;
- Mesh2_poly_x:bounds = "Mesh2_poly_x_bnd" \\ optional
- double Mesh2_poly_y(nMesh2_poly) ;
- Mesh2_poly_y:standard_name = "projection_y_coordinate" ;
- Mesh2_poly_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;
- Mesh2_poly_y:units = "m" ;
- Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" \\ optional
- double Mesh2_poly_x(nMesh2_poly) ;
(optional) Begrenzung für Kanten
- double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required
- double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required
(optional) Begrenzung für Polygone
- double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required
- double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required
Geografische Koordinaten
Knoten
- double Mesh2_node_lon(nMesh2_node) ;
- Mesh2_node_lon:standard_name = "longitude" ;
- Mesh2_node_lon:long_name = "longitude of 2D mesh nodes" ;
- Mesh2_node_lon:units = "degrees_east" ;
- double Mesh2_node_lat(nMesh2_node) ;
- Mesh2_node_lat:standard_name = "latitude" ;
- Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ;
- Mesh2_node_lat:units = "degrees_north" ;
- double Mesh2_node_lon(nMesh2_node) ;
Kanten
- double Mesh2_edge_lon(nMesh2_edge) ;
- Mesh2_edge_lon:standard_name = "longitude" ;
- Mesh2_edge_lon:long_name = "longitude of 2D mesh edges, e.g. center of edge" ;
- Mesh2_edge_lon:units = "degrees_east" ;
- Mesh2_edge_lon:bounds = "Mesh2_edge_lon_bnd" // optional
- double Mesh2_edge_lat(nMesh2_edge) ;
- Mesh2_edge_lat:standard_name = "latitude" ;
- Mesh2_edge_lat:long_name = "latitude of 2D mesh edges, e.g. center of edge" ;
- Mesh2_edge_lat:units = "degrees_north" ;
- Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" // optional
- double Mesh2_edge_lon(nMesh2_edge) ;
Polygone
- double Mesh2_poly_lon(nMesh2_poly) ;
- Mesh2_poly_lon:standard_name = "longitude" ;
- Mesh2_poly_lon:long_name = "longitude of 2D mesh polygons, e.g. center of gravity or circumcenter" ;
- Mesh2_poly_lon:units = "degrees_east" ;
- Mesh2_poly_lon:bounds = "Mesh2_poly_lon_bnd" // optional
- double Mesh2_poly_lat(nMesh2_node) ;
- Mesh2_poly_lat:standard_name = "latitude" ;
- Mesh2_poly_lat:long_name = "latitude of 2D mesh polygons, e.g. center of gravity or circumcenter" ;
- Mesh2_poly_lat:units = "degrees_north" ;
- Mesh2_poly_lat:bounds = "Mesh2_poly_lat_bnd" // optional
- double Mesh2_poly_lon(nMesh2_poly) ;
(optional) Begrenzung für Kanten
- double Mesh2_edge_lon_bnd(nMesh2_edge,Two) ; \\ no metadata required
- double Mesh2_edge_lat_bnd(nMesh2_edge,Two) ; \\ no metadata required
(optional) Begrenzung für Polygone
- double Mesh2_poly_lon_bnd(nMesh2_poly,Three) ; \\ no metadata required
- double Mesh2_poly_lat_bnd(nMesh2_poly,Three) ; \\ no metadata required
Topologische Daten
Knotenverzeichnis der Kanten
- integer Mesh2_edge_nodes(nMesh2_edge,Two) ;
- Mesh2_edge_nodes:standard_name = "???" \\ yet to be determined
- Mesh2_edge_nodes:long_name = "list of nodes for all edges, start node - end node"
- Bemerkung: Indizes starten mit Null!
- integer Mesh2_edge_nodes(nMesh2_edge,Two) ;
Knotenverzeichnis der Polygone
- integer Mesh2_poly_nodes(nMesh2_poly,Three) ;
- Mesh2_poly_nodes:standard_name = "???" \\ yet to be determined
- Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise"
- Bemerkung: Indizes starten mit Null!
- integer Mesh2_poly_nodes(nMesh2_poly,Three) ;
Polygonverzeichnis der Kanten
- integer Mesh2_edge_polys(nMesh2_edge,Two) ;
- Mesh2_edge_polys:standard_name "???" \\ yet to be determined
- Mesh2_edge_polys:long_name = "list of (adjacent) polygons for all edges - left and right neigbour polygon"
- Mesh2_edge_polys:_FillValue = fillvalue \\ indicates missing neighbour polygon, e.g. at domain boundaries
- Bemerkung: Indizes starten mit Null!
- integer Mesh2_edge_polys(nMesh2_edge,Two) ;
Topologievariable
- integer Mesh2 ;
- Mesh2:standard_name = "???" \\ yet to be determined ;
- Mesh2:long_name = "can be used to store a name for the grid" ;
- Mesh2:dimensionality = 2 ; \\ flat mesh, no three-dimensional elements;
- Mesh2:locations = "node edge poly" \\ data can be assigned to these locations ;
- Mesh2:node_coordinates = "Mesh2_node_lon Mesh2_node_lat" ;
- Mesh2:edge_coordinates = "Mesh2_edge_lon Mesh2_edge_lat" ;
- Mesh2:poly_coordinates = "Mesh2_poly_lon Mesh2_poly_lat" ;
- Mesh2:poly_node_connectivity = "Mesh2_poly_nodes" ;
- Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
- Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ; \\ different from Deltares
- integer Mesh2 ;
Koordinatentransformation
- integer crs ; \\ value is equivalent to the EPSG code of the transformation
- 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 ;
- integer crs ; \\ value is equivalent to the EPSG code of the transformation
Anmerkungen, Fragen
- Datei nutzt Deltares-CF-Erweiterungen. Ausnahme ist das Attribut edge_poly_cennectivity in der Topologievariable.
- Können auch für Kanten bounds angegeben werden?
- Müssen die Begrenzungen für beide Koordinatensysteme angegeben werden?
- Müssen die Indizes unbedingt mit Null starten?
- Die Beschreibung der Koordinatentransformation ist für UTM- und Gauß-Krüger-Koordinaten geeignet.
zurück zu NetCDF