Aktionen

NetCDF Dreiecksgitter: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
(Text wurde aktualisiert)
imported>Lang Guenther
(Text wurde aktualisiert)
Zeile 1: Zeile 1:
[[en:NetCDF triangular grid]]
[[en:NetCDF unstructured grid]]
=Kurze Beschreibung=
=Kurze Beschreibung=


Ein aus Dreiecken aufgebautes Gitter wird beschrieben. Typische Dateitypen hierfür sind z. B.
Ein aus beliebigen Faces (Polygonen) - Dreiecke und Vierecke - aufgebautes Gitter wird beschrieben. Typische Dateitypen hierfür sind z. B. [[UNTRIM_GRID.DAT|untrim_grid.dat]] sowie [[UTRSUB_GRID.DAT|utrsub_grid.dat]].
[[GITTER05.DAT und GITTER05.BIN|gitter05.dat, gitter05.bin]] sowie [[SELAFIN|selafin]].
Es könnte sich aber auch um ein spezielles, ausschließlich aus Dreiecken aufgebautes Gitter
des Typs [[UNTRIM_GRID.DAT|untrim_grid.dat]] handeln.  
Die Speicherung von Daten auf diesem Gitter, z. B. der Tiefe (Bathymetrie), wird an anderer Stelle
Die Speicherung von Daten auf diesem Gitter, z. B. der Tiefe (Bathymetrie), wird an anderer Stelle
beschrieben (siehe [[NetCDF Synoptische Daten im Dreiecksgitter]]).  
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
Ebenso werden hier keine Informationen über offene und geschlossene Kanten oder Positionen zum  
die Struktur (Topologie) des Gitters beschrieben.  
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'' Positionen ''node'', ''edge'' und ''face''  
Die Beschreibung wurde möglichst vollständig für die ''staggered data'' Postionen ''node'', ''edge'' und ''face''  
(Polygon) gestaltet, auch wenn für einzelne der o. g. Dateitypen nur ein Teil der nachfolgend genannten Daten benötigt wird.
(Polygon) gestaltet, auch wenn für einzelne der o. g. Dateitypen nur ein Teil der nachfolgend genannten Daten benötigt wird.


