IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例)

2023-05-16

二、ENVI/IDL批处理入门

    ENVI/IDL集成了ENVI软件的高级功能,比如打开文件直接使用envi_open_file, File ,r_fid=fid即可,不用考虑什么格式等,再比如做文件投影转换只需给定目标投影,然后使用envi_convert_file_map_projection即可,因此可以使用简单的代码,结合循环进行ENVI的批量操作。本篇分两部分展开,第一部分假定你了解ENVI/IDL的知识,结合批量转投影的例子讲解批处理;第二部分假定你不了解ENVI/IDL,可以先看第二部分的基础知识和教程,再看第一部分。有问题请Google。

(一)ENVI/IDL批处理

    这里讲的批处理是标题党,其实不过是利用IDL的循环调用ENVI的API函数而已,但是这个叫法比较形象而且批处理是刚需。以文件投影转换为例先描述下ENVI/IDL批处理的思路:

1)获取(ENVI_GET_PROJECTION)或给定(ENVI_PROJ_CREATE)目标投影信息

2)给定待处理数据的文件夹,按特定后缀循环遍历文件(envi_open_file)

3)读取文件信息(envi_file_query)

4)进行投影转换(envi_convert_file_map_projection)

    下面以一个例子说明其中的关键点:

1)获取(ENVI_GET_PROJECTION)或给定(ENVI_PROJ_CREATE)目标投影信息

    在进行投影转换时,如果我们不清楚目标投影的信息,一种简单的获取方式就是打开具有该投影的文件(或者手动在ENVI里转换得到一个),读取其投影信息。例如:

File = 'C:\data.dat'

envi_open_file, File ,r_fid=fid

o_proj = ENVI_GET_PROJECTION(FID = fid)

这里的o_proj 便读取到了投影信息。

    如果没有可参考的投影文件,或者投影是内置的,或是想自行输入,可以给定投影信息,例如:

o_proj = ENVI_PROJ_CREATE(/geographic) 

这里的投影geographic是内置的。

如果了解参数可以自定义投影,这里的参数不分先后,只是按照字母顺序排序的,点击下面的参数可以链接到具体说明:

Result = ENVI_PROJ_CREATE([, /ARBITRARY] [, DATUM=value] [, /GEOGRAPHIC] [, /MAP_BASED] [, NAME=string] [, PARAMS=array] [, PE_COORD_SYS_CODE=integer] [, PE_COORD_SYS_STR=string] [, /SOUTH] [, /STATE_PLANE] [, TYPE=integer] [, UNITS=integer] [, /UTM] [, ZONE=integer])

4)进行投影转换(envi_convert_file_map_projection),这里的参数不分先后,只是按照字母顺序排序的,点击下面的参数可以链接到具体说明:

ENVI_CONVERT_FILE_MAP_PROJECTION [, BACKGROUND=integer] [, DEGREE=value], DIMS=arrayFID=file ID[, GCP_NAME=string] [, GRID=array] [, O_PIXEL_SIZE=array], O_PROJ=structure [, OUT_BNAME=string array], OUT_NAME=stringPOS=array [, R_FID=variable] [, RESAMPLING={0 | 1 | 2}] [, WARP_METHOD={0 | 1 | 2 | 3}] [, /ZERO_EDGE]

简单说几个常用参数:BACKGROUND是背景值,DIMS和FID是envi_file_query读取的,O_PIXEL_SIZE是像元大小,RESAMPLING是重采样方法0: Nearest neighbor, 1: Bilinear, 2: Cubic convolution,个人习惯0, WARP_METHOD的0: Rotation, scaling, and translation (RST), 1: Polynomial, 2: Triangulation, 3: Rigorous (pixel-by-pixel),个人习惯2。

    下面附一个批量投影转换的例子供参考:

pro enviprojection1
  ; Firstrestore all the base save files.
  COMPILE_OPT IDL2
  e = envi()
  ;Initialize ENVI and send all errors
  ; andwarnings to the file batch.txt
  envi_batch_init, log_file='batch.txt'
  ; Open theinput file
  ;定义投影
  File = 'C:\data.dat'
  envi_open_file, File ,r_fid=fid
  o_proj = ENVI_GET_PROJECTION(FID = fid)
  ; o_proj = ENVI_PROJ_CREATE(/geographic) 

  cd,'C:\data\input\'
  BINFiles = FILE_Search("*.dat")
  FileCount = N_ELEMENTS(BINFiles)
  IF FileCount EQ 0 THEN RETURN

  FOR NX = 0,FileCount -1 DO BEGIN
    FileName = BINFiles[NX]
    envi_open_file, FileName ,r_fid=fid
    if (fid eq -1)then begin
      envi_batch_exit
      return
    endif
    ; Setupthe values for the keywords
    envi_file_query, fid[0], dims=dims, nb=nb
    pos = lindgen(nb)
    indexstr = strpos(FileName,'.dat')
    out_name = strmid(FileName,0,indexstr) +'_Geo.raw'
    ;设置输出像元大小
    o_pixel_size = [5000,5000];


    envi_convert_file_map_projection, fid=fid, $
      pos=pos, dims=dims, o_proj=o_proj, $
      o_pixel_size=o_pixel_size, $
      out_name=out_name, warp_method=2, $
      resampling=0, background=0
    ENVI_FILE_MNG,id = fid,/remove
  ENDFOR
  ; ExitENVI
  envi_batch_exit
