在IDL中进行栅格运算后,应用raster.Export, outname, ‘tiff’.直接将影像输出,会丢失投影等信息。此时可以用envi_write_envi_file 指定file_type=tiff和map_info,来写出带有投影信息的tiff文件,但这种方法生成tif文件的同时会单独生成一个hdr头文件。
如果想用raster.save方法输出文件,并且将头文件信息写入tiff,可用如下方法,将dat和相应的hdr文件批量转换成tiff。
以下代码用于解决在IDL中运算生成的dat文件批量转换成带有地理信息的tiff文件格式。
(前提是,dat文件的hdr头文件中必须带有地理信息)
完整代码下载地址
部分代码如下:
raster=ENVIRaster(data,uri=uri)
raster.save
;写出地理信息,需要同一景带有地理信息的影像来获取信息
map_info=envi_get_map_info(fid=fid)
ENVI_SETUP_HEAD, fname=uri, $
ns=ns, nl=nl, nb=1, $
data_type=data_type, $
MAP_INFO = MAP_INFO , $
INTERLEAVE =0, $
offset=0, /write
;dat转tif
raster=e.OpenRaster(filename)
raster.Export, outname, 'tiff'
raster.close
可能有更好的方法或者接口直接在tiff中写入投影信息,比如:ENVIRasterMetadata,但官方没有给出能够写地理信息的样例,以上办法可取后,我也没有再去尝试。