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