加入解压缩方法,解决正射输入为压缩包问题

dev
cuiyyyu 2024-01-23 18:04:31 +08:00
parent 71839faef1
commit 2dc9e52974
3 changed files with 49 additions and 104 deletions

View File

@ -1,103 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<Root>
<TaskID>CSAR_202107275419_0001-0</TaskID>
<WorkSpace>D:\micro\LWork\</WorkSpace>
<AlgCompt>
<DataTransModel>File</DataTransModel>
<Artificial>ElementAlg</Artificial>
<AlgorithmName>Ortho_C_SAR_V2.1</AlgorithmName>
<DllName>Ortho_C_SAR_V2.1.exe</DllName>
<ChsName>正射校正</ChsName>
<AlgorithmDesc>微波卫星3-5级产品生产模型</AlgorithmDesc>
<AlgorithmAlias>Ortho-C-SAR-V2.1-1</AlgorithmAlias>
<Version>1.0</Version>
<AlgorithmClass>辐射类产品_正射校正</AlgorithmClass>
<AlgorithmLevel>4</AlgorithmLevel>
<AlgoirthmID>Ortho_中科卫星应用德清研究院_2.1</AlgoirthmID>
<Author>中科卫星应用德清研究院</Author>
<Type>景-算法</Type>
<InputTestFilePath>Ortho\\Input6</InputTestFilePath>
<InputTestFileName>
2599253_San_Francisco
</InputTestFileName>
<OutputTestFilePath>Ortho\\Output</OutputTestFilePath>
<OutputTestFileName>
</OutputTestFileName>
<jdkVersion>1.8</jdkVersion>
<algDevlanguage>python</algDevlanguage>
<Environment>
<IsCluster>0</IsCluster>
<ClusterNum>0</ClusterNum>
<OperatingSystem>Windows10</OperatingSystem>
<CPU>4核</CPU>
<Memory>8GB</Memory>
<Storage>25GB</Storage>
<NetworkCard>无需求</NetworkCard>
<Bandwidth>无需求</Bandwidth>
<GPU>无需求</GPU>
</Environment>
<Utility Satellite="GF3" Sensor="MSS" Resolution="1" />
<Inputs ParameterNum="3">
<Parameter>
<ParaName>SLC</ParaName>
<ParaChsName>SLC元文件</ParaChsName>
<Description>原始SLC各相关文件和参数</Description>
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>E:\MicroWorkspace\LT1B\LT230919\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966.tar.gz</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>False</EnMultipleChoice>
<Control>File</Control>
<InputType>Satellite</InputType>
<InputNum>1</InputNum>
<DateFrom>GF3A</DateFrom>
</Parameter>
<Parameter>
<ParaName>DEM</ParaName>
<ParaChsName>DEM数字高程影像</ParaChsName>
<Description>30m分辨率DEM数字高程影像tif E:\MicroWorkspace\LT1B\LT230919\dem</Description>
<ParaType>File</ParaType>
<DataType>tif</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>E:\MicroWorkspace\LT1B\LT230919\DEM30m.tif</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>True</EnMultipleChoice>
<Control>File</Control>
<InputType>DEM</InputType>
<InputNum>0</InputNum>
<DateFrom>DEM</DateFrom>
</Parameter>
<Parameter>
<ParaName>CorrectMethod</ParaName>
<ParaChsName>选择校正方法</ParaChsName>
<Description>1.RPC;2.RD</Description>
<ParaType>int</ParaType>
<DataType>int</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>2</ParaValue>
<EnModification>True</EnModification>
<EnMultipleChoice>True</EnMultipleChoice>
<Control>UploadInput</Control>
<InputType>Aux</InputType>
<InputNum>0</InputNum>
<DateFrom>Aux</DateFrom>
</Parameter>
</Inputs>
<Outputs ParameterNum="1">
<Parameter>
<ParaName>OrthoProduct</ParaName>
<ParaChsName>产品结果文件</ParaChsName>
<Description>产品结果文件</Description>
<ParaType>File</ParaType>
<DataType>tar.gz</DataType>
<ParaSource>Cal</ParaSource>
<ParaValue>D:\micro\LWork\Ortho\Output\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966-ortho.tar.gz</ParaValue>
<MaxValue>DEFAULT</MaxValue>
<MinValue>DEFAULT</MinValue>
<OptionValue>DEFAULT</OptionValue>
<NoDataValue>DEFAULT</NoDataValue>
</Parameter>
</Outputs>
</AlgCompt>
</Root>