end


(二)ENVI/IDL基础

    这里先分别给出ENVI/IDL的图形界面介绍、编程指导手册(下载和在线版)和一个批量转投影的代码。

了解ENVI/IDL的图形用户界面和简单编程

https://webpages.uidaho.edu/for570/Labs/IDL_Labs/IDL%20Lab%201%20-%20The%20IDL%20Interface.pdf

ENVI/IDL编程指导(ENVI Programmer’sGuide)下载版:

https://lost-contact.mit.edu/afs/enea.it/software/rsi/envi/docs/progguid.pdf

或 www.harrisgeospatial.com/portals/0/pdfs/idl/refguide.pdf

         全面的ENVI/IDL在线教程:

https://www.harrisgeospatial.com/docs/ProgrammingGuideIntroduction.html

·        Frequently AskedQuestions

·        Getting Started with Writing ENVI API Scripts

o    Objects

o    Writing Your First Script

o    Where to Find Help

·        Display Control

o    Views and Layers

o    Portals

·        Working with Rasters

o    Access Data Files

o    Open Rasters in ENVI

o    View Raster Properties

o    Define Spatial Subsets

o    Export Rasters to Disk

o    Virtual Rasters

o    Mask Rasters

o    Raster Pixel State

·        Raster Metadata

o    Standard Metadata

o    User-Defined Metadata

·        Map Information

o    Georeferencing Options

o    Georeference Imagery using RPCs

o    Create a Georeferenced Layer Stack

o    Convert Rasters from Once Coordinate System toAnother

o    Converting Between Different Coordinate Types

·        Data Processing using ENVITasks

o    Discover What Tasks are Available

o    Define Input Properties

o    Validate Tasks

o    Run Tasks

o    Create Output

·        ENVI Classification

o    Prepare Data for Classification

o    Define and Train the Classifier

o    Evaluate the Classifier

o    Run the Classifier

o    Code Example: Support Vector Machine Classificationusing API Objects

o    Code Example: Softmax Regression Classification usingAPI Objects

o    Classification Framework Glossary

·        Custom Tasks

o    Custom Task Base Classes

o    Style Sheets for User Interface Elements

·        Processing Large Rasters Using Tile Iterators

o    Spatial and Spectral Modes

·        Advanced Concepts

o    Error Handling

o    Event Handling

o    Messaging

o    Custom File Readers

o    Toolbox Extensions

