問題タブ [netcdf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hdf5 - 科学データを保存するための NetCDF と HDF5 に関する意見はありますか?
科学データを保存する方法として、NetCDF と HDF5 についてプラス/マイナスを与えるのに十分な経験を持っている人はいますか?
私は HDF5 を使用しており、Java 経由で読み書きしたいと考えていますが、インターフェイスは本質的に C ライブラリのラッパーであり、混乱を招くことがわかったので、NetCDF は興味深いようですが、それについてはほとんど何も知りません。
編集:私のアプリケーションはデータロギング専用であるため、自己記述形式のファイルを取得します。私にとって重要な機能は、任意のメタデータを追加できること、バイト配列に追加するための高速書き込みアクセスができること、単一ライター/複数リーダーの同時実行性があることです (強く推奨されますが必須ではありません。 2 人の書き込み者が同じファイルを同時に開いて悲惨な結果にならないようにするためのメカニズムをサポートしているかどうかは述べていません)。私は HDF5 の階層的な側面が好きです (特に、「通常の」ファイルシステムのような階層よりもはるかに柔軟な有向非巡回グラフ階層が大好きです)、現在 NetCDF ドキュメントを読んでいます...ファイルの場合、おそらく私にはうまくいきません。:(
更新— NetCDF-Javaは netCDF-4 ファイルから読み取りますが、階層グループをサポートしない netCDF-3 ファイルからのみ書き込みます。くそー。
2009 年 7 月 14 日更新: Java の HDF5 にひどく腹を立て始めています。利用可能なライブラリはそれほど優れたものではなく、Java の抽象化レイヤー (複合データ型) に関係する主要な障害がいくつかあります。C の優れたファイル形式ですが、負けたようです。>:(
python - 多次元リスト(配列)の再割り当ての問題
グッドデイコーダーとコデレス、
私は、統計データの山を調べて、そこから要求したものを返すコードを書いています。タスクを完了するために、メソッドは1つの多次元配列から読み取り、別の配列に書き込みます。私に問題を与えるコードの一部は次のとおりです。
両方のスライスのサイズはです27:1:6:1
が、例外が発生します。
私はびっくりしました。
ありがとうございました。
fortran - Windows PGI Visual Fortran で netcdf.lib をリンクする際の問題
(Windows OS) で PGI Visual Fortran を使用して、fortran (f90) ライブラリと実行可能ファイルで構成されるプロジェクト/ソリューションを構築しています。f90 ライブラリは netcdf.lib にリンクしています。f90 は正常にコンパイルおよびビルドされますが、実行可能ファイルにリンクしようとすると、次のエラーが発生します。
Compiling Project ...
Linking...
error LNK2019: unresolved external symbol nf_ _inq_varid_ referenced in function interpnwptools_checkcldliq_
error LNK2001: unresolved external symbol nf__inq varid
error LNK2019: unresolved external symbol nf_ strerror_ referenced in function エラー
エラー LNK2019: unresolved external symbol nf_ get_ att_関数
エラー LNK2001 で参照されている real_: 未解決の外部シンボル nf_ get_ att_ real_
エラー LNK2019: 関数 ncdf_module_openfile_ エラーで参照されている未解決の外部シンボル nf_ create_エラー LNK2019
: 未解決の外部シンボル nf_def_dim_ が関数 ncdf_module_openfile_ で参照されています
。
.
.
および nf_ 未解決のシンボルの他のすべての束。netcdf ライブラリが正しくリンクされているとは思えません。誰でも助けることができますか?私が使用しているプロジェクトには、MS VStudio 2003 を使用して自分で構築した netcdf 3.6.0-p1 が必要です。また、gfortran と eclipse を使用してプロジェクトを構築しようとしましたが、同じリンクの問題があります。以前に netcdf や fortran を使用したことがありません...何か提案はありますか?
compiler-construction - どのコンパイラを使用したかを調べる方法
NetCDF「binary-netcdf-4.0.1_gfortran_gfortran_c++.tar」をインストールしました。しかし、使用した gfortran コンパイラについてはよくわかりません。使用したコンパイラを見つけるにはどうすればよいですか?
python - numpy 配列内の一連の不均一な netcdf データの拡張
私はPythonを初めて使用します。これがすでに尋ねられている場合はお詫びします。
python と numpy を使用して、繰り返し呼び出して、多数の netcdf ファイルのデータを 1 つの配列に収集しようとしていますappend()
。
素朴に、私はこのようなことをしようとしています:
通常の状況では、呼び出しごとに新しいメモリを再割り当てするため、これは悪い考えであることはわかっていappend()
ます。ただし、次の 2 つのことが x の事前割り当てを思いとどまらせます。
1)ファイルは必ずしも軸0に沿って同じサイズであるとは限りません(ただし、後続の軸に沿って同じサイズである必要があります)。そのため、xの最終サイズを事前に計算するために、事前に各ファイルから配列サイズを読み取る必要があります。
でも...
2)私が知る限り、pupynere(および他のnetcdfモジュール)は、ファイルを開くと、単なる参照(他の環境の多くのnetcdfモジュールなど)ではなく、ファイル全体をメモリにロードします。したがって、事前に割り当てるには、ファイルを 2 回開く必要があります。
多くの (>100) 大きな (>1GB) ファイルがあるため、私が知る限り、過剰な割り当てと再形成は実用的ではありません。
私の最初の質問は、事前に割り当てるためのインテリジェントな方法が欠けているかどうかです。
2 番目の質問はもっと深刻です。上記のスニペットは、1 次元配列に対して機能します。しかし、マトリックスにロードしようとすると、初期化が問題になります。1 次元配列を空の配列に追加できます。
しかし、空の配列を行列に追加することはできません:
x.extend(xFragment) のようなものは機能すると思いますが、numpy 配列にこの機能があるとは思いません。最初のファイルを特別なケースとして扱うことで、初期化の問題を回避することもできますが、より良い方法があれば回避したいと思います。
誰かが助けや提案を提供できる場合、または私のアプローチの問題を特定できる場合は、感謝します. ありがとう
r - R を使用して grib ファイルを開く
R を使用して気象データを操作しています。私は2つのステップで進みます:
- ncar コマンド言語のコマンド ライン関数 ncl_convert2nc を使用して、grib を netcdf に変換します。
- R のパッケージ ncdf を使用して、netcdf データをインポートします。
まだ問題が 1 つあります。
2- 一部の特定の grib ファイルでは、ncar ツールによる変換が機能しません。R で grib ファイルを読み取る他の方法やトリック (netcdf への転写以外) はありますか?
Dirk が回答した問題: 1- R 内で多数のファイルを自動的に処理したいと考えています。R 内で ncl_convert2nc を呼び出すことはできますか? (以下のDirk Eddelbuettelによる回答)
python - カラーバー、matplotlib の奇妙な範囲値
私はpythonとmatplotlibの新しいユーザーです。これは簡単な質問かもしれませんが、インターネットを何時間も検索しましたが、これに対する解決策が見つかりませんでした.
NetCDF 形式の降水量データをプロットしています。私が奇妙だと思うのは、データに負の値が含まれていないことです(念のために何度もチェックしました)。ただし、カラーバーの値は負の値 (-0.0000312 など) で始まります。大きなファイルからデータの一部を選択してプロットするだけで、データを操作しないので意味がありません。
したがって、私のコードはあまり関係ありません。コードは次のとおりです。
そのコードで得た出力は美しいプロットで、カラーバーは値 -0.00001893 から始まり、残りは正の値であり、正しいと思います。それは私を悩ませている最小値です。
私が知りたいのですが:
- 私のコードに何か問題がありますか? データが正しいことはわかっています。
- 値を手動で 0 に変更する方法はありますか?
- コードを実行するたびにカラーバーの値が変わるのは正しいですか、同じデータのcos、次にコードを実行するとき、値は次のようになります「-0.00001893、2.00000000、4.00000000、6.00000000など」
- それらを「0.0、2.0、4.0、6.0など」にカスタマイズしたい
ありがとう、ヴァイシュ
c - Cの動的連続3Dアレイ
動的に割り当てられた連続した3D配列をCコードで実装しようとしています。配列のnetCDF出力に依存しているため、配列は連続している必要があります。ここで、StackOverFlowSolutionに投稿されたソリューションを採用しました。これは、配列を動的に割り当ててインデックスを作成する場合に問題なく機能します...ただし、netCDFが配列を出力すると、2番目のインデックスサイズ(jcount)としてスケーリングされるように見えるオフセットがあります。変更された関数は次のとおりです。
この関数を正しく理解すると、iretには、iretを構成する3Dポインター(最初のインデックス)、jretを構成する2Dポインター(2番目のインデックス)、およびkretを構成する実際の値用のスペースが割り当てられます。次に、2D jretポインターは、iretの2D配列セクションに関連付けられます。次に、kretについても同じことが行われます。次に、iretのすべてのアドレスは、jretの各セクションの最初の値を指します。次に、jretの各アドレスがkretの最初のアドレスを指します。
ちなみに、私の配列のプリプロセッサで定義された値では、すべてが正常に機能していました。また、コードでいくつかのprintfステートメントを使用して、配列の数値をチェックすると、それらはすべて正しくインデックス付けされているように見え、コードは正しく実行されます。出力は、配列の非連続メモリストレージの結果であるように見えます。
私は次の形式の構造を持っています:
次に、これを使用して割り当てます
これはnetCDFの問題かもしれません...しかし、私の割り当てルーチンが問題ではないことを知りたいだけです。
python - python mmap.error:開いているファイルが多すぎます。どうしたの?
pupynereインターフェース(Linux)を使用して大量のnetcdfファイルを読んでいます。次のコードはmmapエラーになります。
エラー:
興味深いことに、コマンドの1つにコメントをappend
付けると(どちらでもかまいません!)、機能します。私は何が間違っているのですか?ファイルを閉じますよね?これはどういうわけかPythonリストに関連しています。以前は(常に各要素をコピーして)、別の非効率的なアプローチを使用していました。
PS:ulimit -n
1024を生成し、プログラムはファイル番号498で失敗します。
に関連しているかもしれませんが、解決策が機能しません:NumPyとmemmap:[Errno24]開いているファイルが多すぎます
r - RNetCDF を使用した R の結果に一貫性がない - なぜですか?
RNetCDF を使用して NetCDF データ ファイルからデータを抽出する際に問題があります。各データ ファイルには、3 つのディメンション (経度、緯度、日付) と 3 つの変数 (緯度、経度、気候変数) があります。4 つのデータセットがあり、それぞれに異なる気候変数があります。
わかりやすくするために、print.nc(p8m.tmax) からの出力の一部を次に示します。他のデータセットは、特定の気候変数を除いて同一です。
RNetCDF パッケージの var.get.nc 関数を使用すると、理解できない動作が発生します。
たとえば、最大温度データ (p8m.tmax <- open.nc(tmaxdataset.nc)) から stval で始まる 82 個の値を抽出しようとすると、
(ここで、lon_val と lat_val は、関心のある座標のデータセット内の位置を指定し、stval は stval が which(time_vec==200201) に設定され、この場合は 1285 に設定されます。) エラーが発生します: 引数が無効です。
しかし、80 と 81 の値を正常に抽出した後
82 のコマンドは次のように機能します。
同じ構造の tmin ファイルでも同じ問題が発生しますが、82 ではなく 36 で発生します。
エラーを生成: 引数が無効です
しかし、30、31などのカウントで繰り返した後
動作します。
これらの例では、最後のカウントで関数が失敗しているように見えますが、実際にはそうではありません。最初の例では、84 個の値を要求した後、var.get.nc が Error: Invalid argument を返しました。次に、データセットの開始点を変更し、一度に 1 つの値のみを要求することで、失敗を 82 番目のカウントに絞り込みました。問題が発生する特定の番号も異なります。データセットを閉じて再度開くと、別の場所で問題が発生します。
上記の特定の例では、lon_val と lat_val はそれぞれ 1595 と 1751 であり、関心のある緯度と経度の緯度と経度のディメンションに沿ってデータセット内の位置を識別します。1595 番目の緯度と 1751 番目の経度は問題ではありません。でも。この問題は、私が試した他のすべての緯度と経度で発生します。
気候変数の次元 (stval) に沿ってデータセット内の開始位置を変更したり、(オブジェクト stval の代わりにコマンドで数値として) 別の場所を指定したりしても、問題は解決しません。
この問題は常に発生するわけではありません。同じコードを 3 回続けて実行し (実行の間にすべてのオブジェクトをクリアする)、毎回異なる結果を得ることができます。最初の実行は取得しようとしている 7 番目のエントリで停止する可能性があり、2 回目は正常に動作し、3 回目の実行は 83 番目のエントリで停止する可能性があります。私はそのような一貫性のない行動に完全に困惑しています。
open.nc 関数も同じエラーで失敗し始めました: 引数が無効です。var.get.nc の問題と同様に、これも矛盾して発生します。
変数を抽出する際の最初の失敗の原因を知っている人はいますか? そして、どうすればそれを防ぐことができますか?データ ファイルのサイズ (それぞれ最大 60 GB) および/またはネットワーク ドライブ経由でデータ ファイルにアクセスしているという事実に関係している可能性はありますか?
これはここでも尋ねられました: https://stat.ethz.ch/pipermail/r-help/2011-June/281233.html