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

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…

最后放大招,APPstore里安装批处理工具用Batch Processing/Subset Rasters By Vector Batch,还可以实现批处理。
在这里插入图片描述
Input Vector直接选择shp文件。
在这里插入图片描述

  • 13
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好,针对您的问题,可以使用Python中的GDAL库进行栅格数据的处理。以下是对于您提出的两个问题的解答: 1. 对于栅格TIF数据进行分割,您可以使用GDAL库中的gdalwarp函数进行裁剪。具体操作步骤如下: 第一步:导入GDAL库 ```python from osgeo import gdal ``` 第二步:打开TIF栅格数据 ```python dataset = gdal.Open('your_tif_file.tif') ``` 第三步:设置裁剪范围和输出栅格数据信息 ```python # 设置裁剪范围 x_min, y_min, x_max, y_max = your_clip_extent # 设置输出栅格数据信息 output_filename = 'output.tif' output_format = 'GTiff' output_bounds = [x_min, y_min, x_max, y_max] ``` 第四步:调用gdalwarp函数进行裁剪 ```python gdal.Warp(output_filename, dataset, outputBounds=output_bounds, format=output_format) ``` 2. 对于批量掩膜(裁剪)栅格数据,您可以使用Python中的os库进行文件遍历,遍历所有需要裁剪的栅格数据,然后调用上述裁剪代码进行批量裁剪。具体操作步骤如下: 第一步:导入os和glob库 ```python import os import glob ``` 第二步:设置需要遍历的目录和裁剪范围等参数 ```python # 设置需要遍历的目录 data_dir = 'your_data_directory' # 设置裁剪范围 x_min, y_min, x_max, y_max = your_clip_extent # 设置输出栅格数据信息 output_format = 'GTiff' output_bounds = [x_min, y_min, x_max, y_max] ``` 第三步:遍历目录下所有栅格数据,并调用裁剪代码进行批量裁剪 ```python for tif_file in glob.glob(os.path.join(data_dir, '*.tif')): # 打开栅格数据 dataset = gdal.Open(tif_file) # 设置输出文件名 output_filename = tif_file.replace('.tif', '_clip.tif') # 调用裁剪函数进行裁剪 gdal.Warp(output_filename, dataset, outputBounds=output_bounds, format=output_format) ``` 以上就是对于您提出的两个问题的解答。希望能够帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值