いくつかのポリゴン(カナダの州) があり、 を使用して読み取り、GeoPandas
これらを使用してマスクを作成し、2 次元の緯度経度グリッド上のグリッド データに適用したいと考えています ( を使用してnetcdfファイルから読み取りますiris
)。最終的な目標は、特定の州のデータのみを残し、残りのデータをマスクすることです。したがって、マスクは、州内のグリッド ボックスの場合は 1 になり、州外のグリッド ボックスの場合は 0 または NaN になります。
ポリゴンは、こちらのシェープファイルから取得できます: https://www.dropbox.com/s/o5elu01fetwnobx/CAN_adm1.shp?dl=0
私が使用している netcdf ファイルは、 https ://www.dropbox.com/s/kxb2v2rq17m7lp7/t2m.20090815.nc?dl=0 からダウンロードできます。
ここには2つのアプローチがあると思いますが、両方に苦労しています:
1) 多角形を使用して緯度経度グリッドにマスクを作成し、これを Python 以外の多くのデータファイルに適用できるようにします (推奨)。
2) 多角形を使用して、読み込まれたデータをマスクし、関心のある州内のデータのみを抽出して、対話的に操作します。
これまでの私のコード:
import iris
import geopandas as gpd
#read the shapefile and extract the polygon for a single province
#(province names stored as variable 'NAME_1')
Canada=gpd.read_file('CAN_adm1.shp')
BritishColumbia=Canada[Canada['NAME_1'] == 'British Columbia']
#get the latitude-longitude grid from netcdf file
cubelist=iris.load('t2m.20090815.nc')
cube=cubelist[0]
lats=cube.coord('latitude').points
lons=cube.coord('longitude').points
#create 2d grid from lats and lons (may not be necessary?)
[lon2d,lat2d]=np.meshgrid(lons,lats)
#HELP!
助けやアドバイスをありがとう。
更新: 以下の @DPeterK の優れたソリューションに従って、元のデータをマスクして、次のようにすることができます。