IDL中将栅格数据转为SHP和EVF矢量文件

/ 0评 / 2
pro raster_to_shp, filepath, outpath
;COMPILE_OPT idl2
;ENVI调用初始化
; ENVI,/restore_base_save_files
; ENVI_BATCH_INIT
;打开图像文件 
ENVI_OPEN_FILE, filepath, r_fid=fid
IF (fid EQ -1) THEN BEGIN
ENVI_BATCH_EXIT
RETURN
ENDIF
;
ENVI_FILE_QUERY, fid, dims=dims,nb = nb

pos = 0
img = envi_get_data(fid=fid,dims=dims,pos=pos)
min_value = min(temporary(img))
;将灰度值为value的转换为vector
values = [min_value]
;
l_name = 'ShapeBorder'
evffile = FILE_DIRNAME(filepath)+'\img2vec.evf'
;
; 栅格转换为矢量
;
ENVI_DOIT, 'rtv_doit', $
fid=fid, pos=pos, dims=dims, $
IN_MEMORY = LINDGEN(N_ELEMENTS(values)), $
values=values, l_name=l_name, $
out_names=evffile
;evf转换为shp文件
shapefile = outpath;FILE_DIRNAME(file)+'\img2vec.shp'
EVF_ID = ENVI_EVF_OPEN(evffile)
envi_file_mng, id=fid, /remove 
ENVI_EVF_TO_SHAPEFILE, EVF_ID, shapefile
ENVI_EVF_CLOSE, EVF_ID
file_delete,evffile

; 退出ENVI
;envi_batch_exit
end

pro raster_to_evf, filepath, outpath
;COMPILE_OPT idl2
;ENVI调用初始化
; ENVI,/restore_base_save_files
; ENVI_BATCH_INIT
;打开图像文件 
ENVI_OPEN_FILE, filepath, r_fid=fid
IF (fid EQ -1) THEN BEGIN
ENVI_BATCH_EXIT
RETURN
ENDIF
;
ENVI_FILE_QUERY, fid, dims=dims,nb = nb
pos = 0
img = envi_get_data(fid=fid,dims=dims,pos=pos)
min_value = min(temporary(img))
;将灰度值为value的转换为vector
values = [min_value]
;
l_name = 'ShapeBorder'
evffile = outpath
;
; 栅格转换为矢量
;
ENVI_DOIT, 'rtv_doit', $
fid=fid, pos=pos, dims=dims, $
IN_MEMORY = LINDGEN(N_ELEMENTS(values)), $
values=values, l_name=l_name, $
out_names=evffile

envi_file_mng, id=fid, /remove

; 退出ENVI
; envi_batch_exit
end

发表评论

邮箱地址不会被公开。 必填项已用*标注