地表覆盖类型增加四个计划信息到特征中,修改粗糙度产品掩膜

dev
tian jiax 2024-01-10 16:24:57 +08:00
parent 8b1a71ef36
commit 32267348fe
12 changed files with 80 additions and 61 deletions

7
.gitignore vendored
View File

@ -30,13 +30,8 @@
/vegetationPhenology/tool/
/vegetationPhenology/VegetationPhenology/
/backScattering/baseTool/
/landcover_c_sar/dist/
/leafAreaIndex/dist/
/soilSalinity/tool/
/landcover_c_sar/tool/
/atmosphericDelay-C-SAR/tool/
/deformation-C-SAR/tool/
/dem-C-SAR/tool/
/soilMoistureTop/tool/
/backScattering/dist/

View File

@ -45,7 +45,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>E:\202306hb\sar_img\GF3B_SYC_QPSI_008316_E116.1_N43.3_20230622_L1A_AHV_L10000202892.tar.gz</ParaValue>
<ParaValue>E:\VegetationPhenology-likun\lijiang\GF3B_KSC_QPSI_007906_E100.2_N27.0_20230525_L1A_AHV_L10000190531.tar.gz</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control>
@ -60,7 +60,7 @@
<ParaType>File</ParaType>
<DataType>File</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>E:\202306hb\dem</ParaValue>
<ParaValue>E:\VegetationPhenology-likun\lijiang\dem</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>True</EnMultipleChoice>
<Control>File</Control>
@ -92,7 +92,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>D:\micro\WorkSpace\Ortho\Output\GF3B_SYC_QPSI_008316_E116.1_N43.3_20230622_L1A_AHV_L10000202892-ortho.tar.gz</ParaValue>
<ParaValue>D:\micro\WorkSpace\Ortho\Output\GF3B_KSC_QPSI_007906_E100.2_N27.0_20230525_L1A_AHV_L10000190531-ortho.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue>

View File

