Aktionen

NetCDF Packen von Daten: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
(→‎Maximale Genauigkeit: poly durch face ersetzt, Formatierung vereinfacht)
imported>Lang Guenther
(→‎Reduzierte Genauigkeit: poly durch face ersetzt)
Zeile 18: Zeile 18:


==Reduzierte Genauigkeit==
==Reduzierte Genauigkeit==
:: <font color=blue>short integer</font> Mesh2_poly_water_level(time,nMesh2_poly) ;
<font color=blue>short integer</font> Mesh2_face_water_level(time,nMesh2_face) ;
::: Mesh2_poly_water_level:standard_name = "'''sea_surface_height_above_geoid'''" ;     
: Mesh2_face_water_level:standard_name = "'''sea_surface_height_above_geoid'''" ;     
::: Mesh2_poly_water_level:long_name = "water level for 2D mesh polygons" ;     
: Mesh2_face_water_level:long_name = "water level for 2D mesh faces (polygons)" ;     
::: Mesh2_poly_water_level:units = "m" ;
: Mesh2_face_water_level:units = "m" ;
::: Mesh2_poly_water_level:coordinates = "Mesh2_poly_lon Mesh2_poly_lat" ;
: Mesh2_face_water_level:coordinates = "Mesh2_face_lon Mesh2_face_lat" ;
::: Mesh2_poly_water_level:_FillValue = ''fillvalue'' ;
: Mesh2_face_water_level:_FillValue = ''fillvalue'' ;
::: Mesh2_poly_water_level:valid_range = ''valid minimum'', ''valid maximum'' ;
: Mesh2_face_water_level:valid_range = ''valid minimum'', ''valid maximum'' ;
::: Mesh2_poly_water_level:cell_methods = "nMesh2_poly: mean"  
: Mesh2_face_water_level:cell_methods = "nMesh2_face: mean"  
::: Mesh2_poly_water_level:cell_measures = "area: Mesh2_poly_wet_area_2d" ;
: Mesh2_face_water_level:cell_measures = "area: Mesh2_face_wet_area_2d" ;
::: <font color=blue>Mesh2_poly_water_level:add_offset = ''offset''</font> ;
: <font color=blue>Mesh2_face_water_level:add_offset = ''offset''</font> ;
::: <font color=blue>Mesh2_poly_water_level:scale_factor = ''scalefactor''</font> ;
: <font color=blue>Mesh2_face_water_level:scale_factor = ''scalefactor''</font> ;
::: Mesh2_poly_water_level:grid_mapping = "crs" ;
: 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.

Version vom 5. April 2012, 14:18 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.

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

  1. 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.
  2. Daten schreiben.

Entpacken

  1. Daten lesen;
  2. 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


Strukturübersicht