View File

@ -9,6 +9,8 @@
@Version 1.0.0 @Version 1.0.0
""" """
import logging import logging
from tool.algorithm.block.blockprocess import BlockProcess
from tool.algorithm.image.ImageHandle import ImageHandler from tool.algorithm.image.ImageHandle import ImageHandler
from tool.algorithm.xml.CreateMetaDict import CreateMetaDict, CreateProductXml from tool.algorithm.xml.CreateMetaDict import CreateMetaDict, CreateProductXml
from tool.algorithm.algtools.PreProcess import PreProcess as pp from tool.algorithm.algtools.PreProcess import PreProcess as pp
@ -298,6 +300,19 @@ class OrthoMain:
shutil.copy(file_path, os.path.join(dem_path, tif_name)) shutil.copy(file_path, os.path.join(dem_path, tif_name))
para_path = os.path.join(self.__workspace_origin_path,para['ParaName']) para_path = os.path.join(self.__workspace_origin_path,para['ParaName'])
processing_paras.update({name: para_path}) processing_paras.update({name: para_path})
if para['DataType'] == 'zip':
if para['ParaValue'] != 'empty' and para['ParaValue'] != 'Empty' and para['ParaValue'] != '':
para_path_list = para['ParaValue'].split(";")
if len(para_path_list) != 0:
dem_path = os.path.join(self.__workspace_origin_path, para['ParaName'])
if os.path.exists(dem_path) is False:
os.mkdir(dem_path)
for file_path in para_path_list:
temp = BlockProcess.unzip_file(file_path, dem_path)
# tif_name = os.path.basename(file_path)
# shutil.copy(file_path, os.path.join(dem_path, tif_name))
para_path = os.path.join(self.__workspace_origin_path,para['ParaName'],os.path.basename(os.path.dirname(temp)))
processing_paras.update({name: para_path})
elif para['ParaType'] == 'Value': elif para['ParaType'] == 'Value':
if para['DataType'] == 'float': if para['DataType'] == 'float':
value = float(para['ParaValue']) value = float(para['ParaValue'])
@ -539,7 +554,7 @@ class OrthoMain:
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_ResampledDEM_path out_dem_path = self.__workspace_ResampledDEM_path
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
# self.cut_dem(dem_merged_path, meta_file_path) # self.cut_dem(dem_merged_path, meta_file_path)
# 2、间接定位法求解行列坐标 # 2、间接定位法求解行列坐标

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
@ -39,7 +42,37 @@ class BlockProcess:
suffix = '_' + name.split('_')[-4] + '_' + name.split('_')[-3] + '_' + name.split('_')[-2] + '_' + \ suffix = '_' + name.split('_')[-4] + '_' + name.split('_')[-3] + '_' + name.split('_')[-2] + '_' + \
name.split('_')[-1] name.split('_')[-1]
return suffix return suffix
@staticmethod
def unzip_file(zip_file_path, out_path): # ):
# 获取压缩文件所在的目录
# extract_folder = os.path.dirname(zip_file_path)
if zip_file_path.endswith("dem.zip"):
out_path_merg = os.path.join(out_path)
# 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)
return out_path
else:
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):
if not file.endswith(".xml"):
unzipped_folder_path = file
return unzipped_folder_path
@staticmethod @staticmethod
def get_file_names(data_dir, file_type=['tif', 'tiff']): def get_file_names(data_dir, file_type=['tif', 'tiff']):
""" """