陆探数据处理

部署运行你感兴趣的模型镜像

一、前期准备

# 查找指定月份的原始文件
import os
import re

# 指定目录路径
directory_path = r"E:\LT111\LT_data"  # 替换为你的实际路径

# 初始化计数器
september_count = 0

# 正则表达式,用于匹配连续的 8 个数字作为日期
date_pattern = re.compile(r'\d{8}')  # 匹配 8 个连续的数字

# 遍历目录中的所有文件
for file_name in os.listdir(directory_path):
    # 构建文件的完整路径
    file_path = os.path.join(directory_path, file_name)
    
    # 检查文件是否以 .gz 结尾
    if file_name.endswith('.gz') and os.path.isfile(file_path):
        # 查找文件名中所有符合日期模式的字符串
        match = date_pattern.search(file_name)
        
        if match:
            date_str = match.group(0)  # 获取日期字符串
            
            # 检查日期是否为九月份
            if date_str[4:6] == '09':  # 获取日期中的月份部分(第 5 和第 6 个字符)
                september_count += 1

# 输出结果
print(f"在目录 {directory_path} 中,共有 {september_count} 个九月份的数据文件。")

# 查找轨道数据文件

import os
import re

# 指定目录路径
directory_path = r"E:\LT111\LT_data\canshu"  # 替换为你的实际路径

# 初始化计数器
september_count = 0

# 遍历目录中的所有文件
for file_name in os.listdir(directory_path):
    # 构建文件的完整路径
    file_path = os.path.join(directory_path, file_name)

    # 检查文件是否以 .txt 结尾,且文件名包含 8 位数字
    if file_name.endswith('.txt') and os.path.isfile(file_path):
        # 查找文件名中的日期部分(假设日期格式是 YYYYMMDD)
        date_match = re.search(r'(\d{8})', file_name)  # 查找 8 位数字

        if date_match:
            # 提取匹配到的日期部分
            date_str = date_match.group(1)

            # 检查日期中的月份部分(第五和第六位)是否为 '09'(9 月份)
            if date_str[4:6] == '09':  # 获取日期中的月份部分
                september_count += 1

# 输出结果
print(f"在目录 {directory_path} 中,共有 {september_count} 个九月份的数据文件。")
查找复制轨道文件
import os
import re
import shutil

# 指定目录路径
directory_path = r"E:\LT111\LT_data\canshu"  # 替换为你的实际路径

# 目标目录路径
lt1a_dir = r"E:\LT111\202409\LuTanorbit\LT1A"
lt1b_dir = r"E:\LT111\202409\LuTanorbit\LT1B"

# 初始化计数器
september_count = 0

# 遍历目录中的所有文件
for file_name in os.listdir(directory_path):
    # 构建文件的完整路径
    file_path = os.path.join(directory_path, file_name)
    
    # 检查文件是否以 .txt 结尾,且文件名包含 8 位数字
    if file_name.endswith('.txt') and os.path.isfile(file_path):
        # 查找文件名中的日期部分(假设日期格式是 YYYYMMDD)
        date_match = re.search(r'(\d{8})', file_name)  # 查找 8 位数字
        
        if date_match:
            # 提取匹配到的日期部分
            date_str = date_match.group(1)
            
            # 检查日期中的月份部分(第五和第六位)是否为 '09'(9 月份)
            if date_str[4:6] == '09':  # 获取日期中的月份部分
                september_count += 1

                # 根据文件名前缀复制文件
                if file_name.startswith('LT1A'):
                    # 确保目标目录存在
                    if not os.path.exists(lt1a_dir):
                        os.makedirs(lt1a_dir)
                    # 复制文件到 LT1A 目录
                    shutil.copy(file_path, os.path.join(lt1a_dir, file_name))
                    print(f"文件 {file_name} 已复制到 {lt1a_dir}")

                elif file_name.startswith('LT1B'):
                    # 确保目标目录存在
                    if not os.path.exists(lt1b_dir):
                        os.makedirs(lt1b_dir)
                    # 复制文件到 LT1B 目录
                    shutil.copy(file_path, os.path.join(lt1b_dir, file_name))
                    print(f"文件 {file_name} 已复制到 {lt1b_dir}")

