Aktionen

NetCDF Dreiecksgitter: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
(Eine Überschriftenebene teilweise entfernt (Variablen))
(Die LinkTitles-Erweiterung hat automatisch Links zu anderen Seiten hinzugefügt (<a target="_blank" rel="nofollow noreferrer noopener" class="external free" href="https://github.com/bovender/LinkTitles">https://github.com/bovender/LinkTitles</a>).)
 
(70 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:
des Typs [[UNTRIM_GRID.DAT|untrim_grid.dat]] handeln.  
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]]. Ebenso werden hier keine Informationen über offene und geschlossene Kanten oder Positionen zum Einsteuern von Randwerten aufgeführt. Es wird ausschließlich
beschrieben (siehe [[NetCDF Synoptische Daten im Dreiecksgitter]]).  
die Struktur (Topologie) des Gitters beschrieben.  
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 möglichst vollständig für die ''staggered data'' Positionen ''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
[http://ugrid-conventions.github.io/ugrid-conventions/#2d-triangular-mesh-topology ''2D triangular mesh topology'']
der [http://ugrid-conventions.github.io/ugrid-conventions ''UGRID Conventions''] verknüpft. Alle
Abweichungen/Erweiterungen von den ''UGRID Conventions'' sind nachfolgend in der Farbe
<font color=darkorange>''darkorange''</font> farblich hervorgehoben.


=Inhalt der Datei=
=Inhalt der Datei=
==Dimensionen==
==Dimensionen==


: dimensions:   
# '''nMesh2_node''' : Anzahl der ''Knoten''.
:: nMesh2_node = ''number of nodes (vertices)'' ;
# '''nMesh2_edge''' : Anzahl der ''Kanten''.
:: nMesh2_edge = ''number of edges''
# '''nMesh2_face''' : Anzahl der ''Faces'' (''Polygone'') - hier Dreiecke.
:: nMesh2_poly = ''number of polygons (triangles)'' ;
# '''two''' : Konstante ( = 2 ).
:: Two = 2 ; \\ constant dimension
# '''three''' : Konstante ( = 3 ).
:: Three = 3 ; \\ constant dimension 


==Lokale Koordinaten==
==Lokale Koordinaten==


===Knoten===
===Knoten===
:: double Mesh2_node_x(nMesh2_node) ;  
double Mesh2_node_x(nMesh2_node) ;
::: Mesh2_node_x:standard_name = "'''projection_x_coordinate'''" ;   
: Mesh2_node_x:long_name = "x-coordinate of 2D mesh nodes" ;
::: Mesh2_node_x:long_name = "x-coordinate of 2D mesh nodes" ;  
: Mesh2_node_x:units = "m" ;
::: Mesh2_node_x:units = "m" ;
: Mesh2_node_x:name_id = 1650 ;
:: double Mesh2_node_y(nMesh2_node) ;  
: Mesh2_node_x:standard_name = "projection_x_coordinate" ;
::: Mesh2_node_y:standard_name = "'''projection_y_coordinate'''" ;  
double Mesh2_node_y(nMesh2_node) ;
::: Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ;  
: Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ;
::: Mesh2_node_y:units = "m" ;
: 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===
===Kanten===
:: double Mesh2_edge_x(nMesh2_edge) ;  
double Mesh2_edge_x(nMesh2_edge) ;
::: Mesh2_edge_x:standard_name = "'''projection_x_coordinate'''" ;   
: Mesh2_edge_x:long_name = "x-coordinate of 2D mesh edges" ;
::: Mesh2_edge_x:long_name = "x-coordinate of 2D mesh edges, e.g. center of edge" ;  
: Mesh2_edge_x:units = "m" ;
::: Mesh2_edge_x:units = "m" ;
: Mesh2_edge_x:name_id = 1650 ;
::: Mesh2_edge_x:bounds = "Mesh2_edge_x_bnd" \\ optional
: Mesh2_edge_x:bounds = "Mesh2_edge_x_bnd" ;
:: double Mesh2_edge_y(nMesh2_edge) ;  
: Mesh2_edge_x:standard_name = "projection_x_coordinate" ;
::: Mesh2_edge_y:standard_name = "'''projection_y_coordinate'''" ;   
double Mesh2_edge_y(nMesh2_edge) ;
::: Mesh2_edge_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of edge" ;  
: Mesh2_edge_y:long_name = "y-coordinate of 2D mesh edges" ;
::: Mesh2_edge_y:units = "m" ;
: Mesh2_edge_y:units = "m" ;
::: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" \\ optional
: Mesh2_edge_y:name_id = 1651 ;
===Polygone===
: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" ;
:: double Mesh2_poly_x(nMesh2_poly) ;  
: Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
::: Mesh2_poly_x:standard_name = "'''projection_x_coordinate'''" ;   
Hinweise:
::: Mesh2_poly_x:long_name = "x-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;  
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-[[Kennung]] der Variablen.
::: Mesh2_poly_x:units = "m" ;
 
::: Mesh2_poly_x:bounds = "Mesh2_poly_x_bnd" \\ optional
===Faces (Polygone)===
:: double Mesh2_poly_y(nMesh2_poly) ;  
double Mesh2_face_x(nMesh2_face) ;
::: Mesh2_poly_y:standard_name = "'''projection_y_coordinate'''" ;  
: Mesh2_face_x:long_name = "x-coordinate of 2D mesh faces (polygons), center of gravity" ;
::: Mesh2_poly_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;  
: Mesh2_face_x:units = "m" ;
::: Mesh2_poly_y:units = "m" ;
: Mesh2_face_x:name_id = 1650 ;
::: Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" \\ optional
: 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===
===(optional) Begrenzung für Kanten===
:: double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required
double Mesh2_edge_x_bnd(nMesh2_edge, two) ; \\ keine Metadaten erforderlich
:: double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required
 
===(optional) Begrenzung für Polygone===
double Mesh2_edge_y_bnd(nMesh2_edge, two) ; \\ keine Metadaten erforderlich
:: double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required
:: double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required


===(optional) Begrenzung für Faces (Polygone)===
double Mesh2_face_x_bnd(nMesh2_face, three) ; \\ keine Metadaten erforderlich
double Mesh2_face_y_bnd(nMesh2_face, three) ; \\ keine Metadaten erforderlich
Hinweise:
# Koordinaten der Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.


==Geografische Koordinaten==
==Geografische Koordinaten==


===Knoten===
===Knoten===
:: double Mesh2_node_lon(nMesh2_node) ;  
double Mesh2_node_lon(nMesh2_node) ;
::: Mesh2_node_lon:standard_name = "'''longitude'''" ;  
: Mesh2_node_lon:long_name = "longitude of 2D mesh nodes" ;
::: Mesh2_node_lon:long_name = "longitude of 2D mesh nodes" ;  
: Mesh2_node_lon:units = "degrees_east" ;
::: Mesh2_node_lon:units = "degrees_east" ;    
: Mesh2_node_lon:name_id = 1653 ;
:: double Mesh2_node_lat(nMesh2_node) ;
: Mesh2_node_lon:standard_name = "longitude" ;
::: Mesh2_node_lat:standard_name = "'''latitude'''" ;  
double Mesh2_node_lat(nMesh2_node) ;
::: Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ;  
: Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ;
::: Mesh2_node_lat:units = "degrees_north" ;
: 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===
===Kanten===
:: double Mesh2_edge_lon(nMesh2_edge) ;  
double Mesh2_edge_lon(nMesh2_edge) ;
::: Mesh2_edge_lon:standard_name = "'''longitude'''" ;   
: Mesh2_edge_lon:long_name = "longitude of 2D mesh edge centers" ;
::: Mesh2_edge_lon:long_name = "longitude of 2D mesh edges, e.g. center of edge" ;  
: Mesh2_edge_lon:units = "degrees_east" ;
::: Mesh2_edge_lon:units = "degrees_east" ;
: Mesh2_edge_lon:name_id = 1653 ;
::: Mesh2_edge_lon:bounds = "Mesh2_edge_lon_bnd" // optional 
: Mesh2_edge_lon:bounds = "Mesh2_edge_lon_bnd" ;
:: double Mesh2_edge_lat(nMesh2_edge) ;
: Mesh2_edge_lon:standard_name = "longitude" ;
::: Mesh2_edge_lat:standard_name = "'''latitude'''" ;   
double Mesh2_edge_lat(nMesh2_edge) ;
::: Mesh2_edge_lat:long_name = "latitude of 2D mesh edges, e.g. center of edge" ;  
: Mesh2_edge_lat:long_name = "latitude of 2D mesh edge centers" ;
::: Mesh2_edge_lat:units = "degrees_north" ;
: Mesh2_edge_lat:units = "degrees_north" ;
::: Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" // optional
: Mesh2_edge_lat:name_id = 1652 ;
===Polygone===
: Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd" ;
:: double Mesh2_poly_lon(nMesh2_poly) ;  
: Mesh2_edge_lat:standard_name = "latitude" ;
::: Mesh2_poly_lon:standard_name = "'''longitude'''" ;   
Hinweise:
::: Mesh2_poly_lon:long_name = "longitude of 2D mesh polygons, e.g. center of gravity or circumcenter" ;  
# Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-[[Kennung]] der Variablen.
::: Mesh2_poly_lon:units = "degrees_east" ;
 
::: Mesh2_poly_lon:bounds = "Mesh2_poly_lon_bnd" // optional       
===Faces (Polygone)===
:: double Mesh2_poly_lat(nMesh2_node) ;
double Mesh2_face_lon(nMesh2_face) ;
::: Mesh2_poly_lat:standard_name = "'''latitude'''" ;  
: Mesh2_face_lon:long_name = "longitude of 2D mesh faces (polygons), center of gravity" ;
::: Mesh2_poly_lat:long_name = "latitude of 2D mesh polygons, e.g. center of gravity or circumcenter" ;  
: Mesh2_face_lon:units = "degrees_east" ;
::: Mesh2_poly_lat:units = "degrees_north" ;
: Mesh2_face_lon:name_id = 1653 ;
::: Mesh2_poly_lat:bounds = "Mesh2_poly_lat_bnd" // optional       
: 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===
===(optional) Begrenzung für Kanten===
:: double Mesh2_edge_lon_bnd(nMesh2_edge,Two) ; \\ no metadata required
double Mesh2_edge_lon_bnd(nMesh2_edge,two) ; \\ keine Metadaten erforderlich
:: double Mesh2_edge_lat_bnd(nMesh2_edge,Two) ; \\ no metadata required
 
====(optional) Begrenzung für Polygone====
double Mesh2_edge_lat_bnd(nMesh2_edge,two) ; \\ keine Metadaten erforderlich
:: double Mesh2_poly_lon_bnd(nMesh2_poly,Three) ; \\ no metadata required
 
:: double Mesh2_poly_lat_bnd(nMesh2_poly,Three) ; \\ no metadata required
===(optional) Begrenzung für Faces (Polygone)===
double Mesh2_face_lon_bnd(nMesh2_face,three) ; \\ keine Metadaten erforderlich
 
double Mesh2_face_lat_bnd(nMesh2_face,three) ; \\ keine Metadaten erfroderlich
 
Hinweise:
# Koordinaten der Knoten des Faces (Polygons) entgegen dem Uhrzeigersinn angeben.


==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===
:: integer Mesh2_edge_nodes(nMesh2_edge,Two) ;
int Mesh2_edge_nodes(nMesh2_edge,two) ;
::: Mesh2_edge_nodes:standard_name = "'''???'''" \\ yet to be determined
: Mesh2_edge_nodes:long_name = "list of nodes for all edges, start node - end node" ;
::: Mesh2_edge_nodes:long_name = "list of nodes for all edges, start node - end node"
: Mesh2_edge_nodes:cf_role= "edge_node_connectivity" ;
:: ''Bemerkung: Indizes starten mit Null!''
: Mesh2_edge_nodes:start_[[index]] = 0 ;
===Knotenverzeichnis der Polygone===
 
:: integer Mesh2_poly_nodes(nMesh2_poly,Three) ;
Hinweise:
::: Mesh2_poly_nodes:standard_name = "'''???'''" \\ yet to be determined
# Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
::: Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise"
 
:: ''Bemerkung: Indizes starten mit Null!''
===Knotenverzeichnis der Faces (Polygone)===
===Polygonverzeichnis der Kanten===
int Mesh2_face_nodes(nMesh2_face, three) ;
:: integer Mesh2_edge_polys(nMesh2_edge,Two) ;
: Mesh2_face_nodes:long_name = "list of nodes for all faces (polygons), counterclockwise" ;
::: Mesh2_edge_polys:standard_name "'''???'''" \\ yet to be determined
: Mesh2_face_nodes:cf_role = "face_node_connectivity" ;
::: Mesh2_edge_polys:long_name = "list of (adjacent) polygons for all edges - left and right neigbour polygon"
: Mesh2_face_nodes:start_[[index]] = 0 ;
::: Mesh2_edge_polys:_FillValue = ''fillvalue'' \\ indicates missing neighbour polygon, e.g. at domain boundaries
 
:: ''Bemerkung: Indizes starten mit Null!''
Hinweise:
# Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
 
===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:cf_role= "face_edge_connectivity" ;
: Mesh2_face_edges:start_[[index]] = 0;
 
Hinweise:
# Kanten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.
 
===Face- (Polygon-) Verzeichnis der Kanten===
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 ;
: Mesh2:long_name = "name of grid can be stored here" ;
: 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" ; \\ 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 optionally required for data at edges
: Mesh2:<font color=darkorange>edge_face_connectivity</font> = "Mesh2_edge_faces" ;    \\


:: integer Mesh2 ;
Hinweise:
::: Mesh2:standard_name = "'''???'''" \\ yet to be determined ;
# In der Praxis müssen nicht alle Verknüpfungslisten (''connectivity'') angegeben werden, da manche Informationen redundant sind.
::: Mesh2:long_name = "can be used to store a name for the grid" ;
# 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.
::: Mesh2:dimensionality = 2 ; \\ flat mesh, no three-dimensional elements;
::: Mesh2:locations = "node edge poly" \\ data can be assigned to these locations ;
::: Mesh2:node_coordinates = "Mesh2_node_lon Mesh2_node_lat" ;
::: Mesh2:edge_coordinates = "Mesh2_edge_lon Mesh2_edge_lat" ;
::: Mesh2:poly_coordinates = "Mesh2_poly_lon Mesh2_poly_lat" ;
::: Mesh2:poly_node_connectivity = "Mesh2_poly_nodes" ;
::: Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
::: Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ; \\ different from Deltares


==Koordinatentransformation==
==Koordinatentransformation==


:: integer crs ;  \\ value is equivalent to the EPSG code of the transformation
Siehe unter [[NetCDF Grid Mapping Variable]].
::: crs:grid_mapping_name = "'''transverse_mercator'''" ;
::: crs:scale_factor_at_central_merdian = ''value'' ;
::: crs:longitude_of_central_meridian = ''value'' ;
::: crs:latitude_of_projection_origin = ''value'' ;
::: crs:false_easting = ''value'' ;
::: crs:false_northing = ''value'' ;
 
=Anmerkungen, Fragen=


* Datei nutzt [http://public.deltares.nl/display/NETCDF/netCDF Deltares-CF-Erweiterungen]. Ausnahme ist das Attribut ''edge_poly_cennectivit''y in der Topologievariable.
* Können auch für Kanten ''bounds'' angegeben werden?
* Müssen die Begrenzungen für beide Koordinatensysteme angegeben werden?
* Müssen die Indizes unbedingt mit Null starten?
* Die Beschreibung der Koordinatentransformation ist für UTM- und Gauß-Krüger-Koordinaten geeignet.
----
----
zurück zu [[NetCDF]]
zurück zu [[NetCDF]]
----
----
[[Strukturübersicht]]
[[Strukturübersicht]]

Aktuelle Version vom 21. Oktober 2022, 09:27 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 Positionen 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 triangular mesh 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) - hier Dreiecke.
  4. two : Konstante ( = 2 ).
  5. 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:

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

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

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. 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) ; \\ 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, three) ; \\ keine Metadaten erforderlich

double Mesh2_face_y_bnd(nMesh2_face, three) ; \\ keine Metadaten erforderlich

Hinweise:

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

  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 = "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:

  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 = "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:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. 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) ; \\ 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,three) ; \\ keine Metadaten erforderlich

double Mesh2_face_lat_bnd(nMesh2_face,three) ; \\ keine Metadaten erfroderlich

Hinweise:

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

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

Hinweise:

  1. Knoten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.

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:cf_role= "face_edge_connectivity" ;
Mesh2_face_edges:start_index = 0;

Hinweise:

  1. Kanten der Faces (Polygone) entgegen dem Uhrzeigersinn angeben.

Face- (Polygon-) Verzeichnis der Kanten

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

Hinweise:

  1. Der erste Wert kennzeichnet das linke, der zweite das rechte Nachbarpolygon.
  2. Mit dem "_FillValue" können Kanten auf dem Rand, die nur ein Nachbarpolygon haben, beschrieben werden.

Topologievariable

int Mesh2 ;

Mesh2:long_name = "name of grid can be stored here" ;
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" ; \\ 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 optionally required for data at edges
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.
  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

Siehe unter NetCDF Grid Mapping Variable.


zurück zu NetCDF


Strukturübersicht