불규칙한 그리드 (램버트 원추형)에서 일반 그리드로 데이터를 재구성해야합니다. 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[lon_n<0] = lon_n[lon_n<0]+360
것을 지금은 그들이 볼을 그릴 경우 좋은 및 확인 :
가 그럼 난 내 새로운 세트를 만들 정규 좌표 :
XI = np.arange(148,360)
YI = np.arange(0,87)
XI, YI = np.meshgrid(XI,YI)
위의 대답에 이어 나는 fol lowing 코드 :
데이터의 해상도가 30km 약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)
pyresample.kd_tree 수입 resample_nearest에서 pyresample.geometry 수입 SwathDefinition 에서
, 그래서 70km를 넣어, 내가 넣어 fill_value를는의 하나입니다 데이터, 물론 나는 제로 또는 나노를 넣을 수 있습니다.
그러나 빈 배열이 나타납니다.
내가 뭘 잘못 했니? 또한 - 그것을하는 다른 방법이 있다면, 나는 그것을 알고 싶어합니다. 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")
을 그리고 괜찮을 것 같다 :
하지만 그 이후, pyresample에 대한 자세한 내용을 이해하고 싶습니다 너무 강력 해 보인다.
트릭을했습니다! 그것은 부유해야했습니다. – claire