From d0d897674bf29bf68353c3d3e32734abc00ebaf4 Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Wed, 20 Dec 2023 14:03:23 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=B4=A8=E9=87=8F=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=EF=BC=9A=E5=B0=8F=E4=BA=8E0=E7=9A=84=E8=BE=90=E4=BA=AE?= =?UTF-8?q?=E5=BA=A6=E5=80=BC=E8=AE=BE=E7=BD=AE=E4=B8=BA=E5=BE=88=E5=B0=8F?= =?UTF-8?q?=E7=9A=84=E6=AD=A3=E5=80=BC=EF=BC=9B=202=E3=80=813fld=E5=92=8Cs?= =?UTF-8?q?fld=EF=BC=9A=E9=99=90=E5=88=B6=E6=89=BEOA=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E7=AA=97=E5=8F=A3=E5=88=B0759-761nm=EF=BC=9B=203?= =?UTF-8?q?=E3=80=813fld=E5=92=8Csfld=EF=BC=9A=E9=99=90=E5=88=B6=E6=89=BEO?= =?UTF-8?q?A=E4=BD=8D=E7=BD=AE=E7=9A=84=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E9=97=B4=20=E2=86=92=20=E6=97=A9=E4=B8=8A10=E7=82=B9?= =?UTF-8?q?=E5=88=B0=E4=B8=8B=E5=8D=883=E7=82=B9=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sif_methods.py | 23 ++++++++++++++++------- sif_retrieval.py | 11 +++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/sif_methods.py b/sif_methods.py index 87fd113..d387af4 100644 --- a/sif_methods.py +++ b/sif_methods.py @@ -6,11 +6,16 @@ def cal_inside_bands_ave(data): ''' 根据多个光谱找出窗口内数据最低点对应波长 ''' - sky_spec = data.sky - veg_spec = data.veg - wvl_inside_band_l = np.mean(veg_spec.idxmin(dim='Wavelength')).values - wvl_inside_band_e = np.mean(sky_spec.idxmin(dim='Wavelength')).values - return[wvl_inside_band_l,wvl_inside_band_e] + sky_spec = data.sky.to_pandas().between_time('10:00:00', '15:00:00') + veg_spec = data.veg.to_pandas().between_time('10:00:00', '15:00:00') + + sky_idxmin = sky_spec.idxmin(axis=1) + veg_idxmin = veg_spec.idxmin(axis=1) + + wvl_inside_band_l = veg_idxmin.mean() + wvl_inside_band_e = sky_idxmin.mean() + + return[wvl_inside_band_l, wvl_inside_band_e] def cal_outside_values_mean(data,outer): ''' @@ -38,7 +43,9 @@ def sfld(data,wl_range,outer): nmeas_ = data.Measures.size data = data.where((data.Wavelength>wl_range[0])&(data.Wavelength outer[1]) & (data.Wavelength < outer[1] + 3), drop=True) + [wvl_inside_band_l,wvl_inside_band_e]=cal_inside_bands_ave(data2) for i in range(0,nmeas_): _data = data.isel(Measures=i) veg_out,sky_out,_ = cal_outside_values_mean(_data,outer) @@ -67,7 +74,9 @@ def fld3(data,wl_range,outer_left,outer_right): nmeas_ = data.Measures.size data = data.where((data.Wavelength>wl_range[0])&(data.Wavelength outer_left[1]) & (data.Wavelength < outer_right[0]), drop=True) + [wvl_inside_band_l,wvl_inside_band_e]=cal_inside_bands_ave(data2) # 应该局限到759-761 for i in range(0,nmeas_): _data = data.isel(Measures=i) veg_out_left,sky_out_left,wvl_outer_left = cal_outside_values_mean(_data,outer_left) diff --git a/sif_retrieval.py b/sif_retrieval.py index 6ffd786..40f82e8 100644 --- a/sif_retrieval.py +++ b/sif_retrieval.py @@ -168,11 +168,21 @@ def processing(standard_sif, folder, out_file, pars, data, header, sky_p='P1', m # _ = _.where((_.Wavelength>731.3)&(_.Wavelength<782),drop=True) sky = _.sel(point=sky_p, drop=True).rename('sky') + # 质量控制 + tmp = sky.values + tmp[tmp < 0] = 0.0000000000000001 + sky.values = tmp + for p in _.point: if p == sky_p: continue else: veg = _.sel(point=p, drop=True).rename('veg') + # 质量控制 + tmp = veg.values + tmp[tmp < 0] = 0.0000000000000001 + veg.values = tmp + input_each = xr.merge([sky, veg]) _hf = intep(standard_sif, input_each.Wavelength.values) # 将标准sif插值匹配到数据的波长 input_each['hf'] = (['Wavelength'], _hf) @@ -289,4 +299,5 @@ def main(): if __name__ == '__main__': + print('Version: 2.3.6') main()