envi怎么用shp裁剪影像
时间: 2025-06-07 12:06:51 浏览: 65
### 如何使用 ENVI 工具通过 Shapefile (shp) 裁剪影像
#### 准备工作
在开始操作之前,需确认已安装并启动 ENVI 软件(建议版本不低于5.3),同时准备好待裁剪的遥感影像以及对应的矢量边界文件(Shapefile)。确保 Shapefile 的坐标系与遥感影像一致或兼容。
---
#### 操作流程说明
1. **加载数据**
启动 ENVI 并加载需要处理的遥感影像。可通过菜单栏中的 `File` -> `Open Image File...` 来完成此步骤[^1]。
2. **导入 Shapefile**
在软件顶部的搜索框中输入关键词 “Subset”,找到功能模块 `Subset Data From ROIs` 或类似的子集提取工具,并点击打开。随后按照提示选择已经准备好的 Shapefile 文件作为裁剪区域[^2]。
3. **配置参数**
进入到具体的设置页面之后:
- 对于是否屏蔽掉感兴趣区域外的数据 (`Mask Pixels Outside of ROI`) ,应设为 Yes;
- 将背景填充值设定成 0 (或者其他适合数值)以便区分有效像素和无效部分;
- 明确指定最终输出成果保存的位置及其命名方式等细节信息[^2]。
4. **执行裁剪**
完成以上各项准备工作以后,只需简单按下 OK 键即可让程序自动运行整个过程直至结束。等待片刻后就能获得按给定 shape 边界精确切割出来的新的栅格图片了[^1]。
5. **验证结果**
结果生成完毕后可以立即预览效果看是否有误或者不符合预期之处;如果一切正常则可进一步用于后续分析研究当中去[^1]。
```python
# 示例代码片段展示如何调用ENVI API 实现自动化脚本化裁剪(仅作参考)
import envi
def clip_image_with_shp(input_raster_path, output_raster_path, shp_file):
"""
使用ENVI库基于shapefile裁剪影像
参数:
input_raster_path (str): 输入原始影像路径
output_raster_path (str): 输出裁剪后的影像路径
shp_file (str): shapefile路径
返回:
None
"""
session = envi.Session()
# 加载影像
raster = session.openRaster(input_raster_path)
# 设置ROI mask条件
roi_mask_params = {
'roi': shp_file,
'mask_outside_roi': True,
'background_value': 0
}
# 创建子集对象
subset_task = session.createTask('SubsetFromROITask')
subset_task.setInputProperties(raster.properties())
subset_task.setRoiParameters(**roi_mask_params)
# 执行任务并保存结果
result = subset_task.execute()
result.save(output_raster_path)
if __name__ == "__main__":
input_img = r"C:\path\to\your\raster.tif"
output_img = r"C:\path\to\save\clipped_raster.tif"
shapefile = r"C:\path\to\boundary.shp"
clip_image_with_shp(input_img, output_img, shapefile)
```
---
#### 注意事项
- 如果发现裁剪的结果不理想,请仔细核查所采用的投影系统是否匹配。
- 当遇到复杂多边形或多部件几何图形组成的 SHP 文件时,可能还需要额外考虑合并简化等问题来优化效率和质量[^1]。
---
阅读全文
相关推荐


















