NetCDF Packen von Daten: Unterschied zwischen den Versionen
Aus BAWiki
imported>Lang Guenther (→Maximale Genauigkeit: poly durch face ersetzt, Formatierung vereinfacht) |
(Links to existing pages added by LinkTitles bot.) |
||
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
Das Packen von Daten dient der Verminderung der Datenmenge durch Reduktion der Genauigkeit, mit der die Daten in eine Datei geschrieben werden. | Das Packen von Daten dient der Verminderung der Datenmenge durch Reduktion der Genauigkeit, mit der die Daten in eine Datei geschrieben werden. | ||
Die Beschreibung wurde am 5. 4. 2012 an die Deltares-Konventionen angepasst. Die wichtigsten Änderungen sind: | |||
# Statt ''[[POLY|poly]]'' wird ''face'' benutzt. | |||
=Beispiel= | =Beispiel= | ||
Zeile 18: | Zeile 21: | ||
==Reduzierte Genauigkeit== | ==Reduzierte Genauigkeit== | ||
<font color=blue>short integer</font> Mesh2_face_water_level(time,nMesh2_face) ; | |||
: | : Mesh2_face_water_level:standard_name = "'''sea_surface_height_above_geoid'''" ; | ||
: | : Mesh2_face_water_level:long_name = "water level for 2D mesh faces (polygons)" ; | ||
: | : Mesh2_face_water_level:units = "m" ; | ||
: | : Mesh2_face_water_level:coordinates = "Mesh2_face_lon Mesh2_face_lat" ; | ||
: | : Mesh2_face_water_level:_FillValue = ''fillvalue'' ; | ||
: | : Mesh2_face_water_level:valid_range = ''valid minimum'', ''valid maximum'' ; | ||
: | : Mesh2_face_water_level:cell_methods = "nMesh2_face: mean" | ||
: | : Mesh2_face_water_level:cell_measures = "area: Mesh2_face_wet_area_2d" ; | ||
: <font color=blue>Mesh2_face_water_level:add_offset = ''offset''</font> ; | |||
: <font color=blue>Mesh2_face_water_level:scale_factor = ''scalefactor''</font> ; | |||
: | : Mesh2_face_water_level:grid_mapping = "crs" ; | ||
Durch Übergang von einer Variablen des Typs ''Double'' (8 Byte) zu ''Short Integer'' (2 Byte) wird der Speicherbedarf um ca. 75 % reduziert. Erforderlich ist in diesem Fall die zusätzliche Angabe der Attribute ''add_offset'' und ''scale_factor'', mit deren Hilfe die reellwertigen Daten auf ganze Zahlen abgebildet werden. Es ist zu beachten, dass der ''_FillValue'' nicht in den Daten enthalten sein darf. ''valid_range'' und ''_FillValue'' müssen vom gleichen Typ wie die gepackten Daten sein. ''add_offset'' und ''scale_factor'' dürfen sich dagegen vom Typ der gepackten Daten unterscheiden. | Durch Übergang von einer Variablen des Typs ''Double'' (8 Byte) zu ''Short Integer'' (2 Byte) wird der Speicherbedarf um ca. 75 % reduziert. Erforderlich ist in diesem Fall die zusätzliche Angabe der Attribute ''add_offset'' und ''scale_factor'', mit deren Hilfe die reellwertigen Daten auf ganze Zahlen abgebildet werden. Es ist zu beachten, dass der ''_FillValue'' nicht in den Daten enthalten sein darf. ''valid_range'' und ''_FillValue'' müssen vom gleichen Typ wie die gepackten Daten sein. ''add_offset'' und ''scale_factor'' dürfen sich dagegen vom Typ der gepackten Daten unterscheiden. |
Aktuelle Version vom 30. Mai 2017, 13:12 Uhr
Kurze Beschreibung
Das Packen von Daten dient der Verminderung der Datenmenge durch Reduktion der Genauigkeit, mit der die Daten in eine Datei geschrieben werden.
Die Beschreibung wurde am 5. 4. 2012 an die Deltares-Konventionen angepasst. Die wichtigsten Änderungen sind:
- Statt poly wird face benutzt.
Beispiel
Maximale Genauigkeit
double Mesh2_face_water_level(time,nMesh2_face) ;
- Mesh2_face_water_level:standard_name = "sea_surface_height_above_geoid" ;
- Mesh2_face_water_level:long_name = "water level for 2D mesh faces (polygons)" ;
- Mesh2_face_water_level:units = "m" ;
- Mesh2_face_water_level:coordinates = "Mesh2_face_lon Mesh2_face_lat" ;
- Mesh2_face_water_level:_FillValue = fillvalue ;
- Mesh2_face_water_level:valid_range = valid minimum, valid maximum ;
- Mesh2_face_water_level:cell_methods = "nMesh2_face: mean"
- Mesh2_face_water_level:cell_measures = "area: Mesh2_face_wet_area_2d" ;
- Mesh2_face_water_level:grid_mapping = "crs" ;
Reduzierte Genauigkeit
short integer Mesh2_face_water_level(time,nMesh2_face) ;
- Mesh2_face_water_level:standard_name = "sea_surface_height_above_geoid" ;
- Mesh2_face_water_level:long_name = "water level for 2D mesh faces (polygons)" ;
- Mesh2_face_water_level:units = "m" ;
- Mesh2_face_water_level:coordinates = "Mesh2_face_lon Mesh2_face_lat" ;
- Mesh2_face_water_level:_FillValue = fillvalue ;
- Mesh2_face_water_level:valid_range = valid minimum, valid maximum ;
- Mesh2_face_water_level:cell_methods = "nMesh2_face: mean"
- Mesh2_face_water_level:cell_measures = "area: Mesh2_face_wet_area_2d" ;
- Mesh2_face_water_level:add_offset = offset ;
- Mesh2_face_water_level:scale_factor = scalefactor ;
- Mesh2_face_water_level:grid_mapping = "crs" ;
Durch Übergang von einer Variablen des Typs Double (8 Byte) zu Short Integer (2 Byte) wird der Speicherbedarf um ca. 75 % reduziert. Erforderlich ist in diesem Fall die zusätzliche Angabe der Attribute add_offset und scale_factor, mit deren Hilfe die reellwertigen Daten auf ganze Zahlen abgebildet werden. Es ist zu beachten, dass der _FillValue nicht in den Daten enthalten sein darf. valid_range und _FillValue müssen vom gleichen Typ wie die gepackten Daten sein. add_offset und scale_factor dürfen sich dagegen vom Typ der gepackten Daten unterscheiden.
Vorgehensweise
Packen
- Loop über alle Datenwerte:
- falls der Wert mit _FillValue übereinstimmt, so wird der Wert unverändert übernommen;
- sonst zunächst add_offset subtrahieren und anschließend durch scale_factor dividieren.
- Daten schreiben.
Entpacken
- Daten lesen;
- Loop über alle Datenwerte:
- falls der Wert mit _FillValue übereinstimmt, so wird der Wert unverändert übernommen;
- sonst Wert zunächst mit scale_factor multiplizieren und anschließend add_offset addieren.
Sind sowohl die Variable als auch der _FillValue ganzzahlige Größen, so ist das Ergebnis nach dem Entpacken ebenfalls ganzzahlig. Ansonsten ist das Ergebnis reellwertig.
zurück zu NetCDF