def Get_data_of_area(self, data, var, product_n): # 2次元のデータは勿論、3次元のデータもこの関数を使ってtrimmingできます。 import D import numpy as np import convert xgrid, ygrid, zgrid = D.get_grid_value('t', product_n) if var == 'u' or var == 'v': if data.ndim == 3: data = convert.convert_UVgrid_value_to_Sgrid_value_3D(data) elif data.ndim == 2: data = convert.convert_UVgrid_value_to_Sgrid_value_2D(data) mx = np.where(xgrid == self.wlon)[0][0] nx = np.where(xgrid == self.elon)[0][0] + 1 my = np.where(ygrid == self.slat)[0][0] ny = np.where(ygrid == self.nlat)[0][0] + 1 data = data[my:ny, mx:nx] xgrid = xgrid[mx:nx] ygrid = ygrid[my:ny] return data, xgrid, ygrid
def Get_data_of_AreaSection_from_data(self, data, var, product_n): # 例えばwlon=10.5, elon=19.5だったとしたら、 # Data_wは経度10.0度、Data_e=は経度20度に於けるデータを取得することとします。 import numpy as np import D import convert xgrid, ygrid, zgrid = D.get_grid_value('t', product_n) if var == 'u' or var == 'v': if data.ndim == 3: data = convert.convert_UVgrid_value_to_Sgrid_value_3D(data) elif data.ndim == 2: data = convert.convert_UVgrid_value_to_Sgrid_value_2D(data) mx = np.where(xgrid == self.wlon)[0][0] nx = np.where(xgrid == self.elon)[0][0] + 1 my = np.where(ygrid == self.slat)[0][0] ny = np.where(ygrid == self.nlat)[0][0] + 1 Data_S = 0.5 * (data[my - 1, mx:nx] + data[my, mx:nx]) Data_N = 0.5 * (data[ny - 1, mx:nx] + data[ny, mx:nx]) Data_W = 0.5 * (data[my:ny, mx - 1] + data[my:ny, mx]) Data_E = 0.5 * (data[my:ny, nx - 1] + data[my:ny, nx]) Data = EACH_SECTION(Data_S, Data_N, Data_W, Data_E) return Data