加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ENVI/IDL黑科技;利用已有geotiff将envi标准文件存储为tiff格式

(2016-10-20 16:17:38)
标签:

envi/idl

分类: ENVI/IDL
在使用ENVI二次开发时,不知道什么原因,使用ENVI_SETUP_HEAD和WRITE LUN存储数据时没有投影信息,
在ENVI_SETUP_HEAD中设置map_info=map_info也没有成功,当然这个地方有待讨论,因为在当我使用了
ENVI_MASK_APPLY_DOIT之后图像的mapinfo信息就出现了问题,虽然文件用envi打开后能够看到mapinfo的信息,如图
但是在使用

ENVI_GET_MAP_INFO

时竟然无法运行,同样的我有试了

ENVI_GET_PROJECTION

这个竟然可以运行,对比了一下两个函数获得的数据,发现结构是一样的,于是想着能从projection得到Mapinfo,于是使用了函数

ENVI_MAP_INFO_CREATE

Result = ENVI_MAP_INFO_CREATE(PROJ=structure)
然并卵,还是不可用,故而想到用tif格式的黑科技
利用一个具有正确Mapinfo信息的tiff影像,获取其geotiff参数值,然后赋给没有参数的数据,然后就可以了
重点是这两个图像区域要相同

PRO TEST_GET_PROJ_INFO
  compile_opt idl2
  ENVI,/restore_base_save_files
  envi_batch_init
  
  filename = 'F:\Landsat输出数据\输出tiff格式\LC81240472013299LGN00_B8(subset_by_roi).tif'
  InputFolder=DIALOG_PICKFILE(TITLE='Select Folder For Input',/DIRECTORY)
  ;获取geoinfo信息
  binary_img = READ_TIFF(filename,geotiff = geoinfo)
  ;遍历文件夹下的图像,这里是有着tif后缀的envi文件,并不是真的tif文件
  images=file_search(InputFolder,'*.tif',count = num);此处没有/test_directory,这是寻找文件夹的
  
  ;设置输出路径,输出到子文件夹中
  OutFolder=InputFolder+'TIFF_IMG';+ PATH_SEP();输出路径
  file_mkdir,OutFolder
  CD, OutFolder;切换到输出路径
  
  ;开始将每个图像进行转换
  FOR i=0,num-1 DO BEGIN
    ENVI_OPEN_FILE,images[i],r_fid = fid
    ENVI_FILE_QUERY,fid, ns = ns, nb = nb, nl = nl, dims = dims,BNAMES = BNAMES
    ;binary_img = READ_TIFF(filename,geotiff = geoinfo)
    temp_img = ENVI_GET_DATA(fid=fid, dims=dims, pos=0)
        
    out_name = OutFolder+'\'+FILE_BASENAME(images[i],'.tif')+'_geo.tif' 
    WRITE_TIFF,out_name,temp_img,/float, geotiff=geoinfo
    
  ENDFOR
  
  envi_batch_exit
END
水平有限,只是讨巧的做法

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有