NetCDF Dreiecksgitter: Unterschied zwischen den Versionen
Aus BAWiki
imported>Lang Guenther (→Knotenverzeichnis der Kanten: Hinweis auf fehlenden standard_name gelöscht) |
imported>Lang Guenther (→Knotenverzeichnis der Faces (Polygone): Hinweis auf fehlenden standard_name gelöscht) |
||
Zeile 177: | Zeile 177: | ||
Hinweise: | Hinweise: | ||
# Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben. | # Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben. | ||
# Indizes starten mit ''start_index''! | # Indizes starten mit ''start_index''! |
Version vom 5. April 2012, 11:53 Uhr
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.
Die Beschreibung wurde am 5. 4. 2012 an die Deltares-Konventionen angepasst. Die wichtigsten Änderungen sind:
- statt poly wird face benutzt.
- in Mesh2_edge_nodes wurden standard_name und start_index ergänzt.
- in Mesh2_face_nodes wurden 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 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.
Faces (Polygone)
double Mesh2_face_x(nMesh2_face) ;
- Mesh2_face_x:long_name = "x-coordinate of 2D mesh faces (polygons), center of gravity" ;
- 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-coordinate of 2D mesh faces (polygons), center of gravity" ;
- 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" ;
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 Faces (Polygone)
double Mesh2_face_x_bnd(nMesh2_face, three) ;
double Mesh2_face_y_bnd(nMesh2_face, three) ;
Hinweise:
- Koordinaten der Knoten des Faces (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.
Faces (Polygone)
double Mesh2_face_lon(nMesh2_face) ;
- Mesh2_face_lon:long_name = "longitude of 2D mesh faces (polygons), center of gravity" ;
- 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 = "latitude of 2D mesh faces (polygons), center of gravity" ;
- 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" ;
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_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,three) ;
double Mesh2_face_lat_bnd(nMesh2_face,three) ;
Hinweise:
- Koordinaten der Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.
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
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: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 von start index!
Knotenverzeichnis der Faces (Polygone)
int Mesh2_face_nodes(nMesh2_face, three) ;
- Mesh2_face_nodes:long_name = "list of nodes for all faces (polygons), counterclockwise" ;
- Mesh2_face_nodes:standard_name = "face_node_connectivity" ;
- Mesh2_face_nodes:start_index = 1 ;
Hinweise:
- Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
- Indizes starten mit start_index!
Kantenverzeichnis der Faces (Polygone)
int Mesh2_face_edges(nMesh2_face,three) ;
- Mesh2_face_edges:long_name = "list of edges for all faces (polygons), counterclockwise" ;
- Mesh2_face_edges:standard_name = "face_edge_connectivity" ;
- Mesh2_face_edges:start_index = 1 ;
Hinweise:
- Kanten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
- Indizes starten mit start_index!
Polygonverzeichnis der Kanten
int Mesh2_edge_polys(nMesh2_edge,two) ;
- Mesh2_edge_polys:long_name = "list of (adjacent) polygons for all edges - left and right neigbour polygon" ;
- Mesh2_edge_polys:_FillValue = fillvalue ;
Hinweise:
- Ein Standardname sollte gelegentlich ergänzt werden.
- 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.
- Indizes starten mit Null!
Topologievariable
int Mesh2 ;
- Mesh2:long_name = "name of grid can be stored here" ;
- 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:edge_node_connectivity = "Mesh2_edge_nodes" ;
- Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ;
- Mesh2:poly_node_connectivity = "Mesh2_poly_nodes" ;
- Mesh2:poly_edge_connectivity = "Mesh2_poly_edges" ;
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