# 输出结果
print(f"在目录 {directory_path} 中,共有 {september_count} 个九月份的数据文件。")

# 单个解压
import tarfile
import os

# 使用原始字符串 (raw string) 确保路径中的反斜杠不被误解析
tar_file = r"E:\LT111\202409\LT1B_MONO_KRN_STRIP1_013730_E80.2_N44.7_20240907_SLC_HH_S2A_0000502800.tar.gz"

# 获取文件所在的目录
output_dir = os.path.dirname(tar_file)

# 获取文件名(去掉扩展名 .tar.gz)
file_name = os.path.basename(tar_file).replace('.tar.gz', '')  # 去掉 .tar.gz 部分

# 创建新的文件夹,文件夹名为去掉 .tar.gz 后的文件名
new_output_dir = os.path.join(output_dir, file_name)

# 如果目录不存在,则创建
if not os.path.exists(new_output_dir):
    os.makedirs(new_output_dir)

# 打开 tar.gz 文件并解压到新的目录
try:
    with tarfile.open(tar_file, 'r:gz') as tar:
        tar.extractall(path=new_output_dir)  # 解压到新的文件夹
    print(f"文件已解压到: {new_output_dir}")
except FileNotFoundError:
    print(f"文件未找到:{tar_file}")
except Exception as e:
    print(f"发生了其他错误:{e}")
# 遍历解压

import tarfile
import os

# 文件夹路径
folder_path = r"E:\LT111\202409"  # 替换为实际的文件夹路径

# 遍历文件夹中的所有 .tar.gz 文件
for tar_file in os.listdir(folder_path):
    # 确保只处理 .tar.gz 文件
    if tar_file.endswith('.tar.gz'):
        # 获取完整的文件路径
        tar_file_path = os.path.join(folder_path, tar_file)

        # 获取文件所在的目录
        output_dir = folder_path

        # 获取文件名(去掉扩展名 .tar.gz)
        file_name = os.path.basename(tar_file).replace('.tar.gz', '')

        # 创建新的文件夹,文件夹名为去掉 .tar.gz 后的文件名
        new_output_dir = os.path.join(output_dir, file_name)

        # 如果目录不存在,则创建
        if not os.path.exists(new_output_dir):
            os.makedirs(new_output_dir)

        # 打开 tar.gz 文件并解压到新的目录
        try:
            with tarfile.open(tar_file_path, 'r:gz') as tar:
                tar.extractall(path=new_output_dir)  # 解压到新的文件夹
            print(f"文件 {tar_file} 已解压到: {new_output_dir}")
        except FileNotFoundError:
            print(f"文件未找到:{tar_file_path}")
        except Exception as e:
            print(f"解压 {tar_file} 时发生了其他错误:{e}")

二、ENVI处理处理

创建几个文件夹

Originaldata  原始解压之后的数据
workspace  生成结果的
LuTanorbit 精密轨道的  
这个参考 
https://www.cnblogs.com/enviidl/p/18125558

搞起

设置工作路径

在这里插入图片描述
在这里插入图片描述

数据导入

在Toolbox 中,双击/SARscape/Preferences/Preferences common。设置LuTan orbit directory参数指定到一个目录中,并在该目录中新建2个文件夹:LT1A和LT1B。分别存放对应卫星的精密轨道文件。

在这里插入图片描述

数据导入

打开Toolbox/SARscape/Preferences/Preferences specific
在这里插入图片描述
在这里插入图片描述
在Toolbox中,选择/SARscape/Import Data/SAR Spaceborne/Single Sensor/LuTan-1
在这里插入图片描述
导入数据就可以了 一次性可以多加载点哈哈哈哈
在打开的面板中,

