更新叶面积指数模型训练功能

dev
cuiyyyu 2024-01-04 10:28:43 +08:00
parent 7834ac894a
commit 021ef146e6
8 changed files with 87 additions and 21 deletions

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<Root> <Root>
<TaskID>CSAR_202107275419_0001-0</TaskID> <TaskID>CSAR_202107275419_0001-0</TaskID>
<WorkSpace>D:\micro\WorkSpace\</WorkSpace> <WorkSpace>E:\Result_GF3\</WorkSpace>
<AlgCompt> <AlgCompt>
<DataTransModel>File</DataTransModel> <DataTransModel>File</DataTransModel>
<Artificial>ElementAlg</Artificial> <Artificial>ElementAlg</Artificial>
@ -42,7 +42,7 @@
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tar.gz</DataType> <DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource> <ParaSource>Cal</ParaSource>
<ParaValue>E:\MicroWorkspace\GF3-Deformation\GF3-yuan\GF3_KSC_QPSI_036065_E116.4_N44.2_20230616_L1A_AHV_L10006792277.tar.gz</ParaValue> <ParaValue>E:\GF3Data\backscatter\GF3_KSC_QPSI_036065_E116.4_N44.2_20230616_L1A_AHV_L10006792277.tar.gz</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice> <EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -55,9 +55,9 @@
<ParaChsName>DEM数字高程影像</ParaChsName> <ParaChsName>DEM数字高程影像</ParaChsName>
<Description>30m分辨率DEM数字高程影像</Description> <Description>30m分辨率DEM数字高程影像</Description>
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>File</DataType> <DataType>zip</DataType>
<ParaSource>Cal</ParaSource> <ParaSource>Cal</ParaSource>
<ParaValue>E:\MicroWorkspace\GF3-Deformation\yuan-gf3-dem</ParaValue> <ParaValue>E:\GF3Data\backscatter\ASTGTM2_N43E116_dem.zip</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>True</EnMultipleChoice> <EnMultipleChoice>True</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -74,7 +74,7 @@
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tar.gz</DataType> <DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource> <ParaSource>Cal</ParaSource>
<ParaValue>D:\micro\WorkSpace\BackScattering\Output\GF3_KSC_QPSI_036065_E116.4_N44.2_20230616_L1A_AHV_L10006792277-cal.tar.gz</ParaValue> <ParaValue>E:\Result_GF3\BackScattering\Output\GF3_KSC_QPSI_036065_E116.4_N44.2_20230616_L1A_AHV_L10006792277-cal.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue> <MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue> <MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue> <OptionValue>DEFAULT</OptionValue>

View File

@ -8,6 +8,8 @@
@Date 2021/8/14 @Date 2021/8/14
@Version 1.0.0 @Version 1.0.0
""" """
import zipfile
# from re import I, T, X, match # from re import I, T, X, match
# from types import DynamicClassAttribute # from types import DynamicClassAttribute
# from numpy.core.einsumfunc import _parse_possible_contraction # from numpy.core.einsumfunc import _parse_possible_contraction
@ -942,6 +944,21 @@ class DEMProcess(object):
del in_ds, out_band, out_ds del in_ds, out_band, out_ds
@staticmethod @staticmethod
def unzip_file(zip_file_path, out_path):
# 获取压缩文件所在的目录
out_path_merg = os.path.join(out_path, 'dem')
os.mkdir(out_path_merg)
para_value_list = zip_file_path.split(";")
for n in para_value_list:
with zipfile.ZipFile(n, 'r') as zip_ref:
# 解压到和压缩文件同名的文件夹中
zip_ref.extractall(out_path_merg)
# 返回解压后文件夹的路径
# unzipped_folder_path = os.path.join(out_path, os.path.splitext(os.path.basename(zip_file_path))[0])
return out_path_merg
@staticmethod
def dem_clip(OutFilePath, DEMFilePath, SelectArea): def dem_clip(OutFilePath, DEMFilePath, SelectArea):
''' '''
根据选择范围裁剪DEM,并输出 根据选择范围裁剪DEM,并输出

View File

