借鉴了技术殿堂的一篇博客,但是其源码均为Classic接口,在经过一定学习后,修改成了IDL8.x下新接口的源码,主要难点在于通过shapefile得到重合边界的矩阵范围。
调用示例代码:
subsetDemo, 'H:\Test\img_buffer', 'H:\Test\shp\img_range.shp', 'H:\Test\img'
;'H:\Test\img_buffer'表示需要进行裁剪的影像文件名,'H:\Test\shp\img_range.shp'表示用于裁剪的shapefile矢量文件名,'H:\Test\img'表示输出文件名。
源码:(需要注意的是,未对影像进行掩膜处理)
pro subsetDemo, raster_fn, shp_fn, out_fn
compile_opt idl2
if ENVI(/CURRENT) ne !null $
then e = ENVI(/CURRENT) $
else e = ENVI(/HEADLESS)
raster = e.OpenRaster(raster_fn)
shp = e.OpenVector(shp_fn)
shpObj = IDLffShape(shp_fn)
entity = shpObj.GetEntity(0, /ATTRIBUTES)
verts = *