更新后向和叶面积解压缩以及快视图

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

View File

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

View File

@ -8,6 +8,8 @@
@Date 2021/8/14
@Version 1.0.0
"""
import zipfile
# from re import I, T, X, match
# from types import DynamicClassAttribute
# from numpy.core.einsumfunc import _parse_possible_contraction
@ -942,6 +944,21 @@ class DEMProcess(object):
del in_ds, out_band, out_ds
@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):
'''
根据选择范围裁剪DEM,并输出

View File

@ -10,6 +10,7 @@
"""
import logging
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.CreateMetaDict import CreateMetaDict, CreateProductXml, OrthoAzimuth
from tool.algorithm.image.ImageHandle import ImageHandler
@ -78,7 +79,7 @@ class ScatteringMain:
self.__create_work_space()
self.__task_id = self.__alg_xml_handler.get_task_id()
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]
AlgorithmName = self.__alg_xml_handler.get_algorithm_name()
TaskId = self.__alg_xml_handler.get_task_id()
@ -92,7 +93,7 @@ class ScatteringMain:
logger.info('progress bar: 30%')
return True
def __init_processing_paras(self, names):
def __init_processing_paras(self, names,out_path):
"""
:param names:字典列表每个字典为一个输入产品的配置信息
"""
@ -119,6 +120,17 @@ class ScatteringMain:
for path in paths:
tar_gz_dic = self.__dec_tar_gz(path, self.__workspace_preprocessing_path)
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数据为文件绝对路径
if para['ParaValue'] != 'empty' and para['ParaValue'] != 'Empty' and para['ParaValue'] != '':
para_path_list = para['ParaValue'].split(";")
@ -294,6 +306,8 @@ class ScatteringMain:
in_dem_path = self.__in_processing_paras['DEM']
meta_file_path = self.__in_processing_paras['META'] # .meta文件路径
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
in_slc_path=None

View File

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

View File

@ -118,7 +118,7 @@ class LeafIndexMain:
self.__sar_tif_name = 'empty'
else:
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"]))
logger.info('check_source success!')
return True

View File

@ -8,6 +8,9 @@
@Date:2021/9/6
@Version:1.0.0
"""
import glob
import zipfile
from osgeo import osr, gdal
import numpy as np
import os
@ -58,6 +61,24 @@ class BlockProcess:
pass
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
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 = t_data.astype(float)
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_c = self.get_img_width(tif_path)
if t_r > 10000 or t_c > 10000:

View File

@ -20,6 +20,7 @@ import multiprocessing
import ctypes
logger = logging.getLogger("mylog")
import glob
from tool.algorithm.block.blockprocess import BlockProcess
class ManageAlgXML:
"""
@ -519,7 +520,7 @@ class InitPara:
self._debug = debug
@staticmethod
def init_processing_paras(input_paras):
def init_processing_paras(input_paras,out_path):
"""
:param names:字典列表每个字典为一个输入产品的配置信息
"""
@ -540,6 +541,18 @@ class InitPara:
else:
for n, para_value in zip(range(len(para_value_list)), para_value_list):
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':
paths = para['ParaValue'].split(';')
for n, path in zip(range(len(paths)), paths):