@ -4,9 +4,10 @@ from tool.algorithm.image import ImageHandle
from tool.algorithm.algtools.PreProcess import PreProcess as pp
import gc
import os
import sys
from pathlib import Path
env_str = os.path.split(os.path.realpath(__file__))[0]
env_str = os.path.dirname(os.path.abspath(sys.argv[0]))
os.environ['PROJ_LIB'] = env_str
@ -60,11 +61,11 @@ def resampe_image(aux_dry_wet_unresame_path, mas_dry_wet_unresame_path, temp_dir
if __name__ == '__main__':
mas_nc = r'F:\干涉大气延迟校正\大气延迟检验\大气延迟检验\ERA5_N25_N35_E115_E125_20220910_10.nc'
aux_nc = r'F:\干涉大气延迟校正\大气延迟检验\大气延迟检验\ERA5_N25_N35_E115_E125_20220922_10.nc'
dem_file = r''
temp_dir = 'F://干涉大气延迟校正//大气延迟检验//大气延迟检验//nc_file//test//'
out_path = 'F://干涉大气延迟校正//大气延迟检验//大气延迟检验//nc_file//'
mas_nc = r'D:\micro\WorkSpace\AtmosphericDelay\ERA5\ERA5_N42.0_N46.0_E114.0_E118.0_20230615_08.nc'
aux_nc = r'D:\micro\WorkSpace\AtmosphericDelay\ERA5\ERA5_N42.0_N46.0_E114.0_E118.0_20230910_08.nc'
dem_file = r'D:\micro\WorkSpace\AtmosphericDelay\ERA5\cut_dem.tif'
temp_dir = r'D:\micro\WorkSpace\AtmosphericDelay\test_ztd\test'
out_path = r'D:\micro\WorkSpace\AtmosphericDelay\test_ztd' + '\\'
# 读取气象数据
ncHandle = NcHandle()
@ -76,23 +77,23 @@ if __name__ == '__main__':
base_file = out_path + "MasterNC_geo_h.tif" # 用来获取裁剪后气象数据的经纬度、分辨率等信息
#
# # 1.2 计算主、辅影像垂直分层湿干延迟值,并保存干湿延迟图
# m_cdstack_dry_wet = Ady().aps_wrf_sar(base_file, m_temp, m_re_hum, m_geo, dem_file) # 主影像垂直分层干湿延迟值数组
# m_dry_wet_path = out_path + "m_dry_wet.tif" # 主影像干湿延迟图保存路径
# Ady().write_dry_wet_tif(dem_file, base_file, m_cdstack_dry_wet, m_dry_wet_path)
#
# a_cdstack_dry_wet = Ady().aps_wrf_sar(base_file, a_temp, a_re_hum, a_geo, dem_file) # 辅影像垂直分层干湿延迟值数组
# a_dry_wet_path = out_path + "a_dry_wet.tif" # 辅影像干湿延迟图保存路径
# Ady().write_dry_wet_tif(dem_file, base_file, a_cdstack_dry_wet, a_dry_wet_path)
# #
# 1.2 计算主、辅影像垂直分层湿干延迟值,并保存干湿延迟图
m_cdstack_dry_wet = Ady().aps_wrf_sar(base_file, m_temp, m_re_hum, m_geo, dem_file) # 主影像垂直分层干湿延迟值数组
m_dry_wet_path = out_path + "m_dry_wet.tif" # 主影像干湿延迟图保存路径
Ady().write_dry_wet_tif(dem_file, base_file, m_cdstack_dry_wet, m_dry_wet_path)
a_cdstack_dry_wet = Ady().aps_wrf_sar(base_file, a_temp, a_re_hum, a_geo, dem_file) # 辅影像垂直分层干湿延迟值数组
a_dry_wet_path = out_path + "a_dry_wet.tif" # 辅影像干湿延迟图保存路径
Ady().write_dry_wet_tif(dem_file, base_file, a_cdstack_dry_wet, a_dry_wet_path)
#
# aux_dry_wet_resamed_path, mas_dry_wet_resamed_path = resampe_image(a_dry_wet_path, m_dry_wet_path, temp_dir) # 参照气象数据分辨率进行重采样
#
# gc.collect() # 回收内存
# # 1.4 输出主辅影像ztd数组
# a_ztd = Ady().calc_ztd(a_dry_wet_path, dem_file) # 辅影像的ztd数组
# m_ztd = Ady().calc_ztd(m_dry_wet_path, dem_file) # 主影像的ztd数组
# out_aux_ztd_path = out_path + "aux_ztd.tif"
# out_mas_ztd_path = out_path + "mas_ztd.tif"
# Ady().write_ztd_tif(dem_file, base_file, a_ztd, out_aux_ztd_path) # ztd数组->ztd影像
# Ady().write_ztd_tif(dem_file, base_file, m_ztd, out_mas_ztd_path) # ztd数组->ztd影像
gc.collect() # 回收内存
# 1.4 输出主辅影像ztd数组
a_ztd = Ady().calc_ztd(a_dry_wet_path, dem_file) # 辅影像的ztd数组
m_ztd = Ady().calc_ztd(m_dry_wet_path, dem_file) # 主影像的ztd数组
out_aux_ztd_path = out_path + "aux_ztd.tif"
out_mas_ztd_path = out_path + "mas_ztd.tif"
Ady().write_ztd_tif(dem_file, base_file, a_ztd, out_aux_ztd_path) # ztd数组->ztd影像
Ady().write_ztd_tif(dem_file, base_file, m_ztd, out_mas_ztd_path) # ztd数组->ztd影像

View File

@ -87,7 +87,7 @@
<ParaType>Value</ParaType>
<DataType>string</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>0,1,2,7,8,9,10</ParaValue>
<ParaValue>0,1,2,7,8,9,10,11,12,13</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>True</EnMultipleChoice>
<Control>UploadInput</Control>
@ -135,7 +135,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>D:\micro\WorkSpace\LandCover\Output\GF3B_KSC_QPSI_010328_E86.1_N44.5_20231109_L1A_AHV_L10000262134-ortho-LANDClASS.tar.gz</ParaValue>
<ParaValue>D:\micro\WorkSpace\LandCover\Output\GF3B_KSC_QPSI_010328_E86.1_N44.5_20231109_L1A_AHV_L10000262134-ortho-LANDCLASS.tar.gz</ParaValue>
</Parameter>
</Outputs>
</AlgCompt>

View File

@ -122,10 +122,15 @@ class LandCoverMeasCsv:
# raise Exception('there are empty data!', train_data)
if len(train_data_list) <= 1:
raise Exception('there is only one label type!', train_data_list)
num_list = []
for train_data in train_data_list:
if not len(train_data[3]) == 0:
num_list.append(len(train_data[3]))
max_num = np.min(num_list)
for train_data in train_data_list:
logger.info(str(train_data[0]) + "," + str(train_data[2]) +"," + "num:" + str(len(train_data[3])))
max_num = self.__max_tran__num_per_class
# max_num = self.__max_tran__num_per_class
logger.info("max number =" + str(max_num) + ", random select" + str(max_num) + " point as train data!")
if (len(train_data[3]) > max_num):
train_data[3] = random.sample(train_data[3], max_num)

View File

@ -116,7 +116,7 @@ class LandCoverMain:
checkFlag, self.__parameters_dic = self.__check_handler.check_input_paras(self.__input_paras)
self.__workspace_path = self.__alg_xml_handler.get_workspace_path()
self.__create_work_space()
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(self.get_tar_gz_inf(self.__processing_paras["sar_path0"]))
SrcImageName = os.path.split(self.__input_paras["AHV"]['ParaValue'])[1].split('.tar.gz')[0]
result_name = SrcImageName + tar + ".tar.gz"
@ -498,6 +498,21 @@ class LandCoverMain:
out_path = os.path.join(dir, name)
self.calInterpolation_bil_Wgs84_rc_sar_sigma(self.__processing_paras['paraMeter'],
self.__preprocessed_paras['sim_ori'], file, out_path)
calOutDir = os.path.join(self.__workspace_processing_path, 'cal\\') # 添加四极化后向散射系数到特征图中
if not os.path.exists(calOutDir):
os.makedirs(calOutDir)
para_names_l1a = ["HH", "VV", "HV", "VH"]
for key in para_names_l1a:
name = key + '_geo.tif'
out_path = os.path.join(dir, name)
calOut_path = os.path.join(calOutDir, key + '_cal.tif')
AHVToPolsarpro.sar_backscattering_sigma(self.__preprocessed_paras[key],
self.__processing_paras['Origin_META'], calOut_path)
self.calInterpolation_bil_Wgs84_rc_sar_sigma(self.__processing_paras['paraMeter'],
self.__preprocessed_paras['sim_ori'],
calOut_path, out_path)
return dir
def process_handle(self, start):
@ -549,7 +564,7 @@ class LandCoverMain:
logger.info('progress bar: 50%')
# 生成最优特征子集训练集
X_train, Y_train, optimal_feature = ml.gene_optimal_train_set(train_data_dic, feature_geo, 0.07, 0.85)
X_train, Y_train, optimal_feature = ml.gene_optimal_train_set(train_data_dic, feature_geo, 0.07, 0.85) # 0.07, 0.85
# 训练模型
cost = self.__processing_paras["Cost"]

View File

@ -138,7 +138,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>D:\micro\WorkSpace\SoilSalinity\Output\GF3B_SYC_QPSI_008316_E116.2_N43.7_20230622_L1A_AHV_L10000202891-ortho-salinty.tar.gz</ParaValue>
<ParaValue>D:\micro\WorkSpace\SoilSalinity\Output\GF3B_SYC_QPSI_008316_E116.2_N43.7_20230622_L1A_AHV_L10000202891-ortho-SSAA.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue>

View File

@ -38,7 +38,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>E:\202306pj\GF3B_MYC_QPSI_008114_E121.6_N40.9_20230608_L1A_AHV_L10000196489-ortho.tar.gz</ParaValue>
<ParaValue>D:\micro\WorkSpace\Ortho\Output\GF3B_SYC_QPSI_008316_E116.1_N43.3_20230622_L1A_AHV_L10000202892-ortho.tar.gz</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control>
@ -68,7 +68,7 @@
<ParaType>File</ParaType>
<DataType>tif</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>E:\202306pj\n51_40_2020lc030.tif</ParaValue>
<ParaValue>D:\Dict\50T_20220101-20230101.tif</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control>
@ -83,7 +83,7 @@
<ParaType>Value</ParaType>
<DataType>string</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>10;20;30;40;50;70;71;72;83;74;90</ParaValue>
<ParaValue>empty</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>UploadInput</Control>
@ -98,7 +98,7 @@
<ParaType>File</ParaType>
<DataType>tif</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>E:\202306pj\L9NDVI_GF3B_175394.tif</ParaValue>
<ParaValue>F:\202306hb\NDVI\S2_202306_NDVI.tif</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control>
@ -130,7 +130,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>D:\micro\WorkSpace\SurfaceRoughness\Output\GF3B_MYC_QPSI_008114_E121.6_N40.9_20230608_L1A_AHV_L10000196489-ortho-SR.tar.gz</ParaValue>
<ParaValue>D:\micro\WorkSpace\SurfaceRoughness\Output\GF3B_SYC_QPSI_008316_E116.1_N43.3_20230622_L1A_AHV_L10000202892-ortho-SR.tar.gz</ParaValue>
</Parameter>
</Outputs>
</AlgCompt>

View File

@ -328,7 +328,7 @@ class MoistureMain:
product_path = os.path.join(self.__product_dic, SrcImageName)
# 获取影像roi区域
roi.cal_roi(product_path, product_geo_path, bare_land_mask_path, background_value=0)
roi.cal_roi(product_path, product_geo_path, bare_land_mask_path, background_value=-9999)
# 生成快视图
self.imageHandler.write_quick_view(product_path)

View File

@ -228,11 +228,11 @@ class ROIAlg:
logger.info("cal_roi success, path: %s", out_tif_path)
return True
# if __name__ == '__main__':
# dir = r'G:\MicroWorkspace\C-SAR\SoilMoisture\Temporary\processing/'
# out_tif_path = dir + 'soil_moisture_roi.tif'
# in_tif_path = dir + 'soil_moisture.tif'
# mask_path = dir + 'bare_land_mask.tif'
# background_value = np.nan
# ROIAlg.cal_roi(out_tif_path, in_tif_path, mask_path, background_value)
# pass
if __name__ == '__main__':
dir = r'G:\MicroWorkspace\C-SAR\SoilMoisture\Temporary\processing/'
out_tif_path = r'D:\micro\WorkSpace\SurfaceRoughness\Temporary\SurfaceRoughnessProduct_test.tif'
in_tif_path = r'D:\micro\WorkSpace\SurfaceRoughness\Temporary\SurfaceRoughnessProduct_geo.tif'
mask_path = r'D:\micro\WorkSpace\SurfaceRoughness\Temporary\processing\roi\ndvi_mask.tif'
background_value = 0
ROIAlg.cal_roi(out_tif_path, in_tif_path, mask_path, background_value)
pass

View File

@ -37,7 +37,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>E:\VegetationPhenology-likun\rusuoces\GF3C_MYC_QPSI_006270_E100.4_N27.0_20230615_L1A_AHV_L10000158764-ortho.tar.gz</ParaValue>
<ParaValue>E:\VegetationPhenology-likun\lijiang\GF3B_KSC_QPSI_007906_E100.2_N27.0_20230525_L1A_AHV_L10000190531-ortho.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue>
@ -51,7 +51,7 @@
<ParaType>File</ParaType>
<DataType>csv</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>E:\VegetationPhenology-likun\rusuoces\VegetationPhe_samples.csv</ParaValue>
<ParaValue>E:\VegetationPhenology-likun\lijiang\VegetationPhe_samples.csv</ParaValue>
<MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue>
@ -65,7 +65,7 @@
<ParaType>File</ParaType>
<DataType>tif</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>E:\VegetationPhenology-likun\rusuoces\N47_25_2020LC030\n47_25_2020lc030.tif</ParaValue>
<ParaValue>E:\VegetationPhenology-likun\lijiang\landcover.tif</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control>
@ -80,7 +80,7 @@
<ParaType>Value</ParaType>
<DataType>string</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>10</ParaValue>
<ParaValue>3</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>UploadInput</Control>
@ -130,7 +130,7 @@
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource>
<ParaValue>D:\micro\WorkSpace\VegetationPhenology\Output\GF3C_MYC_QPSI_006270_E100.4_N27.0_20230615_L1A_AHV_L10000158764-ortho-VP.tar.gz</ParaValue>
<ParaValue>D:\micro\WorkSpace\VegetationPhenology\Output\GF3B_KSC_QPSI_007906_E100.2_N27.0_20230525_L1A_AHV_L10000190531-ortho-VP.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue>

View File

@ -320,9 +320,13 @@ class PhenoloyMeasCsv_geo:
if train_data[3] == [] :
raise Exception('there are empty data!', train_data)
if len(train_data_list) <= 1:
raise Exception('there is only one label type!', train_data_list)
num_list = []
for train_data in train_data_list:
num_list.append(len(train_data[3]))
if not len(train_data[3]) == 0:
num_list.append(len(train_data[3]))
max_num = np.min(num_list)
for train_data in train_data_list:
logger.info(str(train_data[0]) + "," + str(train_data[2]) +"," + "num:" + str(len(train_data[3])))
@ -331,8 +335,7 @@ class PhenoloyMeasCsv_geo:
if(len(train_data[3]) > max_num):
train_data[3] = random.sample(train_data[3], max_num)
if len(train_data_list) <= 1:
raise Exception('there is only one label type!', train_data_list)
return train_data_list
@staticmethod