2

_FillValue および/または欠損値がさまざまな組み合わせで設定されている netcdf ファイルがあります (たとえば、float、string、またはまったく設定されていない、一般的に -999./'-999' として)。これらのファイルを操作して再度保存し、出力ファイルで適切かつ一貫した塗りつぶし値を設定したいと考えています。私の質問は次のとおりです。

1) _FillValue、または missing_value、またはその両方を使用します。違いは何ですか?

2) 塗りつぶし値はどのタイプにする必要がありますか?また、値に関するベスト プラクティスは何ですか? -999 は実際のデータと混同される可能性があるようです

3) netdcf の fill 値は、マスクされた配列 (デフォルトで 10^20 に設定されているようです) の fill_value とどのように組み合わされますか? 同じことを修正する 2 つのアプローチのようです。

4) データを処理するときにも警告が表示されます。だから私は -999 の欠損値は確かに悪い考えだと思います。

私はpython 3.7とnetcdf4を使用しています。

ありがとう!

4

1 に答える 1

0

ポイント 2 に答えるために、各タイプ (float、integer など) にはデフォルトの欠損値があり、使用している言語の特定の netcdf モジュールを介して利用できます。

例を挙げると、Fortran90 (またはそれ以上) を使用している場合、netcdf モジュールをロードすると、事前定義された変数を使用して、倍精度浮動小数点変数のデフォルトの欠損値にアクセスできます。

NF90_FILL_DOUBLE

代わりに、具体的に質問したpython3では、NETCDFの処理に使用しているパッケージに依存するため、もう少し複雑です。しかし、netCDF4 パッケージ (現在はかなり標準になっています) を使用すると、デフォルトの欠損値を次のように表示できます。

import netCDF4
netCDF4.default_fillvals
{'S1': '\x00', 'i1': -127, 'u1': 255, 'i2': -32767, 'u2': 65535, 'i4': -2147483647, 'u4': 4294967295, 'i8': -9223372036854775806, 'u8': 18446744073709551614, 'f4': 9.969209968386869e+36, 'f8': 9.969209968386869e+36}

この投稿で概説されているように

于 2020-11-11T14:07:05.273 に答える