NetCDF Unstrukturiertes Gitter
Aus BAWiki
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 unstrukturierten Gitter). 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 face gestaltet.
Die Beschreibung wurde am 5. 4. 2012 an die Deltares-Konventionen angepasst. Die wichtigsten Änderungen sind:
- Statt poly wird face benutzt.
- In Mesh2_face_x_bnd wurde das Attribut _FillValue ergänzt.
- In Mesh2_face_y_bnd wurde das Attribut _FillValue ergänzt.
- In Mesh2_face_lon_bnd wurde das Attribut _FillValue ergänzt.
- In Mesh2_face_lat_bnd wurde das Attribut _FillValue ergänzt.
- In Mesh2_edge_nodes wurden die Attribute standard_name und start_index ergänzt.
- In Mesh2_edge_faces wurden die Attribute standard_name und start_index ergänzt.
- In Mesh2_face_nodes wurden die Attribute standard_name und start_index ergänzt.
Inhalt der Datei
Dimensionen
- nMesh2_node : Anzahl der Knoten.
- nMesh2_edge : Anzahl der Kanten.
- nMesh2_face : Anzahl der Faces (Polygone).
- nMaxMesh2_face_nodes : maximale Anzahl der Knoten/Kanten in einem Face (Polygon).
- two : Konstante ( = 2 ).
Lokale Koordinaten
Knoten
double Mesh2_node_x(nMesh2_node) ;
- Mesh2_node_x:long_name = "x-Koordinate der Knoten eines 2D-Gitters" ;
- 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-Koordinate der Knoten eines 2D-Gitters" ;
- 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-Koordinate der Kanten eines 2D-Gitters, Kantenmitte" ;
- 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-Koordinate der Kanten eines 2D-Gitters, Kantenmitte" ;
- 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.
- Das Attribut "bounds" verweist auf die Variable mit Anfangs- und Endkoordinaten aller Kanten.
Faces (Polygone)
double Mesh2_face_x(nMesh2_face) ;
- Mesh2_face_x:long_name = "x-Koordinate der Faces (Polygone) eines 2D-Gitters, Schwerpunkt" ;
- Mesh2_face_x:units = "m" ;
- Mesh2_face_x:name_id = 1650 ;
- Mesh2_face_x:bounds = "Mesh2_face_x_bnd" ;
- Mesh2_face_x:standard_name = "projection_x_coordinate" ;
double Mesh2_face_y(nMesh2_face) ;
- Mesh2_face_y:long_name = "y-Koordinate der Faces (Polygone) eines 2D-Gitters, Schwerpunkt" ;
- Mesh2_face_y:units = "m" ;
- Mesh2_face_y:name_id = 1651 ;
- Mesh2_face_y:bounds = "Mesh2_face_y_bnd" ;
- Mesh2_face_y:standard_name = "projection_y_coordinate" ;
double Mesh2_face_center_x(nMesh2_face) ;
- Mesh2_face_center_x:long_name = "x-Koordinate der Faces (Polygone) eines 2D-Gitters, Umkreismittelpunkt" ;
- Mesh2_face_center_x:units = "m" ;
- Mesh2_face_center_x:name_id = 1650 ;
- Mesh2_face_center_x:standard_name = "projection_x_coordinate" ;
double Mesh2_face_center_y(nMesh2_face) ;
- Mesh2_face_center_y:long_name = "y-Koordinate der Faces (Polygone) eines 2D-Gitters, Umkreismittelpunkt" ;
- Mesh2_face_center_y:units = "m" ;
- Mesh2_face_center_y:name_id = 1651 ;
- Mesh2_face_center_y:standard_name = "projection_y_coordinate" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- Sowohl die Koordinaten des Schwerpunkts als auch des Umkreismittelpunkts werden gespeichert.
- Der Schwerpunkt liegt immer innerhalb des (konvexen) Polygons, daher kann das Attribut "bounds" sinnvoll angegeben werden.
- Der Umkreismittelpunkt kann demgegenüber außerhalb des Polygons zu liegen kommen.
(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 Faces (Polygone)
double Mesh2_face_x_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;
- Mesh2_face_x_bnd:_FillValue = fillvalue ;
double Mesh2_face_y_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;
- Mesh2_face_y_bnd:_FillValue = fillvalue ;
Hinweise:
- Koordinaten der Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
- Es dürfen ungültige Koordinaten vorhanden sein.
Geografische Koordinaten
Knoten
double Mesh2_node_lon(nMesh2_node) ;
- Mesh2_node_lon:long_name = "geografische Laenge der Knoten eines 2D-Gitters" ;
- 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 = "geografische Breite der Knoten eines 2D-Gitters" ;
- 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 = "geografische Laenge der Kanten eines 2D-Gitters, Kantenmitte" ;
- 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 = "geografische Breite der Kanten eines 2D-Gitters, Kantenmitte" ;
- 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.
- Das Attribut "bounds" verweist auf die Variable mit Anfangs- und Endkoordinaten aller Kanten.
Faces (Polygone)
double Mesh2_face_lon(nMesh2_face) ;
- Mesh2_face_lon:long_name = "geografische Laenge der Faces (Polygone) eines 2D-Gitters, Schwerpunkt" ;
- Mesh2_face_lon:units = "degrees_east" ;
- Mesh2_face_lon:name_id = 1653 ;
- Mesh2_face_lon:bounds = "Mesh2_face_lon_bnd" ;
- Mesh2_face_lon:standard_name = "longitude" ;
double Mesh2_face_lat(nMesh2_face) ;
- Mesh2_face_lat:long_name = "geografische Breite der Faces (Polygone) eines 2D-Gitters , Schwerpunkt" ;
- Mesh2_face_lat:units = "degrees_north" ;
- Mesh2_face_lat:name_id = 1652 ;
- Mesh2_face_lat:bounds = "Mesh2_face_lat_bnd" ;
- Mesh2_face_lat:standard_name = "latitude" ;
double Mesh2_face_center_lon(nMesh2_face) ;
- Mesh2_face_center_lon:long_name = "geografische Laenge der Faces (Polygone) eines 2D-Gitters, Umkreismittelpunkt" ;
- Mesh2_face_center_lon:units = "degrees_east" ;
- Mesh2_face_center_lon:name_id = 1653 ;
- Mesh2_face_center_lon:standard_name = "longitude" ;
double Mesh2_face_center_lat(nMesh2_face) ;
- Mesh2_face_center_lat:long_name = "geografische Breite der Faces (Polygone) eines 2D-Gitters, Umkreismittelpunkt" ;
- Mesh2_face_center_lat:units = "degrees_north" ;
- Mesh2_face_center_lat:name_id = 1652 ;
- Mesh2_face_center_lat:standard_name = "latitude" ;
Hinweise:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- Sowohl die Koordinaten des Schwerpunkts als auch des Umkreismittelpunkts werden gespeichert.
- Der Schwerpunkt liegt immer innerhalb des (konvexen) Polygons, daher kann das Attribut "bounds" sinnvoll angegeben werden.
- Der Umkreismittelpunkt kann demgegenüber außerhalb des Polygons zu liegen kommen.
(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 Faces (Polygone)
double Mesh2_face_lon_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;
- Mesh2_face_lon_bnd:_FillValue = fillvalue ;
double Mesh2_face_lat_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;
- Mesh2_face_lat_bnd:_FillValue = fillvalue ;
Hinweise:
- Koordinaten der Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
- Es dürfen ungültigen Koordinaten vorhanden sein.
Topologische Daten
Knotenverzeichnis der Kanten
int Mesh2_edge_nodes(nMesh2_edge, two) ;
- Mesh2_edge_nodes:long_name = "Knotenverzeichnis der Kanten, Anfangs- und Endpunkt" ;
- Mesh2_edge_nodes:standard_name = "edge_node_connectivity" ;
- Mesh2_edge_nodes:start_index = 1 ;
Hinweise:
- Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
- Indizes starten mit dem Wert start_index!
Face- (Polygon-) Verzeichnis der Kanten
int Mesh2_edge_faces(nMesh2_edge, two) ;
- Mesh2_edge_faces:long_name = "Face- (Polygon-) Verzeichnis der Kanten, linker und rechter Nachbar" ;
- Mesh2_edge_faces:standard_name = "edge_face_connectivity" ;
- Mesh2_edge_faces:start_index = 1 ;
- Mesh2_edge_faces:_FillValue = -999 ;
Hinweise:
- Der erste Wert kennzeichnet das linke, der zweite das rechte Nachbarpolygon.
- Auf Kanten des Randes darf das rechte Nachbarpolgon fehlen; _FillValue verwenden.
- Daraus kann die Anzahl der inneren Kanten NSI abgeleitet werden.
- NSI wird für Dateien des Typs untrim_grid.dat und utrsub_grid.dat benötigt.
- Indizes starten mit dem Wert start_index!
Knotenverzeichnis der Faces (Polygone)
int Mesh2_face_nodes(nMesh2_face, nMaxMesh2_face_nodes) ;
- Mesh2_face_nodes:long_name = "Knotenverzeichnis der Faces (Polygone), entgegen dem Uhrzeigersinn" ;
- Mesh2_face_nodes:standard_name = "face_node_connectivity" ;
- mesh2_face_nodes:start_index = 1 ;
- Mesh2_face_nodes:_FillValue = -999 ;
Hinweise:
- Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.
- Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
- Nicht vorhandene Knoten müssen für jedes Face (Polygon) die letzten Einträge sein.
- Indizes starten mit start_index!
Kantenverzeichnis der Polygone
int Mesh2_poly_edges(nMesh2_poly, nMaxMesh2_poly_nodes) ;
- Mesh2_poly_edges:long_name = "Kantenverzeichnis der Polygone, entgegen dem Uhrzeigersinn" ;
- Mesh2_poly_edges:_FillValue = -999 ;
Hinweise:
- Ein Standardname sollte gelegentlich ergänzt werden.
- Kanten des Polygons entgegen dem Uhrzeigersinn angeben.
- Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
- Nicht vorhandene Kanten müssen für jedes Polygon die letzten Einträge sein.
- Indizes starten mit Null!
Topologievariable
int Mesh2 ;
- Mesh2:long_name = "UnTRIM Gitternetz, Drei- und Vierecke gemischt, kein SubGrid" ;
- Mesh2:dimensionality = 2 ;
- Mesh2:locations = "node edge poly" ;
- Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y Mesh2_node_lon Mesh2_node_lat" ;
- Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ;
- Mesh2:poly_coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat Mesh2_poly_center_x Mesh2_poly_center_y Mesh2_poly_center_lon Mesh2_poly_center_lat" ;
- Mesh2:poly_node_connectivity = "Mesh2_poly_nodes" ;
- Mesh2:poly_edge_connectivity = "Mesh2_poly_edges" ;
- Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
- Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ;
Hinweise:
- Ein Standardname sollte gelegentlich ergänzt werden.
- Mit dem Attribut "locations" werden die für das Gitter relevanten Positionen registriert.
- 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.
Koordinatentransformation
- Siehe unter NetCDF Grid Mapping Variable.
Anmerkungen, Fragen
- Datei nutzt Deltares-CF-Erweiterungen sowie orange markierte Abweichungen in der Topologievariablen.
- Datei ist CF-konform gemäß NCAS CF Compliance Checker.
zurück zu NetCDF