@ -10,6 +10,7 @@
""" """
import logging import logging
from tool.algorithm.algtools.logHandler import LogHandler from tool.algorithm.algtools.logHandler import LogHandler
from tool.algorithm.block.blockprocess import BlockProcess
from tool.algorithm.xml.AlgXmlHandle import ManageAlgXML, CheckSource from tool.algorithm.xml.AlgXmlHandle import ManageAlgXML, CheckSource
from tool.algorithm.xml.CreateMetaDict import CreateMetaDict, CreateProductXml, OrthoAzimuth from tool.algorithm.xml.CreateMetaDict import CreateMetaDict, CreateProductXml, OrthoAzimuth
from tool.algorithm.image.ImageHandle import ImageHandler from tool.algorithm.image.ImageHandle import ImageHandler
@ -78,7 +79,7 @@ class ScatteringMain:
self.__create_work_space() self.__create_work_space()
self.__task_id = self.__alg_xml_handler.get_task_id() self.__task_id = self.__alg_xml_handler.get_task_id()
self.__input_paras = self.__alg_xml_handler.get_input_paras() self.__input_paras = self.__alg_xml_handler.get_input_paras()
self.__in_processing_paras = self.__init_processing_paras(self.__input_paras) self.__in_processing_paras = self.__init_processing_paras(self.__input_paras, self.__workspace_preprocessing_path)
SrcImageName = os.path.split(self.__input_paras["SLC"]['ParaValue'])[1].split('.tar.gz')[0] SrcImageName = os.path.split(self.__input_paras["SLC"]['ParaValue'])[1].split('.tar.gz')[0]
AlgorithmName = self.__alg_xml_handler.get_algorithm_name() AlgorithmName = self.__alg_xml_handler.get_algorithm_name()
TaskId = self.__alg_xml_handler.get_task_id() TaskId = self.__alg_xml_handler.get_task_id()
@ -92,7 +93,7 @@ class ScatteringMain:
logger.info('progress bar: 30%') logger.info('progress bar: 30%')
return True return True
def __init_processing_paras(self, names): def __init_processing_paras(self, names,out_path):
""" """
:param names:字典列表每个字典为一个输入产品的配置信息 :param names:字典列表每个字典为一个输入产品的配置信息
""" """
@ -119,6 +120,17 @@ class ScatteringMain:
for path in paths: for path in paths:
tar_gz_dic = self.__dec_tar_gz(path, self.__workspace_preprocessing_path) tar_gz_dic = self.__dec_tar_gz(path, self.__workspace_preprocessing_path)
processing_paras.update(tar_gz_dic) processing_paras.update(tar_gz_dic)
elif para['DataType'] == 'zip':
# temp_para = para['ParaValue'].split(".")[0]
para_value_list = para['ParaValue'].split(";")
if len(para_value_list) == 1:
para_path = para['ParaValue']
if para_path != 'empty' and para_path != '':
file_path = BlockProcess.unzip_file(para_path, out_path)
processing_paras.update({name: os.path.dirname(file_path)})
else:
file_path = DEMProcess.unzip_file(para['ParaValue'], out_path)
processing_paras.update({name: file_path})
elif para['DataType'] == 'tif' or para['DataType'] == 'tiff': # 新增修改dem数据为文件绝对路径 elif para['DataType'] == 'tif' or para['DataType'] == 'tiff': # 新增修改dem数据为文件绝对路径
if para['ParaValue'] != 'empty' and para['ParaValue'] != 'Empty' and para['ParaValue'] != '': if para['ParaValue'] != 'empty' and para['ParaValue'] != 'Empty' and para['ParaValue'] != '':
para_path_list = para['ParaValue'].split(";") para_path_list = para['ParaValue'].split(";")
@ -294,6 +306,8 @@ class ScatteringMain:
in_dem_path = self.__in_processing_paras['DEM'] in_dem_path = self.__in_processing_paras['DEM']
meta_file_path = self.__in_processing_paras['META'] # .meta文件路径 meta_file_path = self.__in_processing_paras['META'] # .meta文件路径
out_dem_path = self.__workspace_preprocessing_path out_dem_path = self.__workspace_preprocessing_path
# unzipped_folder_path = DEMProcess.unzip_file(in_dem_path, self.__workspace_origin_path) # 解压DEM.zip
dem_merged_path=DEMProcess.dem_merged(in_dem_path, meta_file_path, out_dem_path) # 生成TestDEM\mergedDEM_VRT.tif dem_merged_path=DEMProcess.dem_merged(in_dem_path, meta_file_path, out_dem_path) # 生成TestDEM\mergedDEM_VRT.tif
in_slc_path=None in_slc_path=None

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<Root> <Root>
<TaskID>CSAR_202107275419_0001-0</TaskID> <TaskID>CSAR_202107275419_0001-0</TaskID>
<WorkSpace>D:\micro\WorkSpace\</WorkSpace> <WorkSpace>E:\Result_GF3\</WorkSpace>
<AlgCompt> <AlgCompt>
<DataTransModel>File</DataTransModel> <DataTransModel>File</DataTransModel>
<Artificial>ElementAlg</Artificial> <Artificial>ElementAlg</Artificial>
@ -53,7 +53,7 @@
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tar.gz</DataType> <DataType>tar.gz</DataType>
<ParaSource>Man</ParaSource> <ParaSource>Man</ParaSource>
<ParaValue>E:\MicroWorkspace\Micro\neimenggu\GF3_MDJ_QPSI_031847_E116.4_N43.9_20220828_L1A_AHV_L10006708819-cal.tar.gz</ParaValue> <ParaValue>E:\GF3Data\leafindex\GF3_MDJ_QPSI_031847_E116.4_N43.9_20220828_L1A_AHV_L10006708819-cal.tar.gz</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice> <EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -81,9 +81,9 @@
<ParaChsName>土壤水分产品</ParaChsName> <ParaChsName>土壤水分产品</ParaChsName>
<Description>土壤水分产品</Description> <Description>土壤水分产品</Description>
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tif</DataType> <DataType>zip</DataType>
<ParaSource>Man</ParaSource> <ParaSource>Man</ParaSource>
<ParaValue>E:\MicroWorkspace\Micro\neimenggu\soil_moisture.tif</ParaValue> <ParaValue>E:\GF3Data\leafindex\soil_moisture.zip</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice> <EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -96,9 +96,9 @@
<ParaChsName>叶面积指数实测数据</ParaChsName> <ParaChsName>叶面积指数实测数据</ParaChsName>
<Description>叶面积指数实测数据</Description> <Description>叶面积指数实测数据</Description>
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>csv</DataType> <DataType>zip</DataType>
<ParaSource>Man</ParaSource> <ParaSource>Man</ParaSource>
<ParaValue>D:\estar-proj\microproduct_depdence\process_lai\laiplus2.csv</ParaValue> <ParaValue>E:\GF3Data\leafindex\laiplus2.zip</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice> <EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -111,9 +111,9 @@
<ParaChsName>NDVI</ParaChsName> <ParaChsName>NDVI</ParaChsName>
<Description>NDVI影像坐标系要求WGS84</Description> <Description>NDVI影像坐标系要求WGS84</Description>
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tif</DataType> <DataType>zip</DataType>
<ParaSource>Cal</ParaSource> <ParaSource>Cal</ParaSource>
<ParaValue>E:\MicroWorkspace\Micro\neimenggu\L9NDVI.tif</ParaValue> <ParaValue>E:\GF3Data\leafindex\L9NDVI.zip</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice> <EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -141,9 +141,9 @@
<ParaChsName>地表覆盖度</ParaChsName> <ParaChsName>地表覆盖度</ParaChsName>
<Description>地表覆盖度数据坐标系要求WGS84</Description> <Description>地表覆盖度数据坐标系要求WGS84</Description>
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tif</DataType> <DataType>zip</DataType>
<ParaSource>Cal</ParaSource> <ParaSource>Cal</ParaSource>
<ParaValue>E:\MicroWorkspace\Micro\neimenggu\N50_40_2020LC030_geo.tif</ParaValue> <ParaValue>E:\GF3Data\leafindex\N50_40_2020LC030_geo.zip</ParaValue>
<EnModification>True</EnModification> <EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice> <EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control> <Control>File</Control>
@ -235,7 +235,7 @@
<ParaType>File</ParaType> <ParaType>File</ParaType>
<DataType>tar.gz</DataType> <DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource> <ParaSource>Cal</ParaSource>
<ParaValue>D:\micro\WorkSpace\LeafAreaIndex\Output\GF3_MDJ_QPSI_031847_E116.4_N43.9_20220828_L1A_AHV_L10006708819-cal-LAI.tar.gz</ParaValue> <ParaValue>E:\Result_GF3\LeafAreaIndex\Output\GF3_MDJ_QPSI_031847_E116.4_N43.9_20220828_L1A_AHV_L10006708819-cal-LAI.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue> <MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue> <MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue> <OptionValue>DEFAULT</OptionValue>

