Aktionen

NetCDF Unstrukturiertes Gitter: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
imported>Lang Guenther
(→‎Topologische Daten: Text erstmals konkret ergänzt)
Zeile 180: Zeile 180:


===Knotenverzeichnis der Kanten===
===Knotenverzeichnis der Kanten===
int Mesh2_edge_nodes(nMesh2_edge, two) ;
: Mesh2_edge_nodes:long_name = "Knotenverzeichnis der Kanten, Anfangs- und Endpunkt" ;


* Siehe [[NetCDF Dreiecksgitter#Knotenverzeichnis der Kanten|NetCDF Dreiecksgitter, Abschnitt "Knotenverzeichnis der Kanten"]].
Hinweise:
* Die Variable kann in identischer Weise deklariert werden.
# Ein Standardname sollte gelegentlich ergänzt werden.
# Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
# 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:
# Ein Standardname sollte gelegentlich ergänzt werden.
# Der erste Wert kennzeichnet das linke, der zweite das rechte Nachbarpolygon.
# Auf Kanten des Randes darf das rechte Nachbarpolgon fehlen; _FillValue verwenden.
# Indizes starten mit Null!


===Knotenverzeichnis der Polygone===
===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 ;


* Siehe [[NetCDF Dreiecksgitter#Knotenverzeichnis der Polygone|NetCDF Dreiecksgitter, Abschnitt "Knotenverzeichnis der Polygone"]].
Hinweise:
* Die Variable muss wie folgt unterschiedlich deklariert werden:
# Ein Standardname sollte gelegentlich ergänzt werden.
*:: integer Mesh2_poly_nodes(nMesh2_poly,<font color=blue>nMaxMesh2_poly_nodes</font>) ;
# Knoten des Polygons entgegen dem Uhrzeigersinn angeben.
*::: Mesh2_poly_nodes:standard_name = "'''???'''" ; \\ yet to be determined
# Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
*::: Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise" ;
# Nicht vorhandene Knoten müssen für jedes Polygon die letzten Einträge sein.
*::: <font color=blue>Mesh2_poly_nodes:_FillValue = ''fillvalue'' \\ for non-existing nodes</font> ;
# Indizes starten mit Null!
*:: ''Bemerkung: Indizes starten mit Null!''


===Polygonverzeichnis der Kanten===
===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 ;


* Siehe [[NetCDF Dreiecksgitter#Polygonverzeichnis der Kanten|NetCDF Dreiecksgitter, Abschnitt "Polygonerzeichnis der Kanten"]].
Hinweise:
* Die Variable kann in identischer Weise deklariert werden.
# 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==
==Topologievariable==

Version vom 27. April 2011, 12:33 Uhr

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