daout = [] #sfc u = data[var_sfc[0]].values v = data[var_sfc[1]].values attrs_u = data[var_sfc[0]].attrs attrs_v = data[var_sfc[1]].attrs #missing values need to be searched dfu = data[var_sfc[0]].to_pandas() dfv = data[var_sfc[1]].to_pandas() if (dfu.isnull().values.sum() != 0 or dfv.isnull().values.sum() != 0): print("missing value exists in input") else: lon2d = lon.reshape(1, -1) lat2d = lat.reshape(-1, 1) xd, yd, zd = librotate.uv2xyzd(u, v, lon2d, lat2d) da_xd = xr.DataArray(xd.reshape(1,len(lat),len(lon)),\ [('time',pd.date_range(date,periods=1)),('latitude',lat),('longitude',lon)],\ name='xd') da_yd = xr.DataArray(yd.reshape(1,len(lat),len(lon)),\ [('time',pd.date_range(date,periods=1)),('latitude',lat),('longitude',lon)],\ name='yd') da_zd = xr.DataArray(zd.reshape(1,len(lat),len(lon)),\ [('time',pd.date_range(date,periods=1)),('latitude',lat),('longitude',lon)],\ name='zd') xd_interp = da_xd.interp(longitude=newlon, latitude=newlat) yd_interp = da_yd.interp(longitude=newlon, latitude=newlat) zd_interp = da_zd.interp(longitude=newlon, latitude=newlat) #missing value
daout = [] #sfc u = data[var_sfc[0]].values v = data[var_sfc[1]].values attrs_u = data[var_sfc[0]].attrs attrs_v = data[var_sfc[1]].attrs #missing values need to be searched dfu = data[var_sfc[0]].to_pandas() dfv = data[var_sfc[1]].to_pandas() if (dfu.isnull().values.sum() != 0 or dfv.isnull().values.sum() != 0): logging.warning("missing value exists in input") continue lon2d = lon.reshape(1, -1) lat2d = lat.reshape(-1, 1) xd, yd, zd = librotate.uv2xyzd(u, v, lon2d, lat2d) #debug ud, vd = librotate.xyzd2uv(xd, yd, zd, lon2d, lat2d) logging.debug(f"uv2xyzd u {np.max(np.abs(u-ud))}") logging.debug(f"uv2xyzd v {np.max(np.abs(v-vd))}") da_xd = xr.DataArray(xd.reshape(1,len(lat),len(lon)),\ [('time',pd.date_range(date,periods=1)),('latitude',lat),('longitude',lon)],\ name='xd') da_yd = xr.DataArray(yd.reshape(1,len(lat),len(lon)),\ [('time',pd.date_range(date,periods=1)),('latitude',lat),('longitude',lon)],\ name='yd') da_zd = xr.DataArray(zd.reshape(1,len(lat),len(lon)),\ [('time',pd.date_range(date,periods=1)),('latitude',lat),('longitude',lon)],\ name='zd')
('lonlat1d',np.arange(len(lattc)))],\ attrs=attrs,name='msl') logging.debug(dataout) daout.append(dataout) #exit() #u, v attrs_u = data['u'].attrs attrs_v = data['v'].attrs #missing values need to be searched if (np.isnan(u).sum() != 0 or np.isnan(v).sum() != 0): logging.warning("missing value exists in input") continue lon3d = lonin[None, None, :] lat3d = latin[None, :, None] xd, yd, zd = librotate.uv2xyzd(u, v, lon3d, lat3d) #debug ud, vd = librotate.xyzd2uv(xd, yd, zd, lon3d, lat3d) logging.debug(f"uv2xyzd u {np.max(np.abs(u-ud))}") logging.debug(f"uv2xyzd v {np.max(np.abs(v-vd))}") xb, yb, zb = librotate.uv2xyzd(ud, vd, lon3d, lat3d) logging.debug(f"xyzd2uv x {np.max(np.abs(xd-xb))}") logging.debug(f"xyzd2uv y {np.max(np.abs(yd-yb))}") logging.debug(f"xyzd2uv z {np.max(np.abs(zd-zb))}") da_xd = xr.DataArray(xd[None,:],\ [('time',pd.date_range(date,periods=1)),\ ('level',level),\ ('latitude',latin),('longitude',lonin)],\ name='xd') da_yd = xr.DataArray(yd[None,:],\