問題タブ [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.
r - このコードをどのように高速化しますか? netcdf からのデータの解像度を下げてから、統計用に xyz 形式に変換する
トウモロコシの収量と収穫面積の netcdf を取得し、解像度を 2.5 分角から 0.5 度に縮小してから、全体を XYZ 形式に変換して、データとより簡単に「会話」できるようにします。その形式になっています。(他のデータを行列形式に変換できると思いますが、xyz が好きです。)
データはこちら。
以下のコードは、収穫された面積と平均収量から総生産量を計算するためのいくつかの関数を定義し、netcdf を照会するときにいくつかの「フィーダー」データを使用し、次に plyr を使用してフィーダーをループし、データを抽出し、関数を作成し、xyz に保存します。動作しますが、これらのファイルの 1 つだけを実行するのに約 30 分かかり、100 以上のファイルがあります。このコードを最適化する方法についての提案は素晴らしいものです。より大きなデータのチャンクを抽出してそれらに関数を適用する方が速いでしょうか? たぶん、地球のストライプ全体ですか?これがより速いかどうかをアプリオリに知るにはどうすればよいですか?
前もって感謝します。
windows - Windows 上の Perl の NetCDF
Windows 7 (64 ビット) で NetCDF ファイルを使用してデータ アクセスを行う学生の 1 人を支援しています。好みの言語 (Perl) のバインドはありますが、ビルド済みの NetCDF ライブラリ バイナリが見つからないか、Perl 実行可能ファイルが見つけられるように配置する場所がわかりません。誰もが開始パンくずリストを持っていますか? この 1 つの目的のために Cygwin GCC スタック全体をロードすることは避けたいと考えていました。本当に必要なのは、DLL と、それを配置する適切な場所の知識だけです。
ティア、
右
r - netcdf ファイルのバッチ読み取りと 1 つの変数の平均化
私は新しいRユーザーです。私は今、次のような 1979 年の毎日の netcdf データを持っています:
sm19790101.1.nc
sm19790102.1.nc
。
.
.
sm19791231.1.nc
「sm」と呼ばれる変数を月ごとの解像度に平均化する必要があります。私は今これを行うことができます:
1月のすべてのデータをjanに移植しますが、各ファイルを開いて特定の変数を取得する方法がわかりません(Rnetcdfパッケージをインストールしました). これを手動で行う場合は、次のようになります。
そして、それらを平均します...
問題は、ファイル名の一部として変数 (01-31 など) を含むファイルを読み取り、月全体をループする方法だと思います。
c++ - ほとんどの NaN を含む NetCDF ファイルの作成
ほとんど NaN 値を持つ NetCDF ファイルを作成しています。大きなディスク容量を占有するのではなく、圧縮するように指定する方法はありますか? University Corporation for Atmospheric Research C++ NetCDF ライブラリを使用しています。
ありがとう!
python - NetCDF ファイルからのデータを使用して PostgreSQL データベースをロードする
8 つの変数を含む netCDF ファイルがあります。(申し訳ありませんが、実際のファイルを共有することはできません) 各変数には、時間と駅の 2 つの次元があります。時間は約 14 ステップで、ステーションは現在 38000 の異なる ID です。したがって、38000 の異なる「場所」(実際には単なる ID) に対して、8 つの変数と 14 の異なる時間があります。
このデータを PostGres データベースにロードして、後で視覚化するために station_name に一致するジオメトリにデータを結合できるようにする必要があります。
現在、netCDF4-module を使用して Python でこれを行っています。機能しますが、永遠にかかります!今、私はこのようにループしています:
私のマシンではこれを実行するのに数分かかりますが、もっと賢い方法で実行できると感じています。
これをよりスマートな方法で行う方法について、誰にもアイデアがありますか? できればPythonで。
java - NetCDF Java ライブラリを使用した HDF5 データ セットの読み取り
HDF5 には、データ セット、各列に名前が付けられた表形式のデータを含むいくつかのファイルが与えられており、異なるデータ型 (たとえば、文字列型の「作成者」、符号なし整数型の「カウント」など) である可能性があります。 HDF5 を読み取るために私が見つけた唯一の純粋な Java (つまり非 JNI) ライブラリは NetCDF です。
NetCDF を使用して、HDF5 データ セットから 1 列のデータを読み取ることができるようVariable
です。しかし、データ セットからデータのテーブル全体を読み取る方法はありませんか? NetCDF への HDF5 データ セットは、テーブルではなく、一次元の配列値を持つ変数のコレクションにすぎませんか?
編集:さらに説明しましょう。HDFView 2.9 で HDF5 ファイルの 1 つを開き、「HDF5 化合物データセット」の項目に移動して「開く」を選択すると、「変数」が列ヘッダーとして表示され、各行がインデックスでマークされています。例として、integer-32-signed 型の「Foo」列と、string 型の「Bar」列があるとします。
しかし、この「複合データセット」からデータをロードするための NetCDF API は、表形式のデータとはまったく似ていないようです。「Foo」という名前の「変数」の配列全体をロードするように要求できますが、その「変数」は「Bar」変数とは無関係のようです。これは、「Foo」変数と「Bar」変数が異なる長さの配列になる可能性があることを意味しますか?
テーブルでは、行ごとにアクセスできると期待しています。「5行目にすべての値を含む配列をください」と言うことができますか? プリミティブ値やボックス化などに問題がありますが、行全体の基になるバイトを返すようにリクエストできますか? 「列 'Foo' の 5 行目の値を整数として教えてください」と言えますか? 私が本当に要求したいのは、「Foo」配列の要素 5 だとおっしゃるかもしれません。そこで、元の質問に戻ります:質問 1.データ セットの NetCDF API は、完全に無関係な変数のグループ (潜在的に別の配列の長さなど) にアクセスするだけですか? それとも、これにアクセスできる API がありますか?真のテーブルとしてのデータ?
それでも表形式のビューと変数のリストの違いがわからない場合は、次の関連する質問を検討してください。質問 2.データ セット テーブルの行数を調べるにはどうすればよいですか? データセット内のすべての変数を反復処理して、各配列の最大長を見つける必要がありますか?
変数の配列の長さを見つけているので、さらに別の問題が発生します:質問 3.配列全体を読み取らずにデータセット内の変数の長さを見つけるにはどうすればよいですか? を使用するnetCDFFile.findVariable("/some/path/dataset.variable").getSize()
と、単純に値が返されます1
。実際に配列全体 (数メガバイトになる可能性があります!) を読み取ってからnetCDFVariable.read().getSize()
、正しい長さを取得します。より効率的な方法はありませんか?
回答:回答は、 John Caron の回答の詳細であることが判明しました。何らかの理由で、親構造 (データセット/テーブル) が固定長であるにもかかわらず、各変数 (列) が可変長であると見なします。より表形式の方法で変数のグループを操作するには、親Structure
(自体 a Variable
) への参照を取得し、そのサイズを尋ねます。Structure.getSize()
値は、各変数の長さを正しく示します。ただし、それぞれがVariable.getSize()
を返し1
ます。
python - 複数の numpy 配列を平均するときの不正確な合計
複数のnumpy配列から要素の平均を作成して配列しようとしています。2 つの配列を (numpy.add()
ブロードキャストを使用または経由してa1 + a2
) 一緒に追加すると、生成された合計が正しくないように見えます。
コード
出力(ディレクトリに 2 つのデータ ファイルを含む)
最初のファイルでは、最初の配列の合計と実行中の合計が同じになるはずです。どちらのデータセットにも負の値はありません。
更新 1:
を試した後vals = np.copy(dataset.variables["vals"])
、欠落している値が として転送されたように見えます-999
。これは、配列を初期化する他の方法では発生しませんでした。ただし、まだ間違った合計が得られます。
更新 2:
すっごく... netCDF4
netCDF データセットに欠損値があると、マスクされた numpy 配列が自動的に作成されるようです。を実行するnp.zeros_like()
と、マスクされた値がコピーされます。これは、最初のデータ ファイルから作成しているゼロ配列が、同じ数の要素を持っているにもかかわらず、そのファイルにデータが欠落しているマスクを使用して作成されることを意味します。マスクされた配列が一緒に追加されると、それらのマスクも追加され、異なる合計が得られます。
問題は今、
すべてのデータを2回初期化することなく、指定されたファイル/日付範囲の累積マスクを効率的に作成するにはどうすればよいですか?
xml - リモート 3D および 4D 変数の NcML 集約?
NcML を使用して 3D および 4D グリッドを集約できますか? 次元数が違うのでよくわかりませんでした。たとえば、海面の高さ (ssh) と水温の場合、ssh には 3 つの次元 [時間、緯度、経度] があり、温度には 4 つの次元 [時間、深さ、緯度、経度] がありますか? 私のテストはうまくいかなかったので、3D 変数と 4D 変数を別々のカタログに分割する必要があると思います。しかし、他の人が別の提案をしてくれることを願っていますか?
以下のスニペットで「ユニオン」集計を使用してみましたが、3D 変数が 2008 年 12 月 28 日に始まり、4D 変数が 2008 年 5 月 8 日に始まるため、時間ディメンションが適切にマッピングされませんでした。
次に、「時間」ディメンションで「joinExisting」集計を試みましたが、これは、データセットにそれぞれ同じ変数が含まれている場合にのみ機能します (含まれていません)。集計で最初にリストするデータセットに応じて、次の例では 3D または 4D 変数のいずれかが除外されます。
では、これらのデータセットを集約する方法はありませんか? 3D 変数と 4D 変数を分けておく必要がありますか?
ありがとうございます。John Maurer Pacific Islands Ocean Observing System (PacIOOS) ハワイ大学マノア校