高德地图没有足迹功能:idl实现影像的规则裁剪(调用envi函数)

来源:百度文库 编辑:偶看新闻 时间:2024/05/02 13:25:35

function resize_shp,shpfile,infile,outfile
compile_opt idl2

envi,/restore_base_save_files
envi_batch_init,log_file = 'log.txt'

envi_open_file,infile,r_fid = fid
if fid eq -1 then begin
    envi_batch_exit
    return,0
endif

envi_file_query,fid,nb = nb,bnames = bnames
pos = lindgen(nb)
   
oshp = obj_new('IDLffShape',shpfile)
    oshp ->getproperty,N_ENTITIES=num_ent
;    ,$
;          ATTRIBUTE_INFO = attr_info,N_ATTRIBUTES = n_attr,$
;          ENTITY_TYPE = ent_type
    ;读坐标,并存在相应的数组中
    minx = dblarr(num_ent)
    maxx = dblarr(num_ent)
    miny = dblarr(num_ent)
    maxy = dblarr(num_ent)
   
    for i = 0,num_ent - 1 do begin
      ent = oshp->getentity(i)
      minx[i] = ent.bounds[0]
      miny[i] = ent.bounds[1]
      maxx[i] = ent.bounds[4]
      maxy[i] = ent.bounds[5]
     
    endfor
   
     OBJ_DESTROY,oshp ;销毁一个shape对象
    
    ;求整个shp的边界
    minvalue_x = min(minx);最大x值
    maxvalue_x = max(maxx);最大x值
    minvalue_y = min(miny);最小y值
    maxvalue_y = max(maxy);最小y值
   
   ;用这个范围对图像进行裁剪
    xmap = [minvalue_x,maxvalue_x]
    ymap = [minvalue_y,maxvalue_y]
   
    envi_convert_file_coordinates,fid,xf,yf,xmap,ymap
   
    dims = [-1,long(xf[0]),long(xf[1]),long(yf[1]),long(yf[0])]
;    out_name = 'E:\text\evf_roi\a.raw'
    envi_doit,'RESIZE_DOIT',fid = fid,dims = dims,$
        out_name = outfile,$
        pos = pos,out_bname = bnames,$
        r_fid = resized_fid,rfact = [1.0,1.0]

end

要是可以实现不规则裁剪就好了,再琢磨琢磨!!!