diff --git a/Ortho/OrthoMain.py b/Ortho/OrthoMain.py index e69ccf13..8b07528a 100644 --- a/Ortho/OrthoMain.py +++ b/Ortho/OrthoMain.py @@ -538,6 +538,7 @@ class OrthoMain: # 对映射表进行校正 sim_ori_tiff = out_dir_path + "\\" + "RD_sim_ori.tif" out_sim_ori = out_dir_path + "\\" + "sim_ori-ortho.tif" + out_sim_ori_temp = self.__workspace_baseMap_path + "\\" + "sim_ori-ortho.tif" parameter_path = os.path.join(self.__workspace_package_path, "orth_para.txt") in_tif_paths = list(glob.glob(os.path.join(slc_paths, '*.tiff'))) out_rpc_db = os.path.join(self.__workspace_baseMap_path, 'rpc_line.tif') @@ -573,7 +574,9 @@ class OrthoMain: lon_new = im_geotrans[0] + x lat_new = im_geotrans[3] - y im_geosNew = [lon_new, im_geotrans[1], im_geotrans[2], lat_new, im_geotrans[4], im_geotrans[5]] - ImageHandler().write_img(out_sim_ori, im_proj, im_geosNew, im_arr) + # ImageHandler().write_img(out_sim_ori, im_proj, im_geosNew, im_arr) + ImageHandler().write_img(out_sim_ori_temp, im_proj, im_geosNew, im_arr) + pp.resample_by_gdal(out_sim_ori_temp, out_sim_ori) # todo 重采样为方像元 os.remove(sim_ori_tiff) return out_sim_ori @@ -779,3 +782,4 @@ if __name__ == '__main__': pass end = datetime.datetime.now() logger.info('running use time: %s ' % (end - start)) + diff --git a/Ortho/Ortho_C_SAR_V3.xml b/Ortho/Ortho_C_SAR_V3.xml index 27fe87b2..03016058 100644 --- a/Ortho/Ortho_C_SAR_V3.xml +++ b/Ortho/Ortho_C_SAR_V3.xml @@ -49,7 +49,7 @@ DEFAULT DEFAULT - F:\VegetationPhenology-likun\rusuoces\GF3C_MYC_QPSI_006270_E100.4_N27.0_20230615_L1A_AHV_L10000158764.tar.gz + F:\isce_yuan\lancover-yuan\GF3B_KSC_QPSI_010328_E86.1_N44.5_20231109_L1A_AHV_L10000262134.tar.gz True False File @@ -62,12 +62,12 @@ DEM数字高程影像 30m分辨率DEM数字高程影像tif File - File + tif DEFAULT DEFAULT DEFAULT Cal - F:\VegetationPhenology-likun\rusuoces\dem + F:\xibei_LandCover\dem.tif True True File @@ -86,7 +86,7 @@ DEFAULT DEFAULT - F:\VegetationPhenology-likun\rusuoces\S1A + F:\isce_yuan\lancover-yuan\S1A_map True False File @@ -121,7 +121,7 @@ File tar.gz Cal - D:\micro\WorkSpace\ortho\Output\GF3C_MYC_QPSI_006270_E100.4_N27.0_20230615_L1A_AHV_L10000158764-ortho.tar.gz + D:\micro\WorkSpace\ortho\Output\GF3B_KSC_QPSI_010328_E86.1_N44.5_20231109_L1A_AHV_L10000262134-ortho.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/atmosphericDelay-C-SAR/AtmosphericDelay.xml b/atmosphericDelay-C-SAR/AtmosphericDelay.xml index 2d9a3b5c..ee147036 100644 --- a/atmosphericDelay-C-SAR/AtmosphericDelay.xml +++ b/atmosphericDelay-C-SAR/AtmosphericDelay.xml @@ -142,7 +142,7 @@ File tar.gz Man - D:\micro\WorkSpace\AtmosphericDelay\Output\GF3_SAY_FSI_001614_E113.2_N34.5_20161129_L1A_HHHV_L10002015686 + D:\micro\WorkSpace\AtmosphericDelay\Output\GF3_SAY_FSI_001614_E113.2_N34.5_20161129_L1A_HHHV_L10002015686-IADC.tar.gz diff --git a/atmosphericDelay-C-SAR/AtmosphericDelayMain.py b/atmosphericDelay-C-SAR/AtmosphericDelayMain.py index 57560cc6..e1fe7ebe 100644 --- a/atmosphericDelay-C-SAR/AtmosphericDelayMain.py +++ b/atmosphericDelay-C-SAR/AtmosphericDelayMain.py @@ -924,6 +924,8 @@ class AtmosphericMain: self.atmospheric_product_path = self.__workspace_atmos_dely_path + srcName_m + tar + ".tif" out_pha_path = os.path.join(apsWork, 'topo_pha.tiff') bias_result = createpha(master_pha, aux_pha, mas_lambd, out_pha_path) + out_result_path = os.path.join(apsWork, 'topo_pha_ERA5.tif') + correct_single_ifgram(Filt_path, out_pha_path, out_result_path) # bias_result = correct_single_ifgram(Filt_path, out_pha_path, self.atmospheric_product_path) # 剔除相位延迟后的数组->剔除相位延迟干涉图 ImageHandler.write_img(self.atmospheric_product_path, self.__proj, self.__geo, bias_result) # 剔除相位延迟后的数组->剔除相位延迟干涉图 diff --git a/backScattering/BackScatteringMain.py b/backScattering/BackScatteringMain.py index cdc806ec..1a355c93 100644 --- a/backScattering/BackScatteringMain.py +++ b/backScattering/BackScatteringMain.py @@ -298,6 +298,7 @@ class ScatteringMain: # 对映射表进行校正 sim_ori_tiff = out_dir_path + "\\" + "RD_sim_ori.tif" out_sim_ori = out_dir_path + "\\" + "sim_ori-ortho.tif" + out_sim_ori_temp = self.__workspace_baseMap_path + "\\" + "sim_ori-ortho.tif" parameter_path = os.path.join(self.__workspace_processing_path, "orth_para.txt") in_tif_paths = list(glob.glob(os.path.join(slc_paths, '*.tiff'))) out_rpc_db = os.path.join(self.__workspace_baseMap_path, 'rpc_line.tif') @@ -333,7 +334,8 @@ class ScatteringMain: lon_new = im_geotrans[0] + x lat_new = im_geotrans[3] - y im_geosNew = [lon_new, im_geotrans[1], im_geotrans[2], lat_new, im_geotrans[4], im_geotrans[5]] - ImageHandler().write_img(out_sim_ori, im_proj, im_geosNew, im_arr) + ImageHandler().write_img(out_sim_ori_temp, im_proj, im_geosNew, im_arr) + pp.resample_by_gdal(out_sim_ori_temp, out_sim_ori) #todo 重采样为方像元 os.remove(sim_ori_tiff) return out_sim_ori @@ -383,10 +385,8 @@ class ScatteringMain: ortho_bsMap_path = self.__workspace_baseMap_path bsMap_merged_path = DEMProcess.bsMap_merged(bsMap, meta_file_path, ortho_bsMap_path) - dem_path = self.cut_dem(dem_merged_path, meta_file_path) - in_slc_path = None for slc_path in in_tif_paths: if slc_path.find(".tiff") > 0 and ( diff --git a/backScattering/BackScatteringMain.spec b/backScattering/BackScatteringMain.spec index 73405a6a..8c336f80 100644 --- a/backScattering/BackScatteringMain.spec +++ b/backScattering/BackScatteringMain.spec @@ -1,6 +1,29 @@ # -*- mode: python ; coding: utf-8 -*- +import sys +from shutil import copy +import os +cwdpath = os.getcwd() +toolDir = os.path.join(cwdpath, 'tool') +if os.path.exists(toolDir): + os.remove(toolDir) +os.mkdir(toolDir) +source_folder = '../tool' + +def copy_file(path_read, path_write): + names = os.listdir(path_read) + for name in names: + path_read_new = os.path.join(path_read, name) + path_write_new = os.path.join(path_write, name) + if os.path.isdir(path_read_new): + if not os.path.exists(path_write_new): + os.mkdir(path_write_new) + copy_file(path_read_new, path_write_new) + else: + copy(path_read_new, path_write_new) + +copy_file(source_folder, toolDir) block_cipher = None diff --git a/backScattering/BackScattering_C_SAR_V3.xml b/backScattering/BackScattering_C_SAR_V3.xml index 2a19c44a..36665cac 100644 --- a/backScattering/BackScattering_C_SAR_V3.xml +++ b/backScattering/BackScattering_C_SAR_V3.xml @@ -42,7 +42,7 @@ File tar.gz Cal - F:\VegetationPhenology-likun\rusuoces\GF3C_MYC_QPSI_006270_E100.4_N27.0_20230615_L1A_AHV_L10000158764.tar.gz + F:\MicroWorkspace\20240826Ortho\GF3B_MH1_UFS_012705_E116.4_N44.2_20240422_L1A_DH_L10000343416.tar.gz True False File @@ -57,7 +57,7 @@ File File Cal - F:\VegetationPhenology-likun\lijiang\dem + F:\MicroWorkspace\20240826Ortho\dem True True File @@ -72,7 +72,7 @@ File File Cal - F:\VegetationPhenology-likun\rusuoces\S1A + F:\MicroWorkspace\20240826Ortho\S1GBM True True File @@ -89,7 +89,7 @@ File tar.gz Cal - D:\micro\WorkSpace\BackScattering\Output\GF3C_MYC_QPSI_006270_E100.4_N27.0_20230615_L1A_AHV_L10000158764-cal.tar.gz + D:\micro\WorkSpace\BackScattering\Output\GF3B_MH1_UFS_012705_E116.4_N44.2_20240422_L1A_DH_L10000343416-cal.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/deformation-C-SAR/Deformation_C_SAR_V3.xml b/deformation-C-SAR/Deformation_C_SAR_V3.xml index e784db6e..e947e526 100644 --- a/deformation-C-SAR/Deformation_C_SAR_V3.xml +++ b/deformation-C-SAR/Deformation_C_SAR_V3.xml @@ -79,7 +79,7 @@ DEFAULT DEFAULT Man - 34.62;34.67;113.15;113.18 + empty True True UploadInput diff --git a/deformation-C-SAR/geocoding.py b/deformation-C-SAR/geocoding.py index d61854a3..73606da9 100644 --- a/deformation-C-SAR/geocoding.py +++ b/deformation-C-SAR/geocoding.py @@ -87,9 +87,10 @@ def read_tiff_dataset(tiff_data,band_idx=0): def saveTiff(target_data_path,xsize,ysize,gt,srs,target_arr): driver = gdal.GetDriverByName('GTiff') # 数据类型必须有,因为要计算需要多大内存空间 + target_arr[np.where(target_data_path == -9999)] = 0 tiff_geo=driver.Create(target_data_path, int(xsize)+1, int(ysize)+1, 1, gdal.GDT_Float32) tiff_geo.GetRasterBand(1).WriteArray(target_arr) - tiff_geo.GetRasterBand(1).SetNoDataValue(-9999) + tiff_geo.GetRasterBand(1).SetNoDataValue(0) tiff_geo.SetGeoTransform(gt) tiff_geo.SetProjection(srs.ExportToWkt()) del tiff_geo @@ -136,10 +137,71 @@ def geoCoding(tree,X_min,X_max,Y_min,Y_max,block_size,value_data,target_arr): return target_arr + +def get_filt_fine_cor_path(isce_work_path): + flit_fine_cor_path_ls=[] + interferograms_path=os.path.join(isce_work_path,"Igrams") + for rootdir, dirs, files in os.walk(interferograms_path): + for filename in files: + # if filename=="filt_fine.unw.vrt": + if filename.endswith(".cor.vrt"): + flit_fine_cor_path_ls.append(os.path.join(rootdir, filename)) + + return flit_fine_cor_path_ls + +def detrend_2d(unw_filename,cor_filename, out_file): + + unwImg = ImageHandler.get_data(unw_filename) + # unwImg = unwImgt[1,:,:] + corImg = ImageHandler.get_data(cor_filename) + height = corImg.shape[0] + width = corImg.shape[1] + lines_intv = int(np.floor(height * 0.005)) + width_intv = int(np.floor(width * 0.005)) + x = np.arange(1, width, width_intv) + y = np.arange(1, height, lines_intv) + + pointX = [] + pointY = [] + pointZ = [] + + for i in y: + for j in x: + if corImg[i,j] < 0.2: + continue + else: + pointX.append(j) + pointY.append(i) + pointZ.append(unwImg[i,j]) + + int_xy = np.multiply(np.array(pointX), np.array(pointY)) + int_xx = np.multiply(np.array(pointX), np.array(pointX)) + int_yy = np.multiply(np.array(pointY), np.array(pointY)) + + design_matrix = np.column_stack((np.array(pointX), np.array(pointY), int_xy, int_xx, int_yy)) + X = np.linalg.lstsq(design_matrix, pointZ, rcond=None)[0] + a = X[0] # 系数1 + b = X[1] # 系数2 + c = X[2] # 系数3 + d = X[3] # 系数4 + e = X[4] # 系数5 + + dtd_unw = np.zeros((height, width), dtype=float) + for ii in range(width): + for jj in range(height): + str = a * (ii+1) + b * (jj+1) + c * (ii+1) * (jj+1) + d * (ii+1) * (ii+1) + e * (jj+1) * (jj+1) + # dtd_unw[ii, jj] = unwImg[ii, jj] - str + dtd_unw[jj, ii] = unwImg[jj, ii] - str + dtd_unw[np.where(corImg==0)] = 0 + ImageHandler.write_img(out_file, '', [0.0, 1.0, 0.0, 0.0, 0.0, 1.0], dtd_unw) + return dtd_unw + + def get_Dem(isce_work_path,temp_work_path,pack_path,product_name): # lamda=get_lambel_sentinel(isce_work_path) lamda=0.055517 filt_topophase_unw_path=get_filt_fine_unw_path(isce_work_path)[0] + filt_topophase_cor_path = get_filt_fine_cor_path(isce_work_path)[0] unw_tiff_path=os.path.join(temp_work_path,"unw.tiff") vrt2tiff(filt_topophase_unw_path,unw_tiff_path,1) @@ -166,7 +228,9 @@ def get_Dem(isce_work_path,temp_work_path,pack_path,product_name): lat = lat_data[:, lat_data.shape[1]-1] lat_min = np.min(lat) lat_max = np.max(lat) - unw_data=read_tiff_dataset(unw_tiff_path,band_idx=0) + out_detrend_path = os.path.join(temp_work_path, "detrend_unw.tif") + unw_data = detrend_2d(unw_tiff_path, filt_topophase_cor_path, out_detrend_path) + # unw_data=read_tiff_dataset(unw_tiff_path,band_idx=0) hgt_data=read_tiff_dataset(hgt_tiff_path,band_idx=0) los_data=los_data.reshape(-1) @@ -230,9 +294,9 @@ def get_Dem(isce_work_path,temp_work_path,pack_path,product_name): return dem_target_data_path if __name__ == '__main__': - isce_work_path = r"D:\micro\WorkSpace\Dem\Temporary\processing\isce_workspace" - temp_work_path = r"D:\micro\WorkSpace\Dem\test" - out_work_path = r"D:\micro\WorkSpace\Dem\test" - product = r'D:\micro\WorkSpace\Dem\test\dem.tiff' + isce_work_path = r"D:\micro\WorkSpace\AtmosphericDelay\Temporary\isce\processing\isce_workspace" + temp_work_path = r"D:\micro\WorkSpace\AtmosphericDelay\Temporary\deformation" + out_work_path = r"D:\micro\WorkSpace\AtmosphericDelay\Temporary\deformation" + product = r'D:\micro\WorkSpace\AtmosphericDelay\Temporary\deformation\dem.tiff' get_Dem(isce_work_path, temp_work_path, out_work_path, product) pass \ No newline at end of file diff --git a/landcover_c_sar/LandCover_C_SAR_V3.xml b/landcover_c_sar/LandCover_C_SAR_V3.xml index 0a9bf5bd..b9ad1805 100644 --- a/landcover_c_sar/LandCover_C_SAR_V3.xml +++ b/landcover_c_sar/LandCover_C_SAR_V3.xml @@ -42,7 +42,7 @@ DEFAULT Cal - F:\MicroWorkspace\GF3A_nanjing\input-ortho\GF3_SAY_QPSI_011444_E118.9_N31.4_20181012_L1A_AHV_L10003515422-ortho.tar.gz + F:\isce_yuan\lancover-yuan\GF3B_KSC_QPSI_010328_E86.1_N44.5_20231109_L1A_AHV_L10000262134-ortho.tar.gz True False File @@ -55,12 +55,12 @@ 标记数据 标记的样本数据 File - zip + csv DEFAULT DEFAULT DEFAULT Cal - F:\al_zhongji\C-SAR-data\landcover\CSAR_land_LandCoverLable.zip + F:\isce_yuan\lancover-yuan\train_landConver1.csv True True UploadTable @@ -120,7 +120,7 @@ DEFAULT DEFAULT Man - D:\micro\WorkSpace\LandCover\Output\GF3_SAY_QPSI_011444_E118.9_N31.4_20181012_L1A_AHV_L10003515422-ortho-LANDCLASS.tar.gz + D:\micro\WorkSpace\LandCover\Output\GF3B_KSC_QPSI_010328_E86.1_N44.5_20231109_L1A_AHV_L10000262134-ortho-LANDCLASS.tar.gz diff --git a/leafAreaIndex/LeafAreaIndex.xml b/leafAreaIndex/LeafAreaIndex.xml index 791ef882..73a0c56b 100644 --- a/leafAreaIndex/LeafAreaIndex.xml +++ b/leafAreaIndex/LeafAreaIndex.xml @@ -53,7 +53,7 @@ File tar.gz Man - E:\辅助数据\GF3Data\leafindex\GF3_MDJ_QPSI_031847_E116.4_N43.9_20220828_L1A_AHV_L10006708819-cal.tar.gz + F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-cal.tar.gz True False File @@ -81,9 +81,9 @@ 土壤水分产品 土壤水分产品 File - zip + tif Man - E:\辅助数据\GF3Data\leafindex\CSAR_leaf_NEW_soil_moisture.zip + F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-cal-SMC.tif True False File @@ -96,9 +96,9 @@ 叶面积指数实测数据 叶面积指数实测数据 File - zip + tif Man - E:\辅助数据\GF3Data\leafindex\CSAR_leaf_new_LAI.zip + F:\Tian-GF3-Wenchang\LAI\LAi.csv True False File @@ -111,9 +111,9 @@ NDVI NDVI影像,坐标系要求:WGS84 File - zip + tif Cal - E:\辅助数据\GF3Data\leafindex\CSAR_leaf_L9NDVI.zip + F:\Tian-GF3-Wenchang\NDVI\S2_NDVImed_SMC_GF3.tif True False File @@ -141,9 +141,9 @@ 地表覆盖度 地表覆盖度数据,坐标系要求:WGS84 File - zip + tif Cal - E:\辅助数据\GF3Data\leafindex\CASR_leaf_N50_40_2020LC030.zip + F:\Tian-GF3-Wenchang\landCover.tif True False File @@ -158,7 +158,7 @@ Value string Man - 10;20;30;40;50;60;80;90 + empty True False UploadInput @@ -235,7 +235,7 @@ File tar.gz Cal - D:\micro\WorkSpace\LeafAreaIndex\Output\GF3_MDJ_QPSI_031847_E116.4_N43.9_20220828_L1A_AHV_L10006708819-cal-LAI.tar.gz + D:\micro\WorkSpace\LeafAreaIndex\Output\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-cal-LAI.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/leafAreaIndex/LeafIndexMain.py b/leafAreaIndex/LeafIndexMain.py index c8e7624d..cfbd5351 100644 --- a/leafAreaIndex/LeafIndexMain.py +++ b/leafAreaIndex/LeafIndexMain.py @@ -371,7 +371,7 @@ class LeafIndexMain: # 处理归一化植被指数 F_VEG = (NDVI_tiff['data'] - NDVI_min) / (NDVI_max - NDVI_min) # 处理得到植被覆盖度 - soil_water_tiff['data'] = soil_water_tiff['data'] / 100.0 # 转换为百分比 + soil_water_tiff['data'] = soil_water_tiff['data'] # 转换为百分比 incident_angle['data'] = incident_angle['data'] * np.pi / 180.0 # 转换为弧度值 sigma_tiff['data'] = np.power(10, (sigma_tiff['data'] / 10)) # 转换为线性值 diff --git a/leafAreaIndex/sample_process.py b/leafAreaIndex/sample_process.py index c32132e5..f727c8b3 100644 --- a/leafAreaIndex/sample_process.py +++ b/leafAreaIndex/sample_process.py @@ -143,13 +143,13 @@ def check_sample(sample_list): sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma,sample_NDVI=item else: sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=item - if sample_sigma<=0: + if sample_sigma<=0 or np.isnan(sample_sigma): continue - if (sample_inc*180/np.pi)>90: + if (sample_inc*180/np.pi)>90 or np.isnan(sample_inc): continue - if sample_soil<=0 or sample_soil>=1: + if sample_soil<=0 or sample_soil>=1 or np.isnan(sample_soil): continue - if sample_lai<=0 or sample_lai>=20: + if sample_lai<=0 or sample_lai>=20 or np.isnan(sample_lai): continue result.append(item) # 绘制分布图 @@ -199,4 +199,6 @@ def split_sample_list(sample_list,train_ratio): sample_train.append(sample_list[i]) else: sample_test.append(sample_list[i]) - return [sample_train,sample_test] \ No newline at end of file + return [sample_train,sample_test] + + diff --git a/soilMoistureTop/SoilMoisture.xml b/soilMoistureTop/SoilMoisture.xml index fceafa74..c41f41a4 100644 --- a/soilMoistureTop/SoilMoisture.xml +++ b/soilMoistureTop/SoilMoisture.xml @@ -36,7 +36,7 @@ File tar.gz Man - D:\micro\WorkSpace\BackScattering\Output\GF3B_KSC_QPSI_010328_E86.0_N44.7_20231109_L1A_AHV_L10000262135-cal.tar.gz + F:\Tian-GF3-Wenchang\GF3_SYC_QPSI_040488_E110.7_N20.1_20240418_L1A_AHV_L10006923782-cal.tar.gz Covering @@ -45,7 +45,7 @@ File tif Man - F:\2023xibei\fugaileixing.tif + F:\Tian-GF3-Wenchang\landCover_Glob30.tif CoveringIDs @@ -54,7 +54,7 @@ Value string Man - empty + 10;20;30;40;70;90 DEFAULT DEFAULT DEFAULT @@ -66,7 +66,7 @@ File tif Man - F:\2024xibei\S2_NDVImed2.tif + F:\Tian-GF3-Wenchang\NDVI\S2_NDVImed_SMC_GF3.tif NDVIScope @@ -100,7 +100,7 @@ File tif Man - F:\2024xibei\S2_NDWImed.tif + F:\Tian-GF3-Wenchang\NDWI\S2_NDWImed_SMC_GF3.tif e1 @@ -109,7 +109,7 @@ Value float Man - 438.4106624354813 + -12.772025319313864 100 -100 DEFAULT @@ -121,7 +121,7 @@ Value float Man - 6.378881543182451 + 11.555079721123748 100 -100 DEFAULT @@ -133,7 +133,7 @@ Value float Man - -2035131.498410542 + 28.605979879379152 9999 -9999 DEFAULT @@ -145,7 +145,7 @@ Value float Man - 0.3015485630885973 + -0.04303182290305167 9999 -9999 DEFAULT @@ -157,7 +157,7 @@ Value float Man - 11303.518113684022 + -17.212613314078236 9999 -9999 DEFAULT @@ -169,7 +169,7 @@ Value float Man - -0.6110363015619775 + 1.1965671296029239 9999 -9999 DEFAULT @@ -183,7 +183,7 @@ File tar.gz Man - D:\micro\WorkSpace\SoilMoisture\Output\GF3B_KSC_QPSI_010328_E86.0_N44.7_20231109_L1A_AHV_L10000262135-cal-SMC.tar.gz + D:\micro\WorkSpace\SoilMoisture\Output\GF3_SYC_QPSI_040488_E110.7_N20.1_20240418_L1A_AHV_L10006923782-cal-SMC.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/soilMoisture_geo_sar/ReferenceFile/刘致曲_Dobson模型代码/dobsen_inverse.m b/soilMoisture_geo_sar/ReferenceFile/刘致曲_Dobson模型代码/dobsen_inverse.m index 4a9157ec..f058bd91 100644 --- a/soilMoisture_geo_sar/ReferenceFile/刘致曲_Dobson模型代码/dobsen_inverse.m +++ b/soilMoisture_geo_sar/ReferenceFile/刘致曲_Dobson模型代码/dobsen_inverse.m @@ -6,6 +6,7 @@ sd=2.65; dcs=(1.01+0.44*sd)^2-0.062; dc0=0.008854; dcw0 = 88.045-0.4147.*T+6.295e-4.*T.^2+1.075e-5.*T.^3; % Refer to [3] + tpt=0.11109-3.824e-3.*T+6.938e-5.*T.^2-5.096e-7.*T.^3; %2*pi*tao, Refer to [4] dcwinf=4.9; if f>=1.4 @@ -14,12 +15,10 @@ else sigma = 0.0467+0.2204*bd-0.004111*vsand +0.006614*vclay;% Refer to [2] end dcwr=dcwinf+((dcw0-dcwinf)./(1+(tpt.*f).^2)); -% dcwi=(tpt.*f.*(dcw0-dcwinf))./(1+(tpt.*f).^2)... -% +sigma*(1.0-(bd/sd))./(8.0*atan(1.0)*dc0.*f.*vwc);% Refer to [1] + betar=1.2748-0.00519*vsand-0.00152*vclay; betai=1.33797-0.00603*vsand-0.00166*vclay; -% dcsr=(1.0+(bd/sd)*((dcs^alpha)-1.0)+(vwc.^betar)*(dcwr^alpha)-vwc).^(1/alpha);% Result real part -% dcsi=(vwc.^(betai/alpha)).*dcwi;%Result imaginary part + vwc=fminsearch(@(vwc)abs(sqrt(((1.0+(bd/sd)*((dcs^alpha)-1.0)+(vwc.^betar)*(dcwr^alpha)-vwc).^(1/alpha))^2+((vwc.^(betai/alpha)).*((tpt.*f.*(dcw0-dcwinf))./(1+(tpt.*f).^2)... +sigma*(1.0-(bd/sd))./(8.0*atan(1.0)*dc0.*f.*vwc)))^2)-er),x0); end \ No newline at end of file diff --git a/soilMoisture_geo_sar/SoilMoistureMain.py b/soilMoisture_geo_sar/SoilMoistureMain.py index 0e713478..e704656a 100644 --- a/soilMoisture_geo_sar/SoilMoistureMain.py +++ b/soilMoisture_geo_sar/SoilMoistureMain.py @@ -104,7 +104,7 @@ class MoistureMain: else: raise ValueError("input Para 'Polarization' is not 'HH'、'VV'or 'empty'!") - self.__processing_paras = InitPara.init_processing_paras(self.__input_paras) + self.__processing_paras = InitPara.init_processing_paras(self.__input_paras, self.__workspace_preprocessed_path) self.__processing_paras.update(InitPara(DEBUG).get_mult_tar_gz_infs(self.__processing_paras, self.__workspace_preprocessing_path)) self.__sar_names_list = self.__processing_paras['name_list'] @@ -150,7 +150,7 @@ class MoistureMain: para_names = ['Covering', 'NDVI'] ref_img_name ='' for name in self.__sar_names_list: - para_names.append(name+'_'+self.__polar_name) + para_names.append(name+'_'+self.__polar_name) # todo 名称根据LT04实际命名进行缩短 if ref_img_name == '': ref_img_name = name+'_'+self.__polar_name para_names.append(name+'_LocalIncidenceAngle') @@ -277,7 +277,6 @@ class MoistureMain: mois2[n] = fmin(fun_mois, x0, disp=0) # Dobson模型 if n in bar_list: logger.info('block:{},cal soil_moisture proggress bar:{}%,use time :{}'.format(block_num, round(n / num * 100), (datetime.datetime.now() - start))) - sar1[:] = 0 sar2[:] = 0 sar1[w] = mois1 # 土壤水分 @@ -290,6 +289,55 @@ class MoistureMain: out_image = Image.fromarray(sar2) out_image.save(moisure2_path) + + ''' + f: 频率,通常以赫兹(Hz)为单位,它可能与土壤中电磁波的传播有关。 + T: 温度,通常以摄氏度(°C)为单位,它影响土壤水分的介电常数。 + er: 测量的土壤介电常数,这是一个无量纲的量,它表示土壤对电磁波的响应。 + bd: 土壤的干容重(Bulk Density),通常以克/立方厘米(g/cm³)为单位,它表示单位体积土壤中固体的质量。 + vsand: 砂土体积比例,这是一个介于0和1之间的无量纲量,表示土壤中砂土的体积占比。 + vclay: 黏土体积比例,这也是一个介于0和1之间的无量纲量,表示土壤中黏土的体积占比。 + x0: 初始猜测值,用于数值优化算法的起始点,通常是一个介于0和1之间的量,表示体积含水量(Volume Water Content)的初始估计。 + ''' + def dobsen_inverse(self, f, T, er, bd, vsand, vclay, x0): + # 设置模型参数 + alpha = 0.65 + sd = 2.65 + dcs = (1.01 + 0.44 * sd) ** 2 - 0.062 + dc0 = 0.008854 + dcw0 = 88.045 - 0.4147 * T + 6.295e-4 * T ** 2 + 1.075e-5 * T ** 3 + tpt = 0.11109 - 3.824e-3 * T + 6.938e-5 * T ** 2 - 5.096e-7 * T ** 3 + dcwinf = 4.9 + + # 计算土壤的电导率 sigma + if f >= 1.4: + sigma = -1.645 + 1.939 * bd - 0.0225622 * vsand + 0.01594 * vclay + else: + sigma = 0.0467 + 0.2204 * bd - 0.004111 * vsand + 0.006614 * vclay + + # 计算水分相关土壤颗粒的直径 dcwr + dcwr = dcwinf + ((dcw0 - dcwinf) / (1 + (tpt * f) ** 2)) + + # 计算与土壤水分保持能力相关的参数 betar 和 betai + betar = 1.2748 - 0.00519 * vsand - 0.00152 * vclay + betai = 1.33797 - 0.00603 * vsand - 0.00166 * vclay + + # 定义目标函数 + def objective(vwc): + return np.abs(np.sqrt( + ((1.0 + (bd / sd) * ((dcs ** alpha) - 1.0) + (vwc ** betar) * (dcwr ** alpha) - vwc) ** ( + 1 / alpha)) ** 2 + + ((vwc ** (betai / alpha)) * ( + (tpt * f * (dcw0 - dcwinf)) / (1 + (tpt * f) ** 2) + sigma * (1.0 - (bd / sd)) / + (8 * math.atan(1.0) * dc0 * f * vwc))) ** 2 + ) - er) + + # 使用数值优化方法找到最佳的 vwc 值 + result = minimize(objective, x0, method='Nelder-Mead') + + # 返回最优解 + return result.x[0] + def process_handle(self, start): """ 算法主处理函数 @@ -297,10 +345,20 @@ class MoistureMain: """ # 计算ROI区域 bare_land_mask_path = self.create_roi() - radar_center_frequency = MetaDataHandler.get_RadarCenterFrequency(self.__processing_paras['META']) + radar_center_frequency = MetaDataHandler.get_RadarCenterFrequency(self.__processing_paras[self.__sar_names_list[0] + '_Origin_META']) file.copyfile2dir(bare_land_mask_path, self.__workspace_preprocessed_path) logger.info('progress bar: 50%') + for name in self.__sar_names_list: + file_key = name + '_' + self.__polar_name + if os.path.exists(self.__preprocessed_paras[file_key]): + lee_path = os.path.join(self.__workspace_preprocessed_path, + os.path.basename(self.__preprocessed_paras[file_key]).split("-")[0] + '_lee.tif') + Filter().lee_process_sar(self.__preprocessed_paras[file_key], lee_path, 3, 0.25) + logger.info('lee process finish: ' + self.__preprocessed_paras[file_key]) + os.remove(self.__preprocessed_paras[file_key]) + self.__preprocessed_paras.update({file_key: lee_path}) + # 分块 bp = BlockProcess() block_size = bp.get_block_size(self.__rows, self.__cols) @@ -314,11 +372,11 @@ class MoistureMain: tmp = key if self.__sar_names_list[0]+'_LocalIncidenceAngle' in tmp: angle1_list = dir_dict[key] - elif self.__sar_names_list[0]+'_'+self.__polar_name in tmp: + elif self.__sar_names_list[0].split('-')[0]+'_lee' in tmp: sar1_list = dir_dict[key] elif self.__sar_names_list[1] + '_LocalIncidenceAngle' in tmp: angle2_list = dir_dict[key] - elif self.__sar_names_list[1] + '_' + self.__polar_name in tmp: + elif self.__sar_names_list[1].split('-')[0]+'_lee' in tmp: sar2_list = dir_dict[key] elif 'bare_land_mask'in tmp : bare_land_mask_list = dir_dict[key] @@ -329,10 +387,6 @@ class MoistureMain: # 开启多进程处理 processes_num = min([len(angle1_list), multiprocessing_num]) - if DEBUG == False: - f = Filter() - f.lee_filter_multiprocess(sar1_list, sar1_list, FILTER_SIZE, processes_num) - f.lee_filter_multiprocess(sar2_list, sar2_list, FILTER_SIZE, processes_num) pool = multiprocessing.Pool(processes=processes_num) for i in range(len(angle1_list)): diff --git a/soilMoisture_geo_sar/SoilMoisture_geo.xml b/soilMoisture_geo_sar/SoilMoisture_geo.xml index 9b669dde..b15c1b02 100644 --- a/soilMoisture_geo_sar/SoilMoisture_geo.xml +++ b/soilMoisture_geo_sar/SoilMoisture_geo.xml @@ -1,7 +1,7 @@ GEOSAR_202107275419_0001-0 - D:\micro\WorkSpace\Geo_sar\ + D:\micro\GEOWork\ File ElementAlg @@ -39,7 +39,7 @@ Value string Man - VV + HH True False UploadInput @@ -56,7 +56,8 @@ File tar.gz Man - F:\MicroWorkspace\Micro\soil_geo\input_back\GF3_SAY_QPSI_008634_E102.3_N33.7_20180331_L1A_AHV_L10003096081.tar.gz;F:\MicroWorkspace\Micro\soil_geo\input_back\GF3_SAY_QPSI_009051_E102.3_N33.7_20180429_L1A_AHV_L10003153708.tar.gz + F:\202306hb\sar_img\GF3B_SYC_QPSI_008316_E116.0_N43.0_20230622_L1A_AHV_L10000202893-cal.tar.gz; + F:\202306hb\sar_img\GF3B_SYC_QPSI_008316_E116.1_N43.3_20230622_L1A_AHV_L10000202892-cal.tar.gz True False @@ -87,7 +88,7 @@ File tif Man - F:\MicroWorkspace\Micro\soil_geo\cover\cover.tif + F:\202306hb\Landcover\50T_20220101-20230101.tif True False File @@ -102,7 +103,7 @@ Value string Man - 20;30;70;71;72;73;74;90 + empty True False UploadInput @@ -117,7 +118,7 @@ File tif Man - F:\MicroWorkspace\Micro\soil_geo\201806NDVI\201806_NDVImax.tif + F:\202306hb\NDVI\S2_202306_NDVI.tif True False File @@ -239,7 +240,7 @@ File tar.gz Man - D:\micro\WorkSpace\Geo_sar\SoilMoisture\Output\SoilMoistureProduct.tar.gz + D:\micro\GEOWork\SoilMoisture\Output\SoilMoistureProduct.tar.gz diff --git a/soilSalinity-Train_predict/SoilSalinityPredict.xml b/soilSalinity-Train_predict/SoilSalinityPredict.xml index 19a95ae0..2afe66d6 100644 --- a/soilSalinity-Train_predict/SoilSalinityPredict.xml +++ b/soilSalinity-Train_predict/SoilSalinityPredict.xml @@ -39,7 +39,7 @@ tar.gz Man - F:\2024xibei\GF3C_KSC_QPSI_008440_E86.2_N44.1_20231113_L1A_AHV_L10000215823-ortho.tar.gz + F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho.tar.gz DEFAULT DEFAULT @@ -68,7 +68,7 @@ File tif Man - F:\2024xibei\S2_NDVImed.tif + F:\Tian-GF3-Wenchang\landCover_Glob30.tif DEFAULT DEFAULT DEFAULT @@ -82,7 +82,7 @@ File zip Man - D:\micro\WorkSpace\SoilSalinityTrain\Output\GF3C_KSC_QPSI_008440_E86.2_N44.1_20231113_L1A_AHV_L10000215823-ortho-SSAA.zip + D:\micro\WorkSpace\SoilSalinityTrain\Output\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho-SSAA.zip DEFAULT DEFAULT DEFAULT @@ -96,7 +96,7 @@ Value string Man - empty + 10;20;30;40;70;90 DEFAULT DEFAULT DEFAULT @@ -110,7 +110,7 @@ File tif Man - F:\2024xibei\S2_NDVImed.tif + F:\Tian-GF3-Wenchang\NDVI\S2_NDVImed_SMC_GF3.tif DEFAULT DEFAULT DEFAULT @@ -140,7 +140,7 @@ File tar.gz Man - D:\micro\WorkSpace\SoilSalinityPredict\Output\GF3C_KSC_QPSI_008440_E86.2_N44.1_20231113_L1A_AHV_L10000215823-ortho-SSAA.tar.gz + D:\micro\WorkSpace\SoilSalinityPredict\Output\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho-SSAA.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/soilSalinity-Train_predict/SoilSalinityTrain.xml b/soilSalinity-Train_predict/SoilSalinityTrain.xml index 9d9de49e..ecc22ce9 100644 --- a/soilSalinity-Train_predict/SoilSalinityTrain.xml +++ b/soilSalinity-Train_predict/SoilSalinityTrain.xml @@ -39,7 +39,7 @@ tar.gz Man - F:\2024xibei\GF3C_KSC_QPSI_008440_E86.2_N44.1_20231113_L1A_AHV_L10000215823-ortho.tar.gz + F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho.tar.gz DEFAULT DEFAULT @@ -68,7 +68,7 @@ File csv Man - F:\2024xibei\soilty.csv + F:\Tian-GF3-Wenchang\soilSality.csv DEFAULT DEFAULT DEFAULT @@ -84,7 +84,7 @@ File tar.gz Man - D:\micro\WorkSpace\SoilSalinityTrain\Output\GF3C_KSC_QPSI_008440_E86.2_N44.1_20231113_L1A_AHV_L10000215823-ortho-SSAA.zip + D:\micro\WorkSpace\SoilSalinityTrain\Output\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho-SSAA.zip DEFAULT DEFAULT DEFAULT diff --git a/soilSalinity/SoilSalinity.xml b/soilSalinity/SoilSalinity.xml index a698cfd2..e6117353 100644 --- a/soilSalinity/SoilSalinity.xml +++ b/soilSalinity/SoilSalinity.xml @@ -38,7 +38,7 @@ File tar.gz Man - F:\2023xibei\GF3C_KSC_QPSI_008440_E86.0_N44.7_20231113_L1A_AHV_L10000215825-ortho.tar.gz + F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho.tar.gz DEFAULT DEFAULT DEFAULT @@ -66,7 +66,7 @@ File csv Man - F:\2023xibei\soilSality.csv + F:\Tian-GF3-Wenchang\soilSality.csv DEFAULT DEFAULT DEFAULT @@ -80,7 +80,7 @@ File tif Man - F:\2023xibei\fugaileixing.tif + F:\Tian-GF3-Wenchang\landCover.tif DEFAULT DEFAULT DEFAULT @@ -108,7 +108,7 @@ File tif Man - F:\2023xibei\S2_NDVImed2.tif + F:\Tian-GF3-Wenchang\NDVI\S2_NDVImed_SMC_GF3.tif DEFAULT DEFAULT DEFAULT @@ -138,7 +138,7 @@ File tar.gz Man - D:\micro\WorkSpace\SoilSalinity\Output\GF3C_KSC_QPSI_008440_E86.0_N44.7_20231113_L1A_AHV_L10000215825-ortho-SSAA.tar.gz + D:\micro\WorkSpace\SoilSalinity\Output\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho-SSAA.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/soilSalinity/SoilSalinityMain.py b/soilSalinity/SoilSalinityMain.py index 26c3cc76..e3b3aa1e 100644 --- a/soilSalinity/SoilSalinityMain.py +++ b/soilSalinity/SoilSalinityMain.py @@ -326,18 +326,25 @@ class SalinityMain: key_name = key block_num = len(dir_dict[key]) - for n in range(block_num): - name = os.path.basename(dir_dict[key_name][n]) - suffix = '_' + name.split('_')[-4] + "_" + name.split('_')[-3] + "_" + name.split('_')[-2] + "_" + \ + mergeFeaturesDir = os.path.join(self.__workspace_block_tif_processed_path, "features") + + # 创建文件 + if os.path.exists(mergeFeaturesDir) is False: + os.makedirs(mergeFeaturesDir) + for i in range(block_num): + file_list = [] + for value in dir_dict.values(): + file_list.append(os.path.basename(value[i])) + name = os.path.basename(file_list[0]) + suffix = 'features_' + name.split('_')[-4] + "_" + name.split('_')[-3] + "_" + name.split('_')[-2] + "_" + \ name.split('_')[-1] - features_path = self.__workspace_block_tif_processed_path + "features\\features" + suffix - features_array = np.zeros((len(dir_dict), block_size, block_size), dtype='float32') - for m, value in zip(range(len(dir_dict)), dir_dict.values()): - features_array[m, :, :] = self.imageHandler.get_band_array(value[n], 1) - # 异常值转为0 - features_array[np.isnan(features_array)] = 0.0 - features_array[np.isinf(features_array)] = 0.0 - self.imageHandler.write_img(features_path, "", [0, 0, 1, 0, 0, 1], features_array) + out_str = os.path.join(mergeFeaturesDir, suffix) + input_str1 = os.path.dirname(value[0]) + input_str2 = ','.join(file_list) + input_str3 = out_str + cmd = r".\baseTool\tifMerge\x64\Release\tifMerge.exe {} {} {}".format(input_str1, input_str2, input_str3) + # print(cmd) + os.system(cmd) logger.info('create features matrix success!') diff --git a/soilSalinity/SoilSalinity_C_SAR_V3.xml b/soilSalinity/SoilSalinity_C_SAR_V3.xml index f894084e..1fa2bd02 100644 --- a/soilSalinity/SoilSalinity_C_SAR_V3.xml +++ b/soilSalinity/SoilSalinity_C_SAR_V3.xml @@ -11,7 +11,7 @@ 微波卫星3-5级产品生产模型 3 陆表类产品_土壤盐碱度 - SoilSalinity_C_SAR_V3 + SoilSalinity_C_SAR_V3 5 SoilSalinity_CSAR_中科卫星应用德清研究院_3 中科卫星应用德清研究院 diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/LIBPQ.dll b/soilSalinity/baseTool/tifMerge/x64/Release/LIBPQ.dll new file mode 100644 index 00000000..21f10037 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/LIBPQ.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/Lerc.dll b/soilSalinity/baseTool/tifMerge/x64/Release/Lerc.dll new file mode 100644 index 00000000..29513eda Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/Lerc.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/freexl-1.dll b/soilSalinity/baseTool/tifMerge/x64/Release/freexl-1.dll new file mode 100644 index 00000000..9145a7d2 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/freexl-1.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/gdal.dll b/soilSalinity/baseTool/tifMerge/x64/Release/gdal.dll new file mode 100644 index 00000000..bda7c209 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/gdal.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/geos.dll b/soilSalinity/baseTool/tifMerge/x64/Release/geos.dll new file mode 100644 index 00000000..2edcb83a Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/geos.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/geos_c.dll b/soilSalinity/baseTool/tifMerge/x64/Release/geos_c.dll new file mode 100644 index 00000000..d358b2ae Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/geos_c.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/geotiff.dll b/soilSalinity/baseTool/tifMerge/x64/Release/geotiff.dll new file mode 100644 index 00000000..f513a513 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/geotiff.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/gif.dll b/soilSalinity/baseTool/tifMerge/x64/Release/gif.dll new file mode 100644 index 00000000..27fdc784 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/gif.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/hdf5.dll b/soilSalinity/baseTool/tifMerge/x64/Release/hdf5.dll new file mode 100644 index 00000000..97fd4698 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/hdf5.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/hdf5_hl.dll b/soilSalinity/baseTool/tifMerge/x64/Release/hdf5_hl.dll new file mode 100644 index 00000000..7da3e863 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/hdf5_hl.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/iconv-2.dll b/soilSalinity/baseTool/tifMerge/x64/Release/iconv-2.dll new file mode 100644 index 00000000..29c175cb Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/iconv-2.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/jpeg62.dll b/soilSalinity/baseTool/tifMerge/x64/Release/jpeg62.dll new file mode 100644 index 00000000..9c1a2c05 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/jpeg62.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/json-c.dll b/soilSalinity/baseTool/tifMerge/x64/Release/json-c.dll new file mode 100644 index 00000000..abbb168e Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/json-c.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libcrypto-3-x64.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libcrypto-3-x64.dll new file mode 100644 index 00000000..a0ee3e37 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libcrypto-3-x64.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libcurl.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libcurl.dll new file mode 100644 index 00000000..647bdc6c Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libcurl.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libexpat.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libexpat.dll new file mode 100644 index 00000000..6cea7422 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libexpat.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/liblzma.dll b/soilSalinity/baseTool/tifMerge/x64/Release/liblzma.dll new file mode 100644 index 00000000..44372c52 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/liblzma.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libpng16.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libpng16.dll new file mode 100644 index 00000000..c06222a1 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libpng16.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libsharpyuv.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libsharpyuv.dll new file mode 100644 index 00000000..e6c1b525 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libsharpyuv.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libssl-3-x64.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libssl-3-x64.dll new file mode 100644 index 00000000..4856e675 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libssl-3-x64.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libwebp.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libwebp.dll new file mode 100644 index 00000000..e758fc86 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libwebp.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/libxml2.dll b/soilSalinity/baseTool/tifMerge/x64/Release/libxml2.dll new file mode 100644 index 00000000..1e2599f5 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/libxml2.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/minizip.dll b/soilSalinity/baseTool/tifMerge/x64/Release/minizip.dll new file mode 100644 index 00000000..44f5e996 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/minizip.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/netcdf.dll b/soilSalinity/baseTool/tifMerge/x64/Release/netcdf.dll new file mode 100644 index 00000000..e1cbbf12 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/netcdf.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/openjp2.dll b/soilSalinity/baseTool/tifMerge/x64/Release/openjp2.dll new file mode 100644 index 00000000..d6c80116 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/openjp2.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/pcre2-8.dll b/soilSalinity/baseTool/tifMerge/x64/Release/pcre2-8.dll new file mode 100644 index 00000000..d047b3c3 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/pcre2-8.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/proj.dll b/soilSalinity/baseTool/tifMerge/x64/Release/proj.dll new file mode 100644 index 00000000..f4f6147a Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/proj.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/qhull_r.dll b/soilSalinity/baseTool/tifMerge/x64/Release/qhull_r.dll new file mode 100644 index 00000000..0267c70f Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/qhull_r.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/spatialite.dll b/soilSalinity/baseTool/tifMerge/x64/Release/spatialite.dll new file mode 100644 index 00000000..165b6e10 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/spatialite.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/sqlite3.dll b/soilSalinity/baseTool/tifMerge/x64/Release/sqlite3.dll new file mode 100644 index 00000000..65359e21 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/sqlite3.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/tifMerge.exe b/soilSalinity/baseTool/tifMerge/x64/Release/tifMerge.exe new file mode 100644 index 00000000..8966647e Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/tifMerge.exe differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/tifMerge.pdb b/soilSalinity/baseTool/tifMerge/x64/Release/tifMerge.pdb new file mode 100644 index 00000000..6d51c998 Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/tifMerge.pdb differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/tiff.dll b/soilSalinity/baseTool/tifMerge/x64/Release/tiff.dll new file mode 100644 index 00000000..125e94ba Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/tiff.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/zlib1.dll b/soilSalinity/baseTool/tifMerge/x64/Release/zlib1.dll new file mode 100644 index 00000000..e9300f6d Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/zlib1.dll differ diff --git a/soilSalinity/baseTool/tifMerge/x64/Release/zstd.dll b/soilSalinity/baseTool/tifMerge/x64/Release/zstd.dll new file mode 100644 index 00000000..09c9050a Binary files /dev/null and b/soilSalinity/baseTool/tifMerge/x64/Release/zstd.dll differ diff --git a/soilSalinity/baseTool/x64/Release/ImageMatch.obj b/soilSalinity/baseTool/x64/Release/ImageMatch.obj index 3afada32..913065f4 100644 Binary files a/soilSalinity/baseTool/x64/Release/ImageMatch.obj and b/soilSalinity/baseTool/x64/Release/ImageMatch.obj differ diff --git a/soilSalinity/baseTool/x64/Release/OctreeNode.obj b/soilSalinity/baseTool/x64/Release/OctreeNode.obj index c05e407b..efafef2e 100644 Binary files a/soilSalinity/baseTool/x64/Release/OctreeNode.obj and b/soilSalinity/baseTool/x64/Release/OctreeNode.obj differ diff --git a/soilSalinity/baseTool/x64/Release/RPC_Correct.obj b/soilSalinity/baseTool/x64/Release/RPC_Correct.obj index 2633c799..6b298713 100644 Binary files a/soilSalinity/baseTool/x64/Release/RPC_Correct.obj and b/soilSalinity/baseTool/x64/Release/RPC_Correct.obj differ diff --git a/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.exe b/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.exe index 830ab291..b458ed80 100644 Binary files a/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.exe and b/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.exe differ diff --git a/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.obj b/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.obj index 47816696..79ddcfac 100644 Binary files a/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.obj and b/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.obj differ diff --git a/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.pdb b/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.pdb index f12b34c2..0f47ffa6 100644 Binary files a/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.pdb and b/soilSalinity/baseTool/x64/Release/SIMOrthoProgram.pdb differ diff --git a/soilSalinity/baseTool/x64/Release/SateOrbit.obj b/soilSalinity/baseTool/x64/Release/SateOrbit.obj index e4d24efb..d3c27206 100644 Binary files a/soilSalinity/baseTool/x64/Release/SateOrbit.obj and b/soilSalinity/baseTool/x64/Release/SateOrbit.obj differ diff --git a/soilSalinity/baseTool/x64/Release/baseTool.obj b/soilSalinity/baseTool/x64/Release/baseTool.obj index 0b479142..7227006d 100644 Binary files a/soilSalinity/baseTool/x64/Release/baseTool.obj and b/soilSalinity/baseTool/x64/Release/baseTool.obj differ diff --git a/soilSalinity/baseTool/x64/Release/interpolation.obj b/soilSalinity/baseTool/x64/Release/interpolation.obj index 84233d1e..172a2d18 100644 Binary files a/soilSalinity/baseTool/x64/Release/interpolation.obj and b/soilSalinity/baseTool/x64/Release/interpolation.obj differ diff --git a/soilSalinity/baseTool/x64/Release/simptsn.obj b/soilSalinity/baseTool/x64/Release/simptsn.obj index b8c4b441..af629968 100644 Binary files a/soilSalinity/baseTool/x64/Release/simptsn.obj and b/soilSalinity/baseTool/x64/Release/simptsn.obj differ diff --git a/soilSalinity/baseTool/x64/Release/test_moudel.obj b/soilSalinity/baseTool/x64/Release/test_moudel.obj index ecf98d26..3f894d1a 100644 Binary files a/soilSalinity/baseTool/x64/Release/test_moudel.obj and b/soilSalinity/baseTool/x64/Release/test_moudel.obj differ diff --git a/soilSalinity/baseTool/x64/Release/vc142.pdb b/soilSalinity/baseTool/x64/Release/vc142.pdb index 581759a5..8d4d01da 100644 Binary files a/soilSalinity/baseTool/x64/Release/vc142.pdb and b/soilSalinity/baseTool/x64/Release/vc142.pdb differ diff --git a/surfaceRoughness_oh2004/SurfaceRoughness.xml b/surfaceRoughness_oh2004/SurfaceRoughness.xml index 37151b03..9fff817a 100644 --- a/surfaceRoughness_oh2004/SurfaceRoughness.xml +++ b/surfaceRoughness_oh2004/SurfaceRoughness.xml @@ -38,7 +38,7 @@ File tar.gz Man - F:\2024xibei\GF3C_KSC_QPSI_008440_E86.0_N44.7_20231113_L1A_AHV_L10000215825-ortho.tar.gz + F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho.tar.gz True False File @@ -68,7 +68,7 @@ File tif Man - F:\2024xibei\auxfile\LandaCover.tif + F:\Tian-GF3-Wenchang\landCover_Glob30.tif True False File @@ -83,7 +83,7 @@ Value string Man - empty + 10;20;30;40;70;90 True False UploadInput @@ -98,7 +98,7 @@ File tif Man - F:\2024xibei\auxfile\S2_NDVImed.tif + F:\Tian-GF3-Wenchang\NDVI\S2_NDVImed_SMC_GF3.tif True False File @@ -130,7 +130,7 @@ File tar.gz Man - D:\micro\WorkSpace\SurfaceRoughness\Output\GF3C_KSC_QPSI_008440_E86.0_N44.7_20231113_L1A_AHV_L10000215825-ortho-SR.tar.gz + D:\micro\WorkSpace\SurfaceRoughness\Output\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho-SR.tar.gz diff --git a/tool/LAI/LAIProcess.pyx b/tool/LAI/LAIProcess.pyx index a445ffd1..063fb3ef 100644 --- a/tool/LAI/LAIProcess.pyx +++ b/tool/LAI/LAIProcess.pyx @@ -61,7 +61,7 @@ def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_ h = leastsq(f, X0) # logger.info(h[0],h[1]) err_f=f(h[0]) - x_arr=[lai_waiter_inc_sigma_item[4] for lai_waiter_inc_sigma_item in lai_water_inc_sigma_list] + x_arr=[lai_waiter_inc_sigma_item[5] for lai_waiter_inc_sigma_item in lai_water_inc_sigma_list] # 根据误差大小进行排序 # logger.info("训练集:\n根据误差输出点序\n数量:{}\n点序\t误差值\t 样点信息".format(str(np.array(err_f).shape))) # for i in np.argsort(np.array(err_f)): diff --git a/tool/algorithm/algtools/PreProcess.py b/tool/algorithm/algtools/PreProcess.py index 026cd5f0..b9148dba 100644 --- a/tool/algorithm/algtools/PreProcess.py +++ b/tool/algorithm/algtools/PreProcess.py @@ -435,7 +435,7 @@ class PreProcess: prepro_imgs_path = {} for name in para_names: img_path = img_paths[name] - output_para = os.path.join(out_dir, name + '_preprocessed.tif') # + name + '_preprocessed.tif' + output_para = os.path.join(out_dir, name + '_ppd.tif') # + name + '_preprocessed.tif' self.resampling_by_scale(img_path, output_para, refer_img_path) prepro_imgs_path.update({name: output_para}) logger.info('resampling %s success!', name) @@ -477,9 +477,6 @@ class PreProcess: scale_x = ref_cols/cols scale_y = ref_rows/rows - # rows = dataset.RasterYSize # 行数 - # cols = int(cols * scale) # 计算新的行列数 - # rows = int(rows * scale) cols = ref_cols rows = ref_rows @@ -515,6 +512,39 @@ class PreProcess: del target return True + @staticmethod + def resample_by_gdal(in_path, out_path): + src_ds = gdal.Open(in_path, gdal.GA_ReadOnly) + + # 设置目标影像的投影和范围 + target_projection = src_ds.GetProjection() + target_geotransform = src_ds.GetGeoTransform() + + x_scale = target_geotransform[1] + y_scale = target_geotransform[5] + scale = [x_scale, np.abs(y_scale)] + new_scale = np.max(scale) + + dst_geotransform = [target_geotransform[0], new_scale, target_geotransform[2], target_geotransform[3], target_geotransform[4], -new_scale] + target_x_size = int(src_ds.RasterXSize * x_scale / new_scale) # 假设我们要将影像大小缩小到原来的一半 + target_y_size = int(src_ds.RasterYSize * np.abs(y_scale) / new_scale) + + # 创建输出驱动 + driver = gdal.GetDriverByName('GTiff') + + # 创建输出文件 + dst_ds = driver.Create(out_path, target_x_size, target_y_size, src_ds.RasterCount, + src_ds.GetRasterBand(1).DataType) + dst_ds.SetGeoTransform(dst_geotransform) + dst_ds.SetProjection(target_projection) + + # 执行重采样 + gdal.ReprojectImage(src_ds, dst_ds, None, None, gdal.GRA_Bilinear) # 使用双线性插值 + + # 关闭数据集 + dst_ds = None + src_ds = None + @staticmethod def cv_mean_filter(out_path, in_path, filter_size): """ @@ -551,3 +581,9 @@ class PreProcess: ImageHandler.write_img(out_tif_path, proj, geo, angle) +if __name__ == '__main__': + fn = r"F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1B_v_h_L10006928143-ortho.tif" + out = r"F:\Tian-GF3-Wenchang\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1A_AHV_L10006928143-ortho\GF3_MYC_QPSI_040611_E110.6_N20.0_20240427_L1B_v_h_L10006928143-ortho.tif" + PreProcess.resample_by_gdal(fn, out) + + diff --git a/tool/algorithm/image/ImageHandle.py b/tool/algorithm/image/ImageHandle.py index 1b317ae5..b81e4a6f 100644 --- a/tool/algorithm/image/ImageHandle.py +++ b/tool/algorithm/image/ImageHandle.py @@ -737,6 +737,11 @@ class ImageHandler: img_col_end = x_split * 3 img_row_start = y_split * 1 img_row_end = y_split *3 + cols = img_col_end - img_col_start + rows = img_row_end - img_row_start + if cols > 10000 or rows > 10000: + img_col_end = img_col_start + 10000 + img_row_end = img_row_start + 10000 point_upleft = self.trans_rowcol2geo(img_geotrans, img_col_start, img_row_start) point_upright = self.trans_rowcol2geo(img_geotrans, img_col_end, img_row_start) diff --git a/tool/algorithm/transforml1a/transHandle.py b/tool/algorithm/transforml1a/transHandle.py index c8450e6f..6e5e0634 100644 --- a/tool/algorithm/transforml1a/transHandle.py +++ b/tool/algorithm/transforml1a/transHandle.py @@ -1064,9 +1064,9 @@ if __name__ == '__main__': # # tr = TransImgL1A(ori_sim_path,roi_Extend) # tr.l1a_2_geo("I:/cut.tif", "I:/salinity.tif", "I:/salinity_geo2.tif") - ori_sim = r"D:\micro\LWork\AtmosphericDelay\Temporary\cut\ori_sim.tif" - product_tif = r"D:\micro\LWork\AtmosphericDelay\test\master_ztd\dlosout.tiff" - result = r"D:\micro\LWork\AtmosphericDelay\test\master_ztd\dlosout_geo.tiff" + ori_sim = r"D:\micro\WorkSpace\AtmosphericDelay\Temporary\cut\ori_sim.tif" + product_tif = r"D:\micro\LWork\AtmosphericDelay\test\pro_m_filt_fine_ERA5.tif" + result = r"D:\micro\LWork\AtmosphericDelay\test\pro_m_filt_fine_ERA5_geo.tif" method = 'linear' scopes = ImageHandle.ImageHandler().get_scopes(ori_sim) # """ diff --git a/vegetationPhenology/VegetationPhenology.xml b/vegetationPhenology/VegetationPhenology.xml index 85040fb9..db6ffd33 100644 --- a/vegetationPhenology/VegetationPhenology.xml +++ b/vegetationPhenology/VegetationPhenology.xml @@ -114,7 +114,7 @@ Value string Man - 0,1,2 + 0,1,2,3,4,5,6,7,8,9 True True UploadInput diff --git a/vegetationPhenology/VegetationPhenologyMain.py b/vegetationPhenology/VegetationPhenologyMain.py index ee044334..32d5faae 100644 --- a/vegetationPhenology/VegetationPhenologyMain.py +++ b/vegetationPhenology/VegetationPhenologyMain.py @@ -410,7 +410,7 @@ class PhenologyMain: logger.info("generate train and test set success!") logger.info('progress bar: 30%') - optimal_X_train, optimal_Y_train, optimal_feature = ml.sel_optimal_feature(X_train, Y_train, total_name_list,important_threshold=0.5, correlation_threshold=0.8) + optimal_X_train, optimal_Y_train, optimal_feature = ml.sel_optimal_feature(X_train, Y_train, total_name_list,important_threshold=0.0, correlation_threshold=20) # RF clf = ml.trainRF(optimal_X_train, optimal_Y_train) diff --git a/vegetationPhenology/testxmlreading.py b/vegetationPhenology/testxmlreading.py index 6b620221..4b455f95 100644 --- a/vegetationPhenology/testxmlreading.py +++ b/vegetationPhenology/testxmlreading.py @@ -51,11 +51,12 @@ def createcsv_roi_polygon(coordinates): return polygon_str if __name__ == '__main__': - xmlpath = r"F:\MicroWorkspace\Micro\likun-GF3-VegetationP\vegTest.xml" + xmlpath = r"F:\MicroWorkspace\20240814tw\shp\20240819\landCover.xml" tree_obj = ET.parse(xmlpath) - csv_header = ['sar_img_name', 'phenology_id', 'phenology_name', 'roi_polygon'] - csvpath = r"F:\MicroWorkspace\Micro\likun-GF3-VegetationP\vegTest.csv" + # csv_header = ['sar_img_name', 'phenology_id', 'phenology_name', 'roi_polygon'] + csv_header = ['parent_id', 'id', 'covernm', 'roi_polygon'] + csvpath = r"F:\MicroWorkspace\20240814tw\shp\20240819\LandCover.csv" # csvcreateTitile(csvpath,csv_header) csvfile(csvpath,csv_header) # 得到所有匹配Region 标签的Element对象的list集合