xml怎么实现点击后出现文本框提示_基于ENVI/IDL实现国产卫星影像批处理功能

1 国产卫星影像批量读取

常用的国产卫星数据标准产品包括 L1级数据和 L2级数据。L1级数据经过辐射校正处理后生成的产品,数据文件格式为 TIFF,并提供 RPC数据;L2级数据是系统几何校正产品,经过辐射和几何校正处理后生成的产品,具有地图投影,投影坐标为 UTM,数据存储格式为 GeoTiff。元数据以xml文件提供,里面包含了详细的数据描述信息,如传感器类型、数据获取时间,地面分辨率,太阳和卫星的高度角和方位角,地图投影,数据范围等。

本次实验采用OpenRaster 方法进行影像数据读取,在读取影像数据之前,需事 先读取xml文件和RPC文件获取元数据信息,然后通过调用OpenRaster 函数设置关键字参数将这些信息传递给所需读取的栅格对象,在关闭栅格对象后,这些元数据会保存的新生成的ENVI头文件中。

2 批处理工具设计

本实验采用IDL GUI完成界面开发,界面简单、友好、易用,如图所示。本工具主要包括三个功能模块:数据输入输出,批处理流程设置和处理信息显示。数据的输入目前支持国产 ZY2,ZY3,GF1以及其他ENVI支持的格式。该工具可以根据数据类型、数据级别以及自定义方式定义过滤条件,读取元数据文件,生成ENVI头文件,最后将成功读取的文件的路径显示在下方的表格中。

9b411f3d89edf60769c0483f229a13b3.png

批处理工具界面

本批处理工具实现了正射校正、影像自动配准、影像融合、线性拉伸等多个批处理功能,各个功能可以任意组合,功能按照顺序执行,上一步的结果作为下一步的输入,每个功能按钮可以设置相应的参数,以自动配准为例,需设置的参数。

(1)参考影像:默认值为空,表示全色和多光谱配准,也可以输入参考影像路径。

(2)参考影像波段和校正影像波段:用于指定搜索控制点时的波段,一般选择波长较长的波段。

(3)搜索窗大小:用于指定在待匹配影像上搜索同名点时的窗口大小,该值最小值为2*(d+1),d为两幅影像上同名点最大像素偏移量。

(4)匹配窗大小:用于计算匹配度是窗口大小,一般分辨率越高设置越大。

(5)最小匹配度:用于过滤差的匹配点,默认是0.7,当匹配窗口较大,可以适当降低该值。

(6)特征点提取算子:提供了Moravec 和 Forstner两种算子,前者计算速度更快,后者精度更高。

(7)校正方法:提供仿射变换、一次多项式和三角网三种校正方法。重采样方法:提供最邻近、双线性内插和三次卷积。

处理显示模块主要是在点击执行按钮后,处理信息文本框会显示处理进度、正在处理的文件、处理时间等相关信息

156e18e0d05e031d8969d25815d91e7f.png

参数设置对话框

3 批处理功能的实现

部分核心代码如下:

COMPILE_OPT id12e=ENVI(/headless)FOREACH file,infiles DO BEUINtask=ENVITaskraster=e.openraster(file)demraster=e.openraster(demfile)task.INPUT_RASTER=rastertask.DEM_RASTER=demrastertask.0utput_Raster_URI=outfiletask.ExecuteENDFOREACH

    其他的批处理实现方式与上述一样。其中ENVIAPI中没有提供自动配准的任务,但提供了两个函数ENVI_AUTO_TIE_POINTS_DOIT和ENVI_REUISTER _DOIT函数来分别实现控制点自动选取以及影像的几何校正功能。植被增强以及模拟真彩色合成算法可以利用波段运算函数MATH_DOIT完成。

34a4cb21ea9912aac6830d840c4c127e.png

           GS结果                                   NNDi结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ENVI中的IDL脚本可以批量获取卫星影像的轮廓边界。具体步骤如下: 1. 打开ENVI软件,选择“File”菜单下的“New -> Procedure”打开ENVIIDL环境。 2. 在IDL环境中输入以下命令,导入ENVIIDL库: ``` ENVIRasterToVector, /QUIET ENVI_SELECT, /QUIET ``` 3. 定义一个字符串变量,用于存储待处理影像的文件路径: ``` dir = 'C:\image_folder\' ``` 其中,C:\image_folder\为待处理影像所在文件夹的路径。 4. 定义一个字符串数组,用于存储待处理影像的文件名: ``` files = ['image1.tif', 'image2.tif', 'image3.tif'] ``` 其中,image1.tif、image2.tif、image3.tif为待处理影像的文件名,可根据实际情况进行修改。 5. 使用循环语句,对待处理影像进行遍历,并获取其轮廓边界: ``` FOR i=0, N_ELEMENTS(files)-1 DO BEGIN ; 打开待处理影像 file = dir + files[i] raster = ENVIRaster(file) ; 将影像转为矢量数据 vector = ENVIRasterToVector(raster, /BOUNDARY, /POLYGON, /QUIET) ; 选择矢量数据 ENVIRasterSelect, vector ; 获取矢量数据的边界 ENVI_SELECT, /BOUNDARY ; 保存矢量数据的边界 SAVE_DIR = dir + 'boundary_' + files[i] ENVISaveSelectedFeatures, SAVE_DIR, /POLYGON, /QUIET ; 关闭矢量数据 ENVIClose, vector ENDFOR ``` 6. 执行以上脚本,即可批量获取待处理影像的轮廓边界,并将结果保存在与待处理影像同一文件夹下的文件中,文件名为“boundary_原文件名”。 需要注意的是,以上脚本仅适用于获取影像的轮廓边界,如果需要获取影像的实际范围边界,请参考之前的回答中的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值