ENVIIDL 批量裁剪同一地区的多幅影像-第四篇

    技术2022-07-11  100

    之前采用的函数是envi_layer_stacking_doit,最近发现了一个十分高效的方法 RegridRaster task

    代码如下:

    function y_layer_stack,Raster_based,Raster_toresize,respath   ;将raster_toresize 影像进行重采样,行列号以及投影与 raster_based保持一致   ; Retrieve the grid parameters of the based raster   PixelSize = Raster_based.SPATIALREF.PIXEL_SIZE   CoordSysString = Raster_based.SPATIALREF.COORD_SYS_STR   NumRows = Raster_based.NROWS   NumCols = Raster_based.NCOLUMNS   TiePointMap = Raster_based.SPATIALREF.TIE_POINT_MAP   TiePointPixel = Raster_based.SPATIALREF.TIE_POINT_PIXEL   CoordSys = ENVICoordSys(COORD_SYS_STR = CoordSysString)

      ; Create a grid definition for the original based raster   Grid = ENVIGridDefinition(CoordSys, $     PIXEL_SIZE=PixelSize, $     NROWS=NumRows, $     NCOLUMNS=NumCols, $     TIE_POINT_MAP=TiePointMap, $     TIE_POINT_PIXEL=TiePointPixel)

      ; Reproject the TM band to the spatial grid   RegridTask = ENVITask('RegridRaster')   RegridTask.INPUT_RASTER = Raster_toresize   RegridTask.GRID_DEFINITION = Grid   RegridTask.RESAMPLING = 'Nearest Neighbor'; consider landcover not use Bilinear   RegridTask.OUTPUT_RASTER_URI = respath   RegridTask.Execute   print,'RegridRaster Done!'   Raster_toresize.Close   return, RegridTask.OUTPUT_RASTER end

     

    调用方法:

    img1=e.OpenRaster('img1') ;基础影像 img2=e.OpenRaster('img2') t=y_layer_stack(img1,img2,'img2_regrid');

    如果要批量的话,添加for循环即可  

    Processed: 0.011, SQL: 9