·        List of Routines by Function

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例) 的相关文章

  • IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例)

    二 ENVI IDL批处理入门 ENVI IDL集成了ENVI软件的高级功能 xff0c 比如打开文件直接使用envi open file File r fid 61 fid即可 xff0c 不用考虑什么格式等 xff0c 再比如做文件投影
  • 利用ENVI对LANDSAT系列数据进行预处理步骤

    数据来源 地理空间数据云 首先 利用envi打开 File gt Open 下载好的Landsat数据中的MTL txt文件 进行辐射定标 在工具栏Toolbox中搜索 Radiometric Correction gt Radiometr
  • envi5.3处理高分二号影像数据详细过程记录

    目录 一 多光谱影像处理 1 辐射定标 2 大气校正 1 需要准备一些数据 2 大气校正过程 3 正射校正 二 全色影像处理 1 辐射定标 2 正射校正 三 图像融合 1 几何配准 2 图像融合 高分二号处理流程 envi5 3的安装教程
  • ENVI: 如何创建GLT文件并基于GLT对图像进行几何校正?

    这是一条目录 目录 这是一条目录 01 什么是GLT文件 02 案例 1 打开ENVI软件 1 1 软件界面显示效果如下 2 加载需要基于GLT进行几何校正的风云三号卫星影像数据 3 寻找 建立GLT文件 的工具所在位置 4 建立GLT文件
  • ENVI_IDL: 基础语法详解

    01 题目 02 代码说明 题目本身很简单 但是我自己加了一些东西进去增加难度 主要包括print函数的封装 格式化字符串 但是不影响代码的阅读 注 对于没有语言基础的人而言相对阅读困难 但是由于IDL是解释型语言 类似于Python 所以
  • envi5.6处理gf3(SAR)详细过程记录

    未完结 待更新 可以参考的处理教程 SAR影像 雷达影像 的预处理 ENVI SARscape多极化单通道数据预处理流程 SARSCAPE中单雷达影像基础处理全过程 本文所使用的文件名 GF3 KAS UFS 017384 E108 9 N
  • ENVI:如何进行图像融合?

    目录 有话要说 什么是图像融合 图像融合的方法以及特点 图像融合有什么好处 ENVI实操 1 1 加载需要融合的图像文件 1 2 搜寻工具并点击打开 Gram schmidt方法 1 3 输入低分辨率的多光谱图像文件 1 4 输入高分辨率的
  • ENVI监督分类及精度评价

    最近协助同学做了完整的监督分类数据 特此记录下来 对于ENVI监督分类 是每一个遥感从业者掌握的最基础的一个方法 但是完整的监督分类流程和精度评价 估计往往认识不够 所以以下的分享还是有点意义 监督分类 又称训练分类法 用被确认类别的样本像
  • Thrift快速入门

    文章目录 Thrift的安装 windows下安装 Linux下安装 Thrift的使用 编写IDL文件 命名空间 namespace 基本数据类型 类型定义 typedef 结构体类型 struct 枚举类型 enum 异常类型 exce
  • cmake:读取并编译动态生成的 cpp 文件列表

    我有一个自定义工具 可以处理给定的 IDL 文件列表并生成许多 cpp 和 h 文件作为输出 我想将这些文件添加到要在我的 CMakeLists 中编译的内容列表中 并对这些文件对 IDL 的依赖关系进行建模 为了简单起见 我将声明对任何
  • COM - #include 生成的标头与 #import 生成的 tlb

    我有许多生成 COM DLL 的项目 这些项目输出以下内容 projectname i h projectname i c projectname p c projectname i tlb 然后 当另一个项目使用这个 DLL 时 它的使用
  • JavaScript / HTML5 的机器可读 (WebIDL) 参考?

    我正在寻找 JavaScript 类 成员 方法 参数 的机器可读参考 特别是与 HTML5 标准 画布 存储等 相关的参考 到目前为止我找到的只是 W3C 网站上的规范 其中包括规范的一部分 例如 http dev w3 org html
  • 当未提供 COM+ dll 时,从 COM+ dll 获取 IDL(用于 TLB)

    我有一个 dll 其中包含一些带有特定 自定义接口进行查询的 directshow 过滤器 COM 大多数第 3 方 directshow 组件包含嵌入式 tlb 文件 可用于跨环境通信 C typelib 导入 我不想尝试手动创建 c 所
  • 如何在COM接口定义中指定用户定义类型参数?

    我的 COM 接口方法之一需要用户定义类型的参数 如下所示 uuid 58ADDA77 274B 4B2D B8A6 CAB5A3907AE7 object Interface interface IRadio IUnknown HRESU
  • 无需重新编译即可更改 CORBA 接口

    我想向现有服务器的 CORBA 接口添加一个方法 这需要重新编译所有客户端吗 我用的是TAO 不需要重新编译客户端 也不应该这样做 无论您使用什么 ORB 正如 Adam 所指出的 查找是通过操作名称完成的 直接文本比较 我已经使用我们基于
  • 缺少 Idlj 编译器 (Linux/JDK 11)

    找不到idlj编译工具 idl文件 已检查 usr bin and usr lib jvm java 11 jdk 它不是和JDK捆绑在一起的吗 如何添加idlj编译器 附 我更喜欢Python 不太使用Java 如果这是一个愚蠢的问题 我
  • 如何在命令行中从 .NET 程序集获取 IDL(或如何将 TLB 转换为 IDL)?

    我们有一个 NET 程序集 实际上是 Aspose Words 我们希望客户端能够从 COM 客户端轻松使用它 因此 我们随程序集提供了 TLB 以便客户端可以从 C 或 Delphi 等语言中使用它 而不必自己提取 TLB 我们还随程序集
  • 什么是IDL?

    IDL 是什么意思 我用谷歌搜索了一下 发现它代表接口定义语言 用于组件的接口定义 但是 在实践中 IDL 的目的是什么 微软使用它吗 接口定义语言 IDL 用于在远程过程调用 RPC 中建立客户端和服务器之间的通信 它有很多变体 例如 S
  • 创建仅包含枚举的 COM 库时出现问题

    我正在做一个 COM 互操作项目 用 C 和 NET Interop 替代一些 VB 和 C ATL COM 项目 当我在 NET 中定义枚举并将它们设为 ComVisible 时 它 们会公开为 Typelib EnumType Enum
  • 当 MIDL 无法创建 tlb 时该怎么办?

    我正在尝试创建一个 C inproc 服务器sbtsv idl 它包含在 Windows 8 SDK 中 几乎我的每一个指示 https stackoverflow com questions 1307675 convert interfa

随机推荐