用M个shapefile,切割N景遥感影像(两次循环)

pro Part_2

  compile_opt idl2, hidden

  for k=1, 91, 1 DO BEGIN

    kk=strtrim(string(k),1)

    file_mkdir,"D:\Lansat_Data_分区切割\"+kk+"\"

  endfor

  e=envi(/headless)

  filearr_1 = file_search("D:\Lansat_Data_波段合成",'*.dat',count=num)

  for i=0,num-1,1 do begin

    ;if (i le 41) then continue

    ;if (i ge 87) then continue

    envi_file=filearr_1[i]

    raster = e.OpenRaster(envi_file)

    for j=1,91,1 do begin

      jj=strtrim(string(j),1)

      shp_name="C:\Users\l_j_w\OneDrive\毕业设计\ROI_shp\"+jj+"\"+jj+".shp"

      file_shp =  e.OpenVector(shp_name)

      CATCH, errorStatus

      IF (errorStatus NE 0) THEN BEGIN

        CATCH, /CANCEL

        PRINT, !ERROR_STATE.MSG,j

        CONTINUE

      ENDIF

      maskedRaster = ENVIVectorMaskRaster(raster, file_shp)

      outFile_temp = e.GetTemporaryFilename()

      maskedRaster.Export, outFile_temp, 'ENVI', DATA_IGNORE_VALUE=0

      x = (file_shp.data_range[3]-file_shp.data_range[1])/30;行数

      y = (file_shp.data_range[2]-file_shp.data_range[0])/30 ;列数

      Grid = ENVIGridDefinition(file_shp.Coord_Sys, $

        PIXEL_SIZE=[30.0D,30.0D], $  ;像元大小30M

        TIE_POINT_PIXEL=[0.0D,0.0D], $

        TIE_POINT_MAP=[file_shp.data_range[0],file_shp.data_range[3]], $

        NROWS=x, $

        NCOLUMNS=y)

      outFile = "D:\Lansat_Data_分区切割\"+jj+"\"+strmid(envi_file,24,49)+".dat"

      regrid = ENVISpatialGridRaster(Raster,GRID_DEFINITION=Grid)

      regrid.export,outFile,'envi'

      file_delete, outfile_temp

    endfor

    print,i

    print,"------------------------------------------------------------------------------------------------------------"

  endfor

end

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值