NetCDF Dreiecksgitter
Aus BAWiki
Kurze Beschreibung
Ein aus Dreiecken aufgebautes Gitter wird beschrieben. Typische Dateitypen hierfür sind z. B. gitter05.dat, gitter05.bin sowie selafin. Es könnte sich aber auch um ein spezielles, ausschließlich aus Dreiecken aufgebautes Gitter des Typs untrim_grid.dat handeln. 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 möglichst vollständig für die staggered data Postionen node, edge und poly gestaltet, auch wenn für einzelne der o. g. Dateitypen nur ein Teil der nachfolgend genannten Daten benötigt wird.
Inhalt der Datei
Dimensionen
- nMesh2_node : Anzahl der Knoten.
- nMesh2_edge : Anzahl der Kanten.
- nMesh2_poly : Anzahl der Polygone (hier Dreiecke).
- two : Konstante ( = 2 ).
- three : Konstante ( = 3 ).
Lokale Koordinaten
Knoten
double Mesh2_node_x(nMesh2_node) ;
- Mesh2_node_x:long_name = "x-coordinate of 2D mesh nodes" ;
- Mesh2_node_x:units = "m" ;
- Mesh2_node_x:name_id = 1650 ;
- Mesh2_node_x:standard_name = "projection_x_coordinate" ;
double Mesh2_node_y(nMesh2_node) ;
- Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ;
- Mesh2_node_y:units = "m" ;
- Mesh2_node_y:name_id = 1651 ;
- Mesh2_node_y:standard_name = "projection_y_coordinate" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Kanten
double Mesh2_edge_x(nMesh2_edge) ;
- Mesh2_edge_x:long_name = "x-coordinate of 2D mesh edges" ;
- Mesh2_edge_x:units = "m" ;
- Mesh2_edge_x:name_id = 1650 ;
- Mesh2_edge_x:bounds = "Mesh2_edge_x_bnd" ;
- Mesh2_edge_x:standard_name = "projection_x_coordinate" ;
double Mesh2_edge_y(nMesh2_edge) ;
- Mesh2_edge_y:long_name = "y-coordinate of 2D mesh edges" ;
- Mesh2_edge_y:units = "m" ;
- Mesh2_edge_y:name_id = 1651 ;
- Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" ;
- Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Polygone
double Mesh2_poly_x(nMesh2_poly) ;
- Mesh2_poly_x:long_name = "x-coordinate of 2D mesh polygons, center of gravity" ;
- Mesh2_poly_x:units = "m" ;
- Mesh2_poly_x:name_id = 1650 ;
- Mesh2_poly_x:bounds = "Mesh2_poly_x_bnd" ;
- Mesh2_poly_x:standard_name = "projection_x_coordinate" ;
double Mesh2_poly_y(nMesh2_poly) ;
- Mesh2_poly_y:long_name = "y-coordinate of 2D mesh polygons, center of gravity" ;
- Mesh2_poly_y:units = "m" ;
- Mesh2_poly_y:name_id = 1651 ;
- Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" ;
- Mesh2_poly_y:standard_name = "projection_y_coordinate" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- Als Zentrum wird hier der Schwerpunkt des Polygons benutzt, da dieser bei konvexen Polygonen immer innerhalb des Polygons zu liegen kommt. Demgegenüber muss das Zentrum des Umkreises nicht in das Polygon fallen.
(optional) Begrenzung für Kanten
double Mesh2_edge_x_bnd(nMesh2_edge, two) ;
double Mesh2_edge_y_bnd(nMesh2_edge, two) ;
(optional) Begrenzung für Polygone
double Mesh2_poly_x_bnd(nMesh2_poly, three) ;
double Mesh2_poly_y_bnd(nMesh2_poly, three) ;
Hinweise:
- Koordinaten der Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
Geografische Koordinaten
Knoten
double Mesh2_node_lon(nMesh2_node) ;
- Mesh2_node_lon:long_name = "longitude of 2D mesh nodes" ;
- Mesh2_node_lon:units = "degrees_east" ;
- Mesh2_node_lon:name_id = 1653 ;
- Mesh2_node_lon:standard_name = "longitude" ;
double Mesh2_node_lat(nMesh2_node) ;
- Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ;
- Mesh2_node_lat:units = "degrees_north" ;
- Mesh2_node_lat:name_id = 1652 ;
- Mesh2_node_lat:standard_name = "latitude" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Kanten
double Mesh2_edge_lon(nMesh2_edge) ;
- Mesh2_edge_lon:long_name = "longitude of 2D mesh edge centers" ;
- Mesh2_edge_lon:units = "degrees_east" ;
- Mesh2_edge_lon:name_id = 1653 ;
- Mesh2_edge_lon:bounds = "Mesh2_edge_lon_bnd" ;
- Mesh2_edge_lon:standard_name = "longitude" ;
double Mesh2_edge_lat(nMesh2_edge) ;
- Mesh2_edge_lat:long_name = "latitude of 2D mesh edge centers" ;
- Mesh2_edge_lat:units = "degrees_north" ;
- Mesh2_edge_lat:name_id = 1652 ;
- Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" ;
- Mesh2_edge_lat:standard_name = "latitude" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Polygone
double Mesh2_poly_lon(nMesh2_poly) ;
- Mesh2_poly_lon:long_name = "longitude of 2D mesh polygons, center of gravity" ;
- Mesh2_poly_lon:units = "degrees_east" ;
- Mesh2_poly_lon:name_id = 1653 ;
- Mesh2_poly_lon:bounds = "Mesh2_poly_lon_bnd" ;
- Mesh2_poly_lon:standard_name = "longitude" ;
double Mesh2_poly_lat(nMesh2_poly) ;
- Mesh2_poly_lat:long_name = "latitude of 2D mesh polygons, center of gravity" ;
- Mesh2_poly_lat:units = "degrees_north" ;
- Mesh2_poly_lat:name_id = 1652 ;
- Mesh2_poly_lat:bounds = "Mesh2_poly_lat_bnd" ;
- Mesh2_poly_lat:standard_name = "latitude" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
(optional) Begrenzung für Kanten
double Mesh2_edge_lon_bnd(nMesh2_edge,two) ;
double Mesh2_edge_lat_bnd(nMesh2_edge,two) ;
(optional) Begrenzung für Polygone
double Mesh2_poly_lon_bnd(nMesh2_poly,three) ;
double Mesh2_poly_lat_bnd(nMesh2_poly,three) ;
Hinweise:
- Koordinaten der Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
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
int Mesh2_poly_nodes(nMesh2_poly, three) ;
- Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise" ;
Hinweise:
- Ein Standardname sollte gelegentlich ergänzt werden.
- Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
- Indizes starten mit Null!
Kantenverzeichnis der Polygone
- integer Mesh2_poly_edges(nMesh2_poly,Three) ;
- Mesh2_poly_edges:standard_name = "???" \\ yet to be determined
- Mesh2_poly_edges:long_name = "list of edges for all polygons, counterclockwise"
- Bemerkung: Indizes starten mit Null!
- integer Mesh2_poly_edges(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 = "name of grid can be stored here" ;
- Mesh2:dimensionality = 2 ; \\ flat, two-dimensional topology
- Mesh2:locations = "node edge poly" ;
- 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:edge_node_connectivity = "Mesh2_edge_nodes" ;
- Mesh2::edge_poly_connectivity = "Mesh2_edge_polys" ; \\ Deltares uses face_connectivity
- Mesh2::poly_node_connectivity = "Mesh2_poly_nodes" ;
- Mesh2::poly_edge_connectivity = "Mesh2_poly_edges" ;
- Hinweise:
- In der Praxis müssen nicht alle Verknüpfungslisten (connectivity) angegeben werden, da manche Informationen redundant sind. Sie sollten aber angegeben werden können.
- Die orange markierten Bezeichnungen stellen Abweichungen bzw. Ergänzungen zu den Deltares-CF-Erweiterungen dar.
- Der Gebrauch von poly an Stelle von face ist zu bevorzugen und entspricht dem UnTRIM-Jargon.
- Die von Deltares benutze Variable Mesh2_face_links sollte nicht verwendet werden, da sie den Gebrauch einer neuen Dimension erforderlich macht. Die Werte hierfür sollten z. B. aus edge_poly_connectivity abgeleitet werden.
- integer Mesh2 ;
Koordinatentransformation
Siehe unter NetCDF Grid Mapping Variable.
Anmerkungen, Fragen
- Datei nutzt Deltares-CF-Erweiterungen sowie orange markierte Abweichungen in der Topologievariablen.
- Können auch für Kanten bounds angegeben werden?
- Müssen die Begrenzungen für beide Koordinatensysteme angegeben werden?
zurück zu NetCDF