Aktionen

NetCDF Unstrukturiertes Gitter

Aus BAWiki

Version vom 27. April 2011, 12:33 Uhr von imported>Lang Guenther (→‎Topologische Daten: Text erstmals konkret ergänzt)

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 poly gestaltet.

Inhalt der Datei

Dimensionen

  1. nMesh2_node : Anzahl der Knoten.
  2. nMesh2_edge : Anzahl der Kanten.
  3. nMesh2_poly : Anzahl der Polygone.
  4. nMaxMesh2_poly_nodes : maximale Anzahl der Knoten/Kanten in einem 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.
  2. Das Attribut "bounds" verweist auf die Variable mit Anfangs- und Endkoordinaten aller Kanten.

Polygone

double Mesh2_poly_x(nMesh2_poly) ;

Mesh2_poly_x:long_name = "x-Koordinate der Polygone eines 2D-Gitters, Schwerpunkt" ;
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-Koordinate der Polygone eines 2D-Gitters, Schwerpunkt" ;
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" ;

double Mesh2_poly_center_x(nMesh2_poly) ;

Mesh2_poly_center_x:long_name = "x-Koordinate der Polygone eines 2D-Gitters, Umkreismittelpunkt" ;
Mesh2_poly_center_x:units = "m" ;
Mesh2_poly_center_x:name_id = 1650 ;
Mesh2_poly_center_x:standard_name = "projection_x_coordinate" ;

double Mesh2_poly_center_y(nMesh2_poly) ;

Mesh2_poly_center_y:long_name = "y-Koordinate der Polygone eines 2D-Gitters, Umkreismittelpunkt" ;
Mesh2_poly_center_y:units = "m" ;
Mesh2_poly_center_y:name_id = 1651 ;
Mesh2_poly_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) ;

double Mesh2_edge_y_bnd(nMesh2_edge, two) ;

(optional) Begrenzung für Polygone

double Mesh2_poly_x_bnd(nMesh2_poly, nMaxMesh2_poly_nodes) ;

double Mesh2_poly_y_bnd(nMesh2_poly, nMaxMesh2_poly_nodes) ;

Hinweise:

  1. Koordinaten der Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
  2. Es dürfen keine ungültigen Koordinaten vorhanden sein.
  3. Falls das Gitter aus Drei- und Vierecken besteht, sollte bei Dreiecken als vierter Wert die Koordinate des ersten Knotens wiederholt werden.

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.
  2. Das Attribut "bounds" verweist auf die Variable mit Anfangs- und Endkoordinaten aller Kanten.

Polygone

double Mesh2_poly_lon(nMesh2_poly) ;

Mesh2_poly_lon:long_name = "geografische Laenge der Polygone eines 2D-Gitters, Schwerpunkt" ;
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 = "geografische Breite der Polygone eines 2D-Gitters , Schwerpunkt" ;
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" ;

double Mesh2_poly_center_lon(nMesh2_poly) ;

Mesh2_poly_center_lon:long_name = "geografische Laenge der Polygone eines 2D-Gitters, Umkreismittelpunkt" ;
Mesh2_poly_center_lon:units = "degrees_east" ;
Mesh2_poly_center_lon:name_id = 1653 ;
Mesh2_poly_center_lon:standard_name = "longitude" ;

double Mesh2_poly_center_lat(nMesh2_poly) ;

Mesh2_poly_center_lat:long_name = "geografische Breite der Polygone eines 2D-Gitters, Umkreismittelpunkt" ;
Mesh2_poly_center_lat:units = "degrees_north" ;
Mesh2_poly_center_lat:name_id = 1652 ;
Mesh2_poly_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) ;

double Mesh2_edge_lat_bnd(nMesh2_edge, two) ;

(optional) Begrenzung für Polygone

double Mesh2_poly_lon_bnd(nMesh2_poly, nMaxMesh2_poly_nodes) ;

double Mesh2_poly_lat_bnd(nMesh2_poly, nMaxMesh2_poly_nodes) ;

Hinweise:

  1. Koordinaten der Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
  2. Es dürfen keine ungültigen Koordinaten vorhanden sein.
  3. Falls das Gitter aus Drei- und Vierecken besteht, sollte bei Dreiecken als vierter Wert die Koordinate des ersten Knotens wiederholt werden.

Topologische Daten

Knotenverzeichnis der Kanten

int Mesh2_edge_nodes(nMesh2_edge, two) ;

Mesh2_edge_nodes:long_name = "Knotenverzeichnis der Kanten, Anfangs- und Endpunkt" ;

Hinweise:

  1. Ein Standardname sollte gelegentlich ergänzt werden.
  2. Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
  3. Indizes starten mit Null!

Polygonverzeichnis der Kanten

int Mesh2_edge_polys(nMesh2_edge, two) ;

Mesh2_edge_polys:long_name = "Polygonverzeichnis der Kanten, linker und rechter Nachbar" ;
Mesh2_edge_polys:_FillValue = -999 ;

Hinweise:

  1. Ein Standardname sollte gelegentlich ergänzt werden.
  2. Der erste Wert kennzeichnet das linke, der zweite das rechte Nachbarpolygon.
  3. Auf Kanten des Randes darf das rechte Nachbarpolgon fehlen; _FillValue verwenden.
  4. Indizes starten mit Null!

Knotenverzeichnis der Polygone

int Mesh2_poly_nodes(nMesh2_poly, nMaxMesh2_poly_nodes) ;

Mesh2_poly_nodes:long_name = "Knotenverzeichnis der Polygone, entgegen dem Uhrzeigersinn" ;
Mesh2_poly_nodes:_FillValue = -999 ;

Hinweise:

  1. Ein Standardname sollte gelegentlich ergänzt werden.
  2. Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
  3. Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
  4. Nicht vorhandene Knoten müssen für jedes Polygon die letzten Einträge sein.
  5. Indizes starten mit Null!

Kantenverzeichnis der Polygone

int Mesh2_poly_edges(nMesh2_poly, nMaxMesh2_poly_nodes) ;

  1. Mesh2_poly_edges:long_name = "Kantenverzeichnis der Polygone, entgegen dem Uhrzeigersinn" ;
  2. Mesh2_poly_edges:_FillValue = -999 ;

Hinweise:

  1. Ein Standardname sollte gelegentlich ergänzt werden.
  2. Kanten des Polygons entgegen dem Uhrzeigersinn angeben.
  3. Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
  4. Nicht vorhandene Kanten müssen für jedes Polygon die letzten Einträge sein.
  5. Indizes starten mit Null!

Topologievariable

Koordinatentransformation

Anmerkungen, Fragen


zurück zu NetCDF


Strukturübersicht