数据输入面板(Input Files)
输入文件(Input File List):输入过滤的.meta.xml文件
参数设置面板(Parameters):主要参数(Principal Parameters)
极化方式(Polarization):ALL,输出所有的极化数据,可以选择只输出同极化或者交叉极化的数据;
对数据重命名(Rename the File Using Parameters):True。软件会自动在输入文件名的基础上增加几个标识字母,如增加“_HH_slc”。
数据输出面板(Output Files)
输出文件(Output file list):自动读取ENVI默认的数据输出目录以及输入面板中的数据文件名。

注:1.如果要修改输出的路径,在右边单击文件夹图标选择输出文件夹目录。

2、如果要修改输出的路径,在输出文件名右键选择Edit菜单。

(3)单击Exec按钮开始执行。

多视处理

单视复数(SLC)SAR图像产品包含很多的斑点噪声,为了得到最高空间分辨率的SAR图像,SAR信号处理器使用完整的合成孔径和所有的信号数据。多视处理是在图像的距离向和方位向上的分辨率做了平均,目的是为了抑制SAR图像的斑点噪声。多视的图像提高了辐射分辨率,降低了空间分辨率。输出雷达强度图像。

该步骤可以不做,直接对SLC图像进行地理编码。

(1)在Toolbox中,选择/SARscape/Basic/Intensity Processing/Multilooking。

(2)在Multilooking面板中:

数据输入(Input Files)面板,单击Browse Files按钮,选择SLC数据,此处选择上一步导入得到的slc数据,根据选择的输出Grid Size=12自动算出了视数。
参数设置(Parameters)面板,主要参数(Principal Parameters)中,多视的视数和输出的制图分辨率按照默认。
数据输出(Output Files)面板,输出路径及文件名按照默认,结果自动添加_pwr后缀。
(3)单击Exec按钮执行。

滤波

从连贯SAR传感器中获取的图像都有斑点噪声,可通过空间滤波方式抑制噪声。

(1)Toolbox中,选择/SARscape/Basic/Intensity Processing/Filtering/Filtering Single Image。

(2)在Filtering Single Image面板:

数据输入(Input Files)面板,单击Browse Files按钮,选择需要滤波的雷达强度图像。
注:也可以选择地理编码后的雷达强度图像。

参数设置(Parameters)面板,主要参数设置(Principal Parameters)为
滤波方法(Filter Method):Frost。有8种滤波方法
方位向窗口大小(Azimuth Window Size):5
距离向窗口大小(Range Window Size):5
等值视数(Equivalent Number of Looks):-1
说明:窗口设置越大,滤波效果越平滑,需要的时间越长

数据输出(Output Files)面板,设置输出路径和文件名,默认自动添加了_fil的后缀。
(3)单击Exec执行。

陆探一号的成像质量非常不错,窗口5的滤波前后变化不大。
在这里插入图片描述

地理编码

拿到的例子数据中*Meta.xml中项缺少定标参数,本文档中不设置辐射定标为后向散射系数。

(1) Toolbox中,选择/SARscape/Basic/Intensity Processing/Geocoding/Geocoding and Radiometric Calibration。

(2) 打开Geocoding and Radiometric Calibration面板:

数据输入(Input Files):选择上一步得到的滤波结果。
注:也可以选择导入的SLC、多视后的PWR强度数据。

可选文件(Optional Files):Geometry GCP File和Area File这两个文件是可选项,这里不使用这两个文件。
投影参数(DEM/Cartographic System):选择Geo-GLOBAL,其他默认。
注:可以选择提前下载好的DEM数据,输出与DEM一样的投影坐标信息,几何定位精度也会提高。

参数设置(Parameters)面板,主要参数(Principal Parameters)
像元大小(X Grid Size):3
像元大小(Y Grid Size):3
辐射定标(Radiometric Calibration):False
其他默认。

output files面板,选择输出路径和文件名,默认自动添加了_geo后缀。
(3)单击Exec执行。

输出结果中,除了输出一个ENVI格式的结果文件,同时还输出一个8bit、Geotif格式的拉伸结果图像,KML格式的外接边文件。

参考教程

https://www.cnblogs.com/enviidl/p/17469219.html
https://zhuanlan.zhihu.com/p/552961084
https://www.cnblogs.com/enviidl/p/18125558

新手 勿喷

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值