Pythonでシェープファイルポリゴンを使用してnetcdfからデータを抽出する


11

特定のシェープファイルを使用して、NetCDFからデータをサブセット化する必要があります。データは、1/4度の解像度での海面温度と海の色です。米国を表す4つのポリゴンがあります。北東大陸棚の大規模な海洋生態系とそのデータを抽出するために使用する必要があるサブコンポーネント。私は1982-2014の月次複合ファイルで作業しているので、このデータ抽出ルーチンは自動化する必要があります。ファイルはすでに[35、45、-80、-60]のおおよその作業領域グリッドにサブセット化されています。

ここに画像の説明を入力してください

以前は、RでHDF5データファイルをラスターに変換してこの方法で処理していましたが、この方法は非常に効率が悪く、現在のNetCDFファイルを使用するpythonでより良い解決策があると確信しています。

これまでは、GDALとフィオナを使用して形状ファイルを読み込み、NetCDF4を使用してデータファイルをロードしてきました。データをサブセット化する方法がわかりません。私はこれを見つけました:

GDAL for Python:NetCDFファイルからサブドメインを抽出しますか?

しかし、私はこれらのポリゴンが確かにそうではない単純なバウンディングボックス以外の何かを使用してnetcdfファイルをサブセット化する方法についての最も曖昧な考えを持っていません。

ポリゴンルーチンのポイントはおそらく機能するのに永遠を要しますが、これらの形状に合うように回転された小さな境界ボックスを使用してデータをサブセット化し、最初の開始点としてポリイン検索を行うことができます。

lon / lat境界ボックスを使用して、曲線のnetCDFファイル(ROMSモデル出力)をサブセット化します。

何か案は?

編集1

OpenClimateGISパッケージに出くわしました。これは法案に完全に適合しているようです... http://ncpp.github.io/ocgis/examples。 html#advanced-subsetting


編集1の最後のリンクは無効になっているようです。これが最善の代替手段のようです:earthsystemcog.org/projects/openclimategis
Aaron

回答:


1

これはあなたのニーズに適応できるかもしれません。

Pythonからコマンドラインを呼び出すことを気にしない場合は、次のようにすることができますgdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tif-cwhereそして-csql、より適切であるかもしれないgdalwarpオプションクリッピングのための4つの多角形のいずれかを選択します。


1

これを見てくださいhttps : //stackoverflow.com/questions/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile

覚えておきたいのは、NetCDFを読み込んだら、NumPy配列を操作するということです。

何を出力しようとしていますか?ポリゴン領域に基づく統計の要約?

とにかく、これが私がやることです:

  1. シェープファイルをロードし、サポートされている形式で領域を取得します(上記のリンクのmatplotlibマスクプロセスを目指してください)。
  2. NetCDFファイルをロードし、データを単一のX、Y、T numpy配列に取得します
  3. ポリゴンを使用してその配列をマスクします(一度に1つですか?)
  4. 要約統計をエクスポートします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.