Aktionen

NetCDF Dreiecksgitter: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
(Begrenzungen für Polygone und Kanten ergänzt)
imported>Lang Guenther
(Sicherheitskopie)
Zeile 3: Zeile 3:


Ein aus Dreiecken aufgebautes Gitter wird beschrieben. Typische Dateitypen hierfür sind z. B.
Ein aus Dreiecken aufgebautes Gitter wird beschrieben. Typische Dateitypen hierfür sind z. B.
[[GITTER05.DAT und GITTER05.BIN|gitter05.dat und gitter05.bin]] sowie [[SELAFIN|selafin]].
[[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
Es könnte sich aber auch um ein spezielles, ausschließlich aus Dreiecken aufgebautes Gitter
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, also z. B. auch der Tiefe, wird an anderer Stelle
Die Speicherung von Daten auf diesem Gitter, z. B. der Tiefe (Bathymetrie), wird an anderer Stelle
beschrieben. Ebenso wird an dieser Stelle keine Information über offene oder geschlossene Kanten,
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
Polygone an denen eventuell Randwerte vorgegeben werden sollen, aufgeführt. Es wird ausschließlich
die Struktur (Topologie) des Gitters beschrieben.  
die Struktur des Gitters beschrieben.  


Die Beschreibung wurde möglichst vollständig gestaltet, auch wenn für einzelne der o. g. Dateitypen
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.
nur ein Teil der nachfolgend genannten Daten benötigt wird.


=Inhalt der Datei=
=Inhalt der Datei=
Zeile 42: Zeile 40:
::: Mesh2_edge_x:long_name = "x-coordinate of 2D mesh edges, e.g. center of edge" ;     
::: 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:bounds = "Mesh2_edge_x_bnd" \\ optional
:: double Mesh2_edge_y(nMesh2_edge) ;     
:: double Mesh2_edge_y(nMesh2_edge) ;     
::: Mesh2_edge_y:standard_name = "'''projection_y_coordinate'''" ;     
::: Mesh2_edge_y:standard_name = "'''projection_y_coordinate'''" ;     
::: 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 polygons, e.g. center of edge" ;     
::: Mesh2_edge_y:units = "m" ;
::: Mesh2_edge_y:units = "m" ;
::: Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" \\ optional
====Polygone====
====Polygone====
:: double Mesh2_poly_x(nMesh2_poly) ;     
:: double Mesh2_poly_x(nMesh2_poly) ;     
::: Mesh2_poly_x:standard_name = "'''projection_x_coordinate'''" ;     
::: Mesh2_poly_x:standard_name = "'''projection_x_coordinate'''" ;     
::: Mesh2_poly_x:long_name = "x-coordinate of 2D mesh polygons, e.g. center of gravity" ;     
::: Mesh2_poly_x:long_name = "x-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;     
::: Mesh2_poly_x:units = "m" ;
::: Mesh2_poly_x:units = "m" ;
::: Mesh2_poly_x:bounds = "Mesh2_poly_x_bnd" \\ optional
:: double Mesh2_poly_y(nMesh2_poly) ;     
:: double Mesh2_poly_y(nMesh2_poly) ;     
::: Mesh2_poly_y:standard_name = "'''projection_y_coordinate'''" ;     
::: Mesh2_poly_y:standard_name = "'''projection_y_coordinate'''" ;     
::: Mesh2_poly_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of gravity" ;     
::: Mesh2_poly_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;     
::: Mesh2_poly_y:units = "m" ;
::: Mesh2_poly_y:units = "m" ;
====Begrenzung für Kanten====
::: Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" \\ optional
 
====(optional) Begrenzung für Kanten====
:: double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required
:: double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required
:: double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required
:: double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required
====Begrenzung für Polygone====
====(optional) Begrenzung für Polygone====
:: double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required
:: double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required
:: double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required
:: double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required

Version vom 10. September 2010, 07:23 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.

Inhalt der Datei

Dimensionen

dimensions:
nMesh2_node = number of nodes (vertices) ;
nMesh2_edge = number of edges ;
nMesh2_poly = number of polygons (triangles) ;
Two = 2 ; \\ constant dimension
Three = 3 ; \\ constant dimension

Variablen

Lokale Koordinaten

Knoten

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:units = "m" ;
double Mesh2_node_y(nMesh2_node) ;
Mesh2_node_y:standard_name = "projection_y_coordinate" ;
Mesh2_node_y:long_name = "y-coordinate of 2D mesh nodes" ;
Mesh2_node_y:units = "m" ;

Kanten

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, e.g. center of edge" ;
Mesh2_edge_x:units = "m" ;
Mesh2_edge_x:bounds = "Mesh2_edge_x_bnd" \\ optional
double Mesh2_edge_y(nMesh2_edge) ;
Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
Mesh2_edge_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of edge" ;
Mesh2_edge_y:units = "m" ;
Mesh2_edge_y:bounds = "Mesh2_edge_y_bnd" \\ optional

Polygone

double Mesh2_poly_x(nMesh2_poly) ;
Mesh2_poly_x:standard_name = "projection_x_coordinate" ;
Mesh2_poly_x:long_name = "x-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;
Mesh2_poly_x:units = "m" ;
Mesh2_poly_x:bounds = "Mesh2_poly_x_bnd" \\ optional
double Mesh2_poly_y(nMesh2_poly) ;
Mesh2_poly_y:standard_name = "projection_y_coordinate" ;
Mesh2_poly_y:long_name = "y-coordinate of 2D mesh polygons, e.g. center of gravity or circumcenter" ;
Mesh2_poly_y:units = "m" ;
Mesh2_poly_y:bounds = "Mesh2_poly_y_bnd" \\ optional

(optional) Begrenzung für Kanten

double Mesh2_edge_x_bnd(nMesh2_edge,Two) ; \\ no metadata required
double Mesh2_edge_y_bnd(nMesh2_edge,Two) ; \\ no metadata required

(optional) Begrenzung für Polygone

double Mesh2_poly_x_bnd(nMesh2_poly,Three) ; \\ no metadata required
double Mesh2_poly_y_bnd(nMesh2_poly,Three) ; \\ no metadata required


Geografische Koordinaten

Knoten

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:units = "degrees_east" ;
double Mesh2_node_lat(nMesh2_node) ;
Mesh2_node_lat:standard_name = "latitude" ;
Mesh2_node_lat:long_name = "latitude of 2D mesh nodes" ;
Mesh2_node_lat:units = "degrees_north" ;

Kanten

double Mesh2_edge_lon(nMesh2_edge) ;
Mesh2_edge_lon:standard_name = "longitude" ;
Mesh2_edge_lon:long_name = "longitude of 2D mesh edges, e.g. center of edge" ;
Mesh2_edge_lon:units = "degrees_east" ;
Mesh2_edge_lon:bounds = "Mesh2_edge_lon_bnd"
double Mesh2_edge_lat(nMesh2_edge) ;
Mesh2_edge_lat:standard_name = "latitude" ;
Mesh2_edge_lat:long_name = "latitude of 2D mesh edges, e.g. center of edge" ;
Mesh2_edge_lat:units = "degrees_north" ;
Mesh2_edge_lat:bounds = "Mesh2_edge_lat_bnd"

Polygone

double Mesh2_poly_lon(nMesh2_poly) ;
Mesh2_poly_lon:standard_name = "longitude" ;
Mesh2_poly_lon:long_name = "longitude of 2D mesh polygons, e.g. center of gravity" ;
Mesh2_poly_lon:units = "degrees_east" ;
double Mesh2_poly_lat(nMesh2_node) ;
Mesh2_poly_lat:standard_name = "latitude" ;
Mesh2_poly_lat:long_name = "latitude of 2D mesh polygons, e.g. center of gravity" ;
Mesh2_poly_lat:units = "degrees_north" ;

Begrenzung für Kanten

double Mesh2_edge_lon_bnd(nMesh2_edge,Two) ; \\ no metadata required
double Mesh2_edge_lat_bnd(nMesh2_edge,Two) ; \\ no metadata required

Begrenzung für Polygone

double Mesh2_poly_lon_bnd(nMesh2_poly,Three) ; \\ no metadata required
double Mesh2_poly_lat_bnd(nMesh2_poly,Three) ; \\ no metadata required

Topologische Daten

Knotenverzeichnis der Kanten

integer 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"

Knotenverzeichnis der Polygone

integer Mesh2_poly_nodes(nMesh2_poly,Three) ;
Mesh2_poly_nodes:standard_name = "???" \\ yet to be determined
Mesh2_poly_nodes:long_name = "list of nodes for all polygons, counterclockwise"

Polygonverzeichnis der Kanten

integer Mesh2_edge_polys(nMesh2_edge,Two) ;
Mesh2_edge_polys:standard_name "???" \\ yet to be determined
Mesh2_edge_polys:long_name = "list of (adjacent) polygons for all edges - left and right neigbour polygon"
Mesh2_edge_polys:_FillValue = fillvalue \\ indicates missing neighbour polygon, e.g. at domain boundaries

Topologievariable

integer Mesh2 ;
Mesh2:standard_name = "???" \\ yet to be determined ;
Mesh2:long_name = "could be used to store a name for the grid" ;
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 name used compared Deltares

Koordinatentransformation

integer crs ; \\ value is equivalent to the EPSG code of the transformation
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 Deltares-CF-Erweiterungen!
  • Können auch für Kanten bounds angegeben werden?
  • Müssen die Begrenzungen für beide Koordinatensysteme angegeben werden?
  • Die Beschreibung der Koordinatentransformation ist für UTM- und Gauß-Krüger-Koordinaten geeignet.

zurück zu NetCDF


Strukturübersicht