2016-10-12 5 views
0

気象データ(緯度、経度、降水量、気温など)を含む虹彩キューブを処理し、定義された領域(国など)で統計を計算することに興味があります。シェイプファイルを使用してIRISキューブに定義された領域をクリップする

このpostは、箱(最小緯度、最小緯度、最大緯度、最大緯度)で立方体を裁断する方法を説明しますが、さらに進んでシェイプファイルを使用して正確な領域を選択したいと思います。

このpostは、マスクに関連付けられたシェイプファイルを使用してイメージをトリミングすることは可能だと説明していますが、アイリスキューブでどのように動作させることができるかわかりません。

誰かが私に例を与えたり、私にそれを行う方法を説明したりすることができれば、とても役に立ちます。

PS:私はPythonでかなりnoobieです。

答えて

1

Fionaこの動作するはずのような何か:

from shapely.geometry import MultiPoint 

# Create a mask for the data 
mask = np.ones(cube.shape, dtype=bool) 

# Create a set of x,y points from the cube 
x, y = np.meshgrid(cube.coord(axis='X').points, cube.coord(axis='Y').points) 
lat_lon_points = np.vstack([x.flat, y.flat]) 
points = MultiPoint(lat_lon_points.T) 

# Find all points within the region of interest (a Shapely geometry) 
indices = [i for i, p in enumerate(points) if region.contains(p)] 

mask[np.unravel_index(indices)] = False 

# Then apply the mask 
if isinstance(cube.data, np.ma.MaskedArray): 
    cube.data.mask &= mask 
else: 
    cube.data = np.ma.masked_array(cube.data, mask) 

2次元キューブのこののみ動作しますが、マスクは唯一の緯度/経度の寸法を超えているように、ただより高い次元のための微調整が必​​要です。

私は実際にCISにこの動作を実装しましたので、あなたにとってはより簡単かもしれないcube.subset(shape=region)を行うことができます。

関連する問題