2016-09-13 13 views
0

不規則なグリッド(ランバート円錐)のデータを通常のグリッドに再分割する必要があります。 pyresampleは私の最善の策だと思う。実際には私のオリジナルのlat、lonは1Dではありません(basemap.interpまたはscipy.interpolate.griddataを使う必要があるようです)。通常のグリッドに不規則なグリッドデータを再分割するpyresampleを理解する

私はthis SO's answerが役に立ちました。しかし、空の補間データが得られます。私はそれが私の影響力の半径と私のデータがラップされているという事実の選択と関係があると思う(??)。

これは私のコードである:

import numpy as np 
from matplotlib import pyplot as plt 
import netCDF4 
%matplotlib inline 
url = "http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/NARR/Dailies/monolevel/hlcy.2009.nc" 
SRHtemp = netCDF4.Dataset(url).variables['hlcy'][0,::] 
Y_n  = netCDF4.Dataset(url).variables['y'][:] 
X_n  = netCDF4.Dataset(url).variables['x'][:] 
T_n  = netCDF4.Dataset(url).variables['time'][:] 

lat_n  = netCDF4.Dataset(url).variables['lat'][:] 
lon_n  = netCDF4.Dataset(url).variables['lon'][:] 

lat_nとlon_nは、不規則であり、緯度と経度は、投影座標x、yに対応します。

lon_n[lon_n<0] = lon_n[lon_n<0]+360 

私はそれらをプロットした場合、今、彼らは素晴らしく、[OK]を見ているよう:

enter image description here

をその後、私は私の新しいセットを作成する方法のためlon_nの

は、私が追加であり、通常の座標:

XI = np.arange(148,360) 
YI = np.arange(0,87) 
XI, YI = np.meshgrid(XI,YI) 

上記の答えに続いて、私はfol lowingコード:データの解像度を約30キロで、私は70キロを入れて、私は入れfill_valueはからです

def_a = SwathDefinition(lons=XI, lats=YI) 
def_b = SwathDefinition(lons=lon_n, lats=lat_n) 
interp_dat = resample_nearest(def_b,SRHtemp,def_a,radius_of_influence = 70000,fill_value = -9.96921e+36) 

resample_nearest pyresample.kd_treeインポートからpyresample.geometryインポートSwathDefinition から

データはもちろん、ゼロまたはナノを入れることができます。

しかし、私は空の配列を取得します。

どうすればいいですか?また、別の方法がある場合は、それを知ることに興味があります。 Pyresampleのドキュメントは少し薄いので、もう少し手助けが必要です。

私はthis answerは別のgriddata機能を使用することを示唆している見つけた:

import matplotlib.mlab as ml 
resampled_data = ml.griddata(lon_n.ravel(), lat_n.ravel(),SRHtemp.ravel(),XI,YI,interp = "linear") 

をして、OKのようです:

enter image description here

しかし、私はそれ以来、pyresampleについての詳細を理解したいと思いますとても強力です。

答えて

2

問題は、XIとXIが浮動小数点ではなく整数であることです。あなたは、単に整数データ型を扱うことができないことがpyresampleから、文書化されていない直感的、そしておそらくバグだらけの動作です

XI = np.arange(148,360.) 
YI = np.arange(0,87.) 
XI, YI = np.meshgrid(XI,YI) 

をすることによってこの問題を解決することができます。あなたのコーディングスタイルの詳細

いくつかの注意事項:それはXIとYI変数を上書きする必要はありません

  • 、あなたはこの
  • によって多くを獲得していないあなたは一度だけNetCDFファイルをロードする必要がありますし、そのオブジェクトを介して変数にアクセスする
+0

それはトリックでした!それは浮動する必要があった。 – claire

関連する問題