View File

@ -118,7 +118,7 @@ class LeafIndexMain:
self.__sar_tif_name = 'empty' self.__sar_tif_name = 'empty'
else: else:
raise ValueError("input Para 'Polarization' is not 'HV''HH''VV'or 'empty'!") raise ValueError("input Para 'Polarization' is not 'HV''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(self.get_tar_gz_inf(self.__processing_paras["sar_path0"])) self.__processing_paras.update(self.get_tar_gz_inf(self.__processing_paras["sar_path0"]))
logger.info('check_source success!') logger.info('check_source success!')
return True return True

View File

@ -8,6 +8,9 @@
@Date:2021/9/6 @Date:2021/9/6
@Version:1.0.0 @Version:1.0.0
""" """
import glob
import zipfile
from osgeo import osr, gdal from osgeo import osr, gdal
import numpy as np import numpy as np
import os import os
@ -58,6 +61,24 @@ class BlockProcess:
pass pass
return result_dir, result_name return result_dir, result_name
@staticmethod
def unzip_file(zip_file_path, out_path): # ):
# 获取压缩文件所在的目录
# extract_folder = os.path.dirname(zip_file_path)
basename = os.path.splitext(os.path.basename(zip_file_path))[0]
extract_folder = os.path.join(out_path, basename)
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
# 解压到和压缩文件同名的文件夹中
zip_ref.extractall(extract_folder)
# 返回解压后文件夹的路径
files = list(glob.glob(os.path.join(extract_folder, '*')))
for file in files:
if basename in os.path.basename(file):
unzipped_folder_path = file
return unzipped_folder_path
@staticmethod @staticmethod
def get_same_img(img_dir, img_name): def get_same_img(img_dir, img_name):
""" """

View File

@ -608,7 +608,8 @@ class ImageHandler:
t_data = self.get_data(tif_path) t_data = self.get_data(tif_path)
t_data = t_data.astype(float) t_data = t_data.astype(float)
t_data = np.sqrt(t_data[0] ** 2 + t_data[1] ** 2) t_data = np.sqrt(t_data[0] ** 2 + t_data[1] ** 2)
t_data[np.isnan(t_data)] = 0
t_data[np.where(t_data == -9999)] = 0
t_r = self.get_img_height(tif_path) t_r = self.get_img_height(tif_path)
t_c = self.get_img_width(tif_path) t_c = self.get_img_width(tif_path)
if t_r > 10000 or t_c > 10000: if t_r > 10000 or t_c > 10000:

View File

@ -20,6 +20,7 @@ import multiprocessing
import ctypes import ctypes
logger = logging.getLogger("mylog") logger = logging.getLogger("mylog")
import glob import glob
from tool.algorithm.block.blockprocess import BlockProcess
class ManageAlgXML: class ManageAlgXML:
""" """
@ -519,7 +520,7 @@ class InitPara:
self._debug = debug self._debug = debug
@staticmethod @staticmethod
def init_processing_paras(input_paras): def init_processing_paras(input_paras,out_path):
""" """
:param names:字典列表每个字典为一个输入产品的配置信息 :param names:字典列表每个字典为一个输入产品的配置信息
""" """
@ -540,6 +541,18 @@ class InitPara:
else: else:
for n, para_value in zip(range(len(para_value_list)), para_value_list): for n, para_value in zip(range(len(para_value_list)), para_value_list):
processing_paras.update({name+str(n): para_value}) processing_paras.update({name+str(n): para_value})
elif para['DataType'] == 'zip':
# temp_para = para['ParaValue'].split(".")[0]
para_value_list = out_path.split(";")
if len(para_value_list) == 1:
para_path = para['ParaValue']
if para_path != 'empty' and para_path != '':
file_path = BlockProcess.unzip_file(para_path, out_path)
processing_paras.update({name: file_path})
else:
for n, para_value_zip in zip(range(len(para_value_list)), para_value_list):
file_path = BlockProcess.unzip_file(para_value_zip, out_path)
processing_paras.update({name+str(n): file_path})
elif para['DataType'] == 'tar.gz': elif para['DataType'] == 'tar.gz':
paths = para['ParaValue'].split(';') paths = para['ParaValue'].split(';')
for n, path in zip(range(len(paths)), paths): for n, path in zip(range(len(paths)), paths):