当前位置: 代码迷 >> 综合 >> ENVI shp转roi并对栅格进行掩膜提取
  详细解决方案

ENVI shp转roi并对栅格进行掩膜提取

热度:25   发布时间:2023-12-18 10:05:57.0
1.打开需要被裁切的栅格数据

classic 下打开栅格数据,File / Open Image File,选择栅格数据,Load Band。

2.打开shp文件

classic / vector / Open Vector,选择文件类型shapefile(*.shp) ,选择矢量文件.shp,打开shp文件。

3.保存EVF文件

弹出Import Vector Files Parameters窗口中,在Enter Output Filename[.evf]下设置evf文件的输出路径和文件名QQ.evf。点击OK。

在Available Vectors List中选择已经打开的矢量文件,选择Load Selected按钮。
在这里插入图片描述
此处选择Display #1,点击OK。
在这里插入图片描述
弹出#1 Vector Parameters :Cursor Query窗口(黑底,有矢量线)。
选择矢量文件,点击Apply。此时,在#1 Scroll窗口中能够看到矢量文件(白色)叠加在栅格图之上。

4.保存roi文件

在Available Vectors List窗口,点击file选择Export Layers to Roi…。
弹出Select Data File to Associate with new ROIs窗口,选择需要被提取的栅格数据,点击OK。
在这里插入图片描述
弹出Export EVF Layers to ROI窗口,选择Convert all records of an EVF layer to one ROI…。点击OK。
在这里插入图片描述
然后在#1 scroll窗口中就出现白色的矢量区域。
在scroll窗口中右击鼠标,点击ROI Tool…,打开#1 ROI Tool窗口。
在这里插入图片描述
在这里插入图片描述
选择“EVF:layer:QQ.shp”,点击左上角File / Save ROIs…
在这里插入图片描述
在这里插入图片描述
即可将shp文件保存为roi文件。MCD12Q1.A2001_Type1_class.roi

5.新建掩膜

在ENVI 5.3中打开需要被掩膜的栅格数据。
打开Toolbox / Raster Management / Masking / Build mask
在Build Mask Input File中选择需要掩膜的栅格数据。
在弹出的Mask Definition窗口下点击Options / Import ROIs…
在这里插入图片描述
选择之前生成的roi,点击OK。
在这里插入图片描述
设置输出路径和文件名MCD12Q1.A2001_Type1_class_roimask.dat
在这里插入图片描述

6.应用掩膜

在ENVI 5.3中打开Toolbox / Raster Management / Masking / Apply mask
在Apply Mask Input File中选择需要掩膜的文件。
在这里插入图片描述
点击Spatial Subset,弹出Select Spatial Subset窗口,点击Subset Using下的File,选择目标栅格文件,如temp_2001,以此定义范围。点击OK。在这里插入图片描述
在Select Spatial Subset窗口点击OK。
在这里插入图片描述
点击Select Mask Band,选择上一步生成的MCD12Q1.A2001_Type1_class_roimask.dat文件的Mask Band。点击OK。
在这里插入图片描述
Apply Mask Input File窗口点击OK。
在这里插入图片描述
设置输出路径和文件名,点击OK,生成MCD12Q1.A2001_Type1_class_QQ.dat,掩膜提取完成。在这里插入图片描述
什么鬼,输出文件行列号都增大了1,与temp_2001不一致.
所以洗牌重来,从6.应用掩膜开始更改。
打开temp_2001文件,Layer Manager中右键文件名,点击View Metadata,打开View Metadata:temp_2001窗口,点击左侧Extents,查看范围,记录。然后在Spatial Subset下点击Subset Using下的Map,输入和temp_2001的Extents一样的Upper Left和Lower Right Coordinate,以此定义范围。点击OK。我醉了,输出结果行列号各增加2。

洗牌重来,从6.应用掩膜开始更改。在Spatial Subset下点击Subset Using下的ROI/EVF,输入之前的ROI,输出结果行列号减小了10-50。

奔溃了,为什么不能乖乖和temp_2001一样呢?

我放弃了,我选择ArcGIS…