如何清除体内毒素:科学网-刘杰的博客-[转载]IDL二次开发利用envi入手练习

来源:百度文库 编辑:中财网 时间:2024/05/06 08:55:06
[转载]IDL二次开发利用envi入手练习

ENVI/IDL二次开发

之遥感影像处理入门练习(转帖水色遥感)

1,读取一幅多波段影像的中心点光谱曲线,并plot出来,用中文宋体标示出其经纬度;

训练内容:Envi获取影像投影参数,像素点地理位置的方法;熟悉Plot的参数设置;

推荐调用函数:

envi_pickfile,

envi_open_file

Envi_file_query

Envi_get_map_info

ENVI_PROJ_CREATE

ENVI_CONVERT_FILE_COORDINATES

ENVI_CONVERT_PROJECTION_COORDINATES

PLot

ENVI_FILE_MNG

 源码:

pro read01
  envi_open_file,envi_pickfile(),r_fid=fid
  envi_file_query,fid,nb=nb,nl=nl,ns=ns,wl=wl
    xf=(nl/2)
    yf=(ns/2)
  envi_convert_file_coordinates,fid,xf,yf,xmap,ymap,/to_map
  envi_convert_projection_coordinates,xmap,ymap,envi_get_projection(fid=fid),oxmap,oymap,envi_proj_create(/geographic)
    r = findgen(nb)
  for i=0,nb-1 do begin
    r[i]=envi_get_data(/complex,dims=[-1,nl/2,nl/2,ns/2,ns/2],fid=fid,pos=i)
    print,r[i]
  endfor
  plot,wl,r
  print,nb,oxmap,oymap
end

    

2,读取一景TM影像的3、4波段,计算NDVI,用灰度图显示出来,并保存为Envi格式文件;

推荐调用函数:

envi_pickfile,

envi_open_file

Envi_file_query

Envi_get_map_info

Envi_get_data

Float

window

Tv

tvscl

Envi_write_envi_file

ENVI_FILE_MNG

(以上为Envi读写文件常用函数,后文不再详述)

 

源码:

pro ndvidemo
  envi_open_file,envi_pick_file,r_fid=fid
  envi_file_query,fid,nb=nb,nl=nl,ns=ns
    red=envi_get_data(/complex,dims=[-1,0,ns-1,0,nl-1],fid=fid,pos=2)
    nir=envi_get_data(/complex,dims=[-1,0,ns-1,0,nl-1],fid=fid,pos=3)
    ndvi=(float(nir)-float(red))/(float(nir)+float(red)+0.001)
  envi_write_envi_file,ndvi,out_name='ndvi.img'
  envi_file_mng,id=fid,/remove
end

 

3,读取一景CBERS影像的4个波段,根据LVB变换原理,计算其L、V、B分量并保存;

推荐调用函数:

envi_pickfile,

envi_open_file

Envi_file_query

Envi_get_map_info

Envi_get_data

Envi_get_slice

Float

Poly_fit

Envi_write_envi_file

ENVI_FILE_MNG

4,读取2个时相的ETM+影像,去除洪湖湖面范围内的条带(多个波段);

推荐调用函数:

envi_pickfile,

File_search

File_basename

File_dirname

envi_open_file

Envi_file_query

Envi_get_map_info

Envi_get_data

Float

window

Tv

tvscl

Envi_write_envi_file

ENVI_FILE_MNG

5,读取一幅shapefile矢量文件,据此建立一个ROI(Region of Interest),并把边界点输出为csv格式文件,可以选省界shp(细节我也不清);

推荐调用函数:

IDLffShape

envi_pickfile,

File_search

File_basename

File_dirname

envi_open_file

ENVI_DEFINE_ROI

ENVI_CREATE_ROI

ENVI_SAVE_ROIS

Openw

Printf,(format参数很关键)

Envi_file_query

Envi_get_map_info

Float

ENVI_FILE_MNG

6,Envi调用MATLAB神经网络工具箱,进行水质反演(暂时不做);

附加学习MATLAB,nntool工具箱

 

7,Envi调用6S 大气纠正程序,对ETM+蓝光波段进行大气纠正;

推荐调用函数:

Spawn

Openr

Readf

While

Strpos

Strmid

其他Envi文件读写常用函数,见前面的练习。

 

附加学习

Dos命令行语法

 

 

8,Envi调用MRT,批量拼接、重投影、裁切MODIS产品(以MOD11为例);

推荐调用函数:

Envi文件读写常用函数,见前面的练习。

String

附加学习:

Dos的for循环

 

9,动态添加Envi菜单,创建简单的GUI界面(可稍后再做)

推荐调用函数:

 

ENVI_DEFINE_MENU_BUTTON

附加学习:

菜单事件处理pro编写

Widget起头函数的熟悉(见附录II);

 

 

附录I:

 

数字图像处理一般包含三种类型的运算:点运算,邻域运算(窗口运算),波段运算。

1)点运算:以像素为运算单位,一般常见于多波段影像。如提取像素光谱曲线z-profile;

2)邻域运算(窗口运算):以各种n×n窗口滤波和平滑为代表,像素周围一定距离内的像素(可加其他附加条件),一起参与运算,例如锐化,sobel锐化,坡度提取等等;

3)波段运算,整个波段整体运算,如PCA主成分分析,NDVI计算等