Die Konzeption ist eng mit der  
Die Konzeption ist eng mit der  
[http://ugrid-conventions.github.io/ugrid-conventions/#2d-triangular-mesh-topology ''2D triangular mesh topology'']  
[http://ugrid-conventions.github.io/ugrid-conventions/#2d-flexible-mesh-mixed-triangles-quadrilaterals-etc-topology ''2D flexible mesh (mixed triangles, quadrilaterals, etc.) topology'']  
der [http://ugrid-conventions.github.io/ugrid-conventions ''UGRID Conventions''] verknüpft. Alle  
der [http://ugrid-conventions.github.io/ugrid-conventions ''UGRID Conventions''] verknüpft. Alle  
Abweichungen/Erweiterungen von den ''UGRID Conventions'' sind nachfolgend in der Farbe  
Abweichungen/Erweiterungen von den ''UGRID Conventions'' sind nachfolgend in der Farbe  
Zeile 25: Zeile 21:
# '''nMesh2_node''' : Anzahl der ''Knoten''.
# '''nMesh2_node''' : Anzahl der ''Knoten''.
# '''nMesh2_edge''' : Anzahl der ''Kanten''.
# '''nMesh2_edge''' : Anzahl der ''Kanten''.
# '''nMesh2_face''' : Anzahl der ''Faces'' (''Polygone'') - hier Dreiecke.
# '''nMesh2_face''' : Anzahl der ''Faces'' (''Polygone'').
# '''nMaxMesh2_face_nodes''' : maximale Anzahl der Knoten/Kanten in einem Face (Polygon).
# '''two''' : Konstante ( = 2 ).
# '''two''' : Konstante ( = 2 ).
# '''three''' : Konstante ( = 3 ).


==Lokale Koordinaten==
==Lokale Koordinaten==
===Knoten===
===Knoten===
double Mesh2_node_x(nMesh2_node) ;
double Mesh2_node_x(nMesh2_node) ;
: Mesh2_node_x:long_name = "x-coordinate of 2D mesh nodes" ;
: Mesh2_node_x:long_name = "x-Koordinate der Knoten eines 2D-Gitters" ;
: Mesh2_node_x:units = "m" ;
: Mesh2_node_x:units = "m" ;
: Mesh2_node_x:name_id = 1650 ;
: Mesh2_node_x:name_id = 1650 ;
: Mesh2_node_x:standard_name = "projection_x_coordinate" ;
: Mesh2_node_x:standard_name = "projection_x_coordinate" ;
double Mesh2_node_y(nMesh2_node) ;
double Mesh2_node_y(nMesh2_node) ;
: Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ;
: Mesh2_node_y:long_name = "y-Koordinate der Knoten eines 2D-Gitters" ;
: Mesh2_node_y:units = "m" ;
: Mesh2_node_y:units = "m" ;
: Mesh2_node_y:name_id = 1651 ;
: Mesh2_node_y:name_id = 1651 ;
: Mesh2_node_y:standard_name = "projection_y_coordinate" ;
: Mesh2_node_y:standard_name = "projection_y_coordinate" ;
Hinweise:
Hinweise:
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Zeile 47: Zeile 43:
===Kanten===
===Kanten===
double Mesh2_edge_x(nMesh2_edge) ;
double Mesh2_edge_x(nMesh2_edge) ;
: Mesh2_edge_x:long_name = "x-coordinate of 2D mesh edges" ;
: Mesh2_edge_x:long_name = "x-Koordinate der Kanten eines 2D-Gitters, Kantenmitte" ;
: Mesh2_edge_x:units = "m" ;
: Mesh2_edge_x:units = "m" ;
: Mesh2_edge_x:name_id = 1650 ;
: Mesh2_edge_x:name_id = 1650 ;
Zeile 53: Zeile 49:
: Mesh2_edge_x:standard_name = "projection_x_coordinate" ;
: Mesh2_edge_x:standard_name = "projection_x_coordinate" ;
double Mesh2_edge_y(nMesh2_edge) ;
double Mesh2_edge_y(nMesh2_edge) ;
: Mesh2_edge_y:long_name = "y-coordinate of 2D mesh edges" ;
: Mesh2_edge_y:long_name = "y-Koordinate der Kanten eines 2D-Gitters, Kantenmitte" ;
: Mesh2_edge_y:units = "m" ;
: Mesh2_edge_y:units = "m" ;
: Mesh2_edge_y:name_id = 1651 ;
: Mesh2_edge_y:name_id = 1651 ;
: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" ;
: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" ;
: Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
: Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
Hinweise:
Hinweise:
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Zeile 63: Zeile 60:
===Faces (Polygone)===
===Faces (Polygone)===
double Mesh2_face_x(nMesh2_face) ;
double Mesh2_face_x(nMesh2_face) ;
: Mesh2_face_x:long_name = "x-coordinate of 2D mesh faces (polygons), center of gravity" ;
: Mesh2_face_x:long_name = "x-Koordinate der Faces (Polygone) eines 2D-Gitters, Schwerpunkt" ;
: Mesh2_face_x:units = "m" ;
: Mesh2_face_x:units = "m" ;
: Mesh2_face_x:name_id = 1650 ;
: Mesh2_face_x:name_id = 1650 ;
Zeile 69: Zeile 66:
: Mesh2_face_x:standard_name = "projection_x_coordinate" ;
: Mesh2_face_x:standard_name = "projection_x_coordinate" ;
double Mesh2_face_y(nMesh2_face) ;
double Mesh2_face_y(nMesh2_face) ;
: Mesh2_face_y:long_name = "y-coordinate of 2D mesh faces (polygons), center of gravity" ;
: Mesh2_face_y:long_name = "y-Koordinate der Faces (Polygone) eines 2D-Gitters, Schwerpunkt" ;
: Mesh2_face_y:units = "m" ;
: Mesh2_face_y:units = "m" ;
: Mesh2_face_y:name_id = 1651 ;
: Mesh2_face_y:name_id = 1651 ;
: Mesh2_face_y:bounds = "Mesh2_face_y_bnd" ;
: Mesh2_face_y:bounds = "Mesh2_face_y_bnd" ;
: Mesh2_face_y:standard_name = "projection_y_coordinate" ;
: 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:
Hinweise:
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
# 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.
# 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===
===(optional) Begrenzung für Kanten===
Zeile 84: Zeile 94:


===(optional) Begrenzung für Faces (Polygone)===
===(optional) Begrenzung für Faces (Polygone)===
double Mesh2_face_x_bnd(nMesh2_face, three) ; \\ keine Metadaten erforderlich
double Mesh2_face_x_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;
: Mesh2_face_x_bnd:_FillValue = ''fillvalue'' ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert


double Mesh2_face_y_bnd(nMesh2_face, three) ; \\ keine Metadaten erforderlich
double Mesh2_face_y_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;
: Mesh2_face_y_bnd:_FillValue = ''fillvalue'' ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert


Hinweise:
Hinweise:
# Koordinaten der Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.
# Koordinaten der Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
# Es dürfen ungültige Koordinaten vorhanden sein.


==Geografische Koordinaten==
==Geografische Koordinaten==
===Knoten===
===Knoten===
double Mesh2_node_lon(nMesh2_node) ;
double Mesh2_node_lon(nMesh2_node) ;
: Mesh2_node_lon:long_name = "longitude of 2D mesh nodes" ;
: Mesh2_node_lon:long_name = "geografische Laenge der Knoten eines 2D-Gitters" ;
: Mesh2_node_lon:units = "degrees_east" ;
: Mesh2_node_lon:units = "degrees_east" ;
: Mesh2_node_lon:name_id = 1653 ;
: Mesh2_node_lon:name_id = 1653 ;
: Mesh2_node_lon:standard_name = "longitude" ;
: Mesh2_node_lon:standard_name = "longitude" ;
double Mesh2_node_lat(nMesh2_node) ;
double Mesh2_node_lat(nMesh2_node) ;
: Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ;
: Mesh2_node_lat:long_name = "geografische Breite der Knoten eines 2D-Gitters" ;
: Mesh2_node_lat:units = "degrees_north" ;
: Mesh2_node_lat:units = "degrees_north" ;
: Mesh2_node_lat:name_id = 1652 ;
: Mesh2_node_lat:name_id = 1652 ;
: Mesh2_node_lat:standard_name = "latitude" ;
: Mesh2_node_lat:standard_name = "latitude" ;
Hinweise:
Hinweise:
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Zeile 109: Zeile 122:
===Kanten===
===Kanten===
double Mesh2_edge_lon(nMesh2_edge) ;
double Mesh2_edge_lon(nMesh2_edge) ;
: Mesh2_edge_lon:long_name = "longitude of 2D mesh edge centers" ;
: Mesh2_edge_lon:long_name = "geografische Laenge der Kanten eines 2D-Gitters, Kantenmitte" ;
: Mesh2_edge_lon:units = "degrees_east" ;
: Mesh2_edge_lon:units = "degrees_east" ;
: Mesh2_edge_lon:name_id = 1653 ;
: Mesh2_edge_lon:name_id = 1653 ;
Zeile 115: Zeile 128:
: Mesh2_edge_lon:standard_name = "longitude" ;
: Mesh2_edge_lon:standard_name = "longitude" ;
double Mesh2_edge_lat(nMesh2_edge) ;
double Mesh2_edge_lat(nMesh2_edge) ;
: Mesh2_edge_lat:long_name = "latitude of 2D mesh edge centers" ;
: Mesh2_edge_lat:long_name = "geografische Breite der Kanten eines 2D-Gitters, Kantenmitte" ;
: Mesh2_edge_lat:units = "degrees_north" ;
: Mesh2_edge_lat:units = "degrees_north" ;
: Mesh2_edge_lat:name_id = 1652 ;
: Mesh2_edge_lat:name_id = 1652 ;
: Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" ;
: Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" ;
: Mesh2_edge_lat:standard_name = "latitude" ;
: Mesh2_edge_lat:standard_name = "latitude" ;
Hinweise:
Hinweise:
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
Zeile 125: Zeile 139:
===Faces (Polygone)===
===Faces (Polygone)===
double Mesh2_face_lon(nMesh2_face) ;
double Mesh2_face_lon(nMesh2_face) ;
: Mesh2_face_lon:long_name = "longitude of 2D mesh faces (polygons), center of gravity" ;
: Mesh2_face_lon:long_name = "geografische Laenge der Faces (Polygone) eines 2D-Gitters, Schwerpunkt" ;
: Mesh2_face_lon:units = "degrees_east" ;
: Mesh2_face_lon:units = "degrees_east" ;
: Mesh2_face_lon:name_id = 1653 ;
: Mesh2_face_lon:name_id = 1653 ;
Zeile 131: Zeile 145:
: Mesh2_face_lon:standard_name = "longitude" ;
: Mesh2_face_lon:standard_name = "longitude" ;
double Mesh2_face_lat(nMesh2_face) ;
double Mesh2_face_lat(nMesh2_face) ;
: Mesh2_face_lat:long_name = "latitude of 2D mesh faces (polygons), center of gravity" ;
: Mesh2_face_lat:long_name = "geografische Breite der Faces (Polygone) eines 2D-Gitters , Schwerpunkt" ;
: Mesh2_face_lat:units = "degrees_north" ;
: Mesh2_face_lat:units = "degrees_north" ;
: Mesh2_face_lat:name_id = 1652 ;
: Mesh2_face_lat:name_id = 1652 ;
: Mesh2_face_lat:bounds = "Mesh2_face_lat_bnd" ;
: Mesh2_face_lat:bounds = "Mesh2_face_lat_bnd" ;
: Mesh2_face_lat:standard_name = "latitude" ;
: 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:
Hinweise:
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
# 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.
# 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===
===(optional) Begrenzung für Kanten===
double Mesh2_edge_lon_bnd(nMesh2_edge,two) ; \\ keine Metadaten erforderlich
double Mesh2_edge_lon_bnd(nMesh2_edge, two) ; \\ keine Metadaten erforderlich


double Mesh2_edge_lat_bnd(nMesh2_edge,two) ; \\ keine Metadaten erforderlich
double Mesh2_edge_lat_bnd(nMesh2_edge, two) ; \\ keine Metadaten erforderlich


===(optional) Begrenzung für Faces (Polygone)===
===(optional) Begrenzung für Faces (Polygone)===
double Mesh2_face_lon_bnd(nMesh2_face,three) ; \\ keine Metadaten erforderlich
double Mesh2_face_lon_bnd(nMesh2_face, nMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert
: Mesh2_face_lon_bnd:_FillValue = ''fillvalue'' ;


double Mesh2_face_lat_bnd(nMesh2_face,three) ; \\ keine Metadaten erfroderlich
double Mesh2_face_lat_bnd(nMesh2_face, nMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert
: Mesh2_face_lat_bnd:_FillValue = ''fillvalue'' ;


Hinweise:
Hinweise:
# Koordinaten der Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.
# Koordinaten der Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
# Es dürfen ungültigen Koordinaten vorhanden sein.


==Topologische Daten==
==Topologische Daten==
Von den nachfolgenden topologischen Daten müssen nicht alle vorhanden sein. Es muss alllerdings sichergestellt sein, dass fehlende Verzeichnisse aus den vorhandenen abgeleitet werden können.


===Knotenverzeichnis der Kanten===
===Knotenverzeichnis der Kanten===
int Mesh2_edge_nodes(nMesh2_edge,two) ;
int Mesh2_edge_nodes(nMesh2_edge, two) ;
: Mesh2_edge_nodes:long_name = "list of nodes for all edges, start node - end node" ;
: Mesh2_edge_nodes:long_name = "Knotenverzeichnis der Kanten, Anfangs- und Endpunkt" ;
: Mesh2_edge_nodes:cf_role= "edge_node_connectivity" ;
: Mesh2_edge_nodes:cf_role= "edge_node_connectivity" ;
: Mesh2_edge_nodes:start_index = 0 ;
: Mesh2_edge_nodes:start_index = 0;


Hinweise:
Hinweise:
# Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
# Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
===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:cf_role = "<font color=darkorange>edge_face_connectivity</font>" ;
: Mesh2_edge_faces:start_index = 0 ;
: 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|untrim_grid.dat]] und [[UTRSUB_GRID.DAT|utrsub_grid.dat]] benötigt.


===Knotenverzeichnis der Faces (Polygone)===
===Knotenverzeichnis der Faces (Polygone)===
int Mesh2_face_nodes(nMesh2_face, three) ;
int Mesh2_face_nodes(nMesh2_face, nMaxMesh2_face_nodes) ;
: Mesh2_face_nodes:long_name = "list of nodes for all faces (polygons), counterclockwise" ;
: Mesh2_face_nodes:long_name = "Knotenverzeichnis der Faces (Polygone), entgegen dem Uhrzeigersinn" ;
: Mesh2_face_nodes:cf_role = "face_node_connectivity" ;
: Mesh2_face_nodes:cf_role = "face_node_connectivity" ;
: Mesh2_face_nodes:start_index = 0 ;
: mesh2_face_nodes:start_index = 0 ;
: Mesh2_face_nodes:_FillValue = -999 ;


Hinweise:
Hinweise:
# Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
# 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.


===Kantenverzeichnis der Faces (Polygone)===
===Kantenverzeichnis der Faces (Polygone)===
int Mesh2_face_edges(nMesh2_face,three) ;
int Mesh2_face_edges(nMesh2_face, nMaxMesh2_face_nodes) ;
: Mesh2_face_edges:long_name = "list of edges for all faces (polygons), counterclockwise" ;
: Mesh2_face_edges:long_name = "Kantenverzeichnis der Faces (Polygone), entgegen dem Uhrzeigersinn" ;
: Mesh2_face_edges:cf_role= "face_edge_connectivity" ;
: Mesh2_face_edges:cf_role = "face_edge_connectivity" ;
: Mesh2_face_edges:start_index = 0;
: Meshe_face_edges:start_index = 0 ;
: Mesh2_face_edges:_FillValue = -999 ;


Hinweise:
Hinweise:
# Kanten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
# Kanten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
 
# Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
===Face- (Polygon-) Verzeichnis der Kanten===
# Nicht vorhandene Kanten müssen für jedes Face (Polygon) die letzten Einträge sein.
int Mesh2_edge_faces(nMesh2_edge,two) ;
: Mesh2_edge_faces:long_name = "list of (adjacent) faces (polygons) for all edges - left and right neigbour" ;
: Mesh2_edge_faces:cf_role = "<font color=darkorange>edge_face_connectivity</font>" ;
: Mesh2_edge_faces:_FillValue = ''fillvalue'' ;
: Mesh2_edge_faces:start_index = 0;
 
Hinweise:
# Der erste Wert kennzeichnet das linke, der zweite das rechte Nachbarpolygon.
# Mit dem "_FillValue" können Kanten auf dem Rand, die nur ein Nachbarpolygon haben, beschrieben werden.


==Topologievariable==
==Topologievariable==
int Mesh2 ;
int Mesh2 ;
: Mesh2:long_name = "name of grid can be stored here" ;
: Mesh2:long_name = "UnTRIM Gitternetz, Drei- und Vierecke gemischt, kein SubGrid" ;
: Mesh2:cf_role= "mesh_topology" ;                                                     \\ UGRID required
: Mesh2:cf_role = "mesh_topology" ; \\ UGRID required
: Mesh2:topology_dimension = 2 ;                                                       \\ UGRID required
: Mesh2:topology_dimension = 2 ; \\ UGRID required
: Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y Mesh2_node_lon Mesh2_node_lat" ; \\ UGRID required
: Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y Mesh2_node_lon Mesh2_node_lat" ; \\ UGRID required
: Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ; \\ UGRID optionally required for data at edges
: Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ; \\ UGRID optionally required for data at edges
: Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y Mesh2_face_lon Mesh2_face_lat" ; \\ UGRID optionally required for data at faces
: Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y Mesh2_face_lon Mesh2_face_lat Mesh2_face_center_x Mesh2_face_center_y Mesh2_face_center_lon Mesh2_face_center_lat" ; \\ UGRID optionally required for data at faces
: Mesh2:face_node_connectivity = "Mesh2_face_nodes" ;                                 \\ UGRID required
: Mesh2:face_node_connectivity = "Mesh2_face_nodes" ; \\ UGRID required
: Mesh2:face_edge_connectivity = "Mesh2_face_edges" ;                                 \\ UGRID optional
: Mesh2:face_edge_connectivity = "Mesh2_face_edges" ; \\ UGRID optional  
: Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;                                 \\ UGRID optionally required for data at edges
: Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ; \\ UGRID optional
: Mesh2:<font color=darkorange>edge_face_connectivity</font> = "Mesh2_edge_faces" ;   \\
: Mesh2:<font color=darkorange>edge_face_connectivity</font> = "Mesh2_edge_faces" ;


Hinweise:
Hinweise:
# In der Praxis müssen nicht alle Verknüpfungslisten (''connectivity'') angegeben werden, da manche Informationen redundant sind.
# 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 in [http://ugrid-conventions.github.io/ugrid-conventions/#2d-triangular-mesh-topology ''2D triangular mesh topology''] aufgeführten Attribute ''face_dimension'' und ''edge_dimension'' werden in der BAW nicht unterstützt. Dies ist auch nicht erforderlich, da die Reihenfolge der Dimensionen in den Konnektivitäts-Variablen standardkonform sind.
# Die in [http://ugrid-conventions.github.io/ugrid-conventions/#2d-triangular-mesh-topology ''2D triangular mesh topology''] aufgeführten Attribute ''face_dimension'' und ''edge_dimension'' werden in der BAW nicht unterstützt. Dies ist auch nicht erforderlich, da die Reihenfolge der Dimensionen in den Konnektivitäts-Variablen standardkonform sind.


==Koordinatentransformation==
==Koordinatentransformation==


Siehe unter [[NetCDF Grid Mapping Variable]].
* Siehe unter [[NetCDF Grid Mapping Variable]].


----
----

Version vom 15. April 2016, 06:48 Uhr

Kurze Beschreibung

Ein aus beliebigen Faces (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 möglichst vollständig für die staggered data Postionen node, edge und face (Polygon) gestaltet, auch wenn für einzelne der o. g. Dateitypen nur ein Teil der nachfolgend genannten Daten benötigt wird.

Die Konzeption ist eng mit der 2D flexible mesh (mixed triangles, quadrilaterals, etc.) topology der UGRID Conventions verknüpft. Alle Abweichungen/Erweiterungen von den UGRID Conventions sind nachfolgend in der Farbe darkorange farblich hervorgehoben.

Inhalt der Datei

Dimensionen

  1. nMesh2_node : Anzahl der Knoten.
  2. nMesh2_edge : Anzahl der Kanten.
  3. nMesh2_face : Anzahl der Faces (Polygone).
  4. nMaxMesh2_face_nodes : maximale Anzahl der Knoten/Kanten in einem Face (Polygon).
  5. 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:

  1. 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:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.

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:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. Sowohl die Koordinaten des Schwerpunkts als auch des Umkreismittelpunkts werden gespeichert.
  3. Der Schwerpunkt liegt immer innerhalb des (konvexen) Polygons, daher kann das Attribut "bounds" sinnvoll angegeben werden.
  4. 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) ; \\ keine Metadaten erforderlich

double Mesh2_edge_y_bnd(nMesh2_edge, two) ; \\ keine Metadaten erforderlich

(optional) Begrenzung für Faces (Polygone)

double Mesh2_face_x_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;

Mesh2_face_x_bnd:_FillValue = fillvalue ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert

double Mesh2_face_y_bnd(nMesh2_face, nMaxMesh2_face_nodes) ;

Mesh2_face_y_bnd:_FillValue = fillvalue ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert

Hinweise:

  1. Koordinaten der Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
  2. 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:

  1. 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:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.

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:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. Sowohl die Koordinaten des Schwerpunkts als auch des Umkreismittelpunkts werden gespeichert.
  3. Der Schwerpunkt liegt immer innerhalb des (konvexen) Polygons, daher kann das Attribut "bounds" sinnvoll angegeben werden.
  4. 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) ; \\ keine Metadaten erforderlich

double Mesh2_edge_lat_bnd(nMesh2_edge, two) ; \\ keine Metadaten erforderlich

(optional) Begrenzung für Faces (Polygone)

double Mesh2_face_lon_bnd(nMesh2_face, nMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert

Mesh2_face_lon_bnd:_FillValue = fillvalue ;

double Mesh2_face_lat_bnd(nMesh2_face, nMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nMaxMesh2_face_nodes definiert

Mesh2_face_lat_bnd:_FillValue = fillvalue ;

Hinweise:

  1. Koordinaten der Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
  2. 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:cf_role= "edge_node_connectivity" ;
Mesh2_edge_nodes:start_index = 0;

Hinweise:

  1. Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.

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:cf_role = "edge_face_connectivity" ;
Mesh2_edge_faces:start_index = 0 ;
Mesh2_edge_faces:_FillValue = -999 ;

Hinweise:

  1. Der erste Wert kennzeichnet das linke, der zweite das rechte Nachbarpolygon.
  2. Auf Kanten des Randes darf das rechte Nachbarpolgon fehlen; _FillValue verwenden.
  3. Daraus kann die Anzahl der inneren Kanten NSI abgeleitet werden.
  4. NSI wird für Dateien des Typs untrim_grid.dat und utrsub_grid.dat benötigt.

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:cf_role = "face_node_connectivity" ;
mesh2_face_nodes:start_index = 0 ;
Mesh2_face_nodes:_FillValue = -999 ;

Hinweise:

  1. Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.
  2. Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
  3. Nicht vorhandene Knoten müssen für jedes Face (Polygon) die letzten Einträge sein.

Kantenverzeichnis der Faces (Polygone)

int Mesh2_face_edges(nMesh2_face, nMaxMesh2_face_nodes) ;

Mesh2_face_edges:long_name = "Kantenverzeichnis der Faces (Polygone), entgegen dem Uhrzeigersinn" ;
Mesh2_face_edges:cf_role = "face_edge_connectivity" ;
Meshe_face_edges:start_index = 0 ;
Mesh2_face_edges:_FillValue = -999 ;

Hinweise:

  1. Kanten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
  2. Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
  3. Nicht vorhandene Kanten müssen für jedes Face (Polygon) die letzten Einträge sein.

Topologievariable

int Mesh2 ;

Mesh2:long_name = "UnTRIM Gitternetz, Drei- und Vierecke gemischt, kein SubGrid" ;
Mesh2:cf_role = "mesh_topology" ; \\ UGRID required
Mesh2:topology_dimension = 2 ; \\ UGRID required
Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y Mesh2_node_lon Mesh2_node_lat" ; \\ UGRID required
Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ; \\ UGRID optionally required for data at edges
Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y Mesh2_face_lon Mesh2_face_lat Mesh2_face_center_x Mesh2_face_center_y Mesh2_face_center_lon Mesh2_face_center_lat" ; \\ UGRID optionally required for data at faces
Mesh2:face_node_connectivity = "Mesh2_face_nodes" ; \\ UGRID required
Mesh2:face_edge_connectivity = "Mesh2_face_edges" ; \\ UGRID optional
Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ; \\ UGRID optional
Mesh2:edge_face_connectivity = "Mesh2_edge_faces" ;

Hinweise:

  1. In der Praxis müssen nicht alle Verknüpfungslisten (connectivity) angegeben werden, da manche Informationen redundant sind. Sie sollten aber angegeben werden können.
  2. Die in 2D triangular mesh topology aufgeführten Attribute face_dimension und edge_dimension werden in der BAW nicht unterstützt. Dies ist auch nicht erforderlich, da die Reihenfolge der Dimensionen in den Konnektivitäts-Variablen standardkonform sind.

Koordinatentransformation


zurück zu NetCDF


Strukturübersicht