Arcgis批量获取遥感影像范围方法记录
1.栅格遥感影像经过配准校正后产生黑边,为方便拼接,现需要对影像的有效范围进行提取。
2.利用3D Analyst栅格范围工具(注意勾选扩展模块)
转换失败
3.查询帮助文件:此工具用于在栅格表面运行,且只能在单波段栅格或多波段栅格的特定波段上运行。输出要素可使用数据值捕获连续像元的边界,其Z值沿表面周长进行插值。可通过将栅格内最外侧像元的中心连接起来来定义周长。如果栅格具有以 NoData 像元分隔的不连续数据像元,则输出几何将被放置到一个要素记录中,并且可能会由多部分要素组成。
故选择其中一个波段进行范围提取
4.提取成功,但发现仍不是有效范围,检查栅格属性发现Nodata值为(256,256,256)
5.编辑NoData改为(0,0,0)
6.重新提取栅格范围
7.使用python对上述流程编码,批量提取栅格范围:
8.执行后报错:
9.发现该方法不能直接访问栅格波段,尝试直接输入栅格路径后执行成功:
10.结果发现在arcgis中执行失败的栅格范围工具采用arcpy调用时能成功执行,故将部分代码简化,代码如下:
# -*- coding: utf-8 -*-
import os
import arcpy
arcpy.env.overwriteOutput = True #允许覆盖输出
arcpy.env.workspace = u"D:\影像范围.gdb" #输出位置
image_path = u"D:/成果目录" #影像存放路径
for parent, dirnames, filenames in os.walk(image_path):
for image in filenames:
image_name = image.split('.')[0] # 获取文件名
image_type = image.split('.')[-1] # 获取文件类型
if image_type == 'tif' or image_type == 'img':
parent1= parent.replace('/','\\') #替换
WZLJ = os.path.join(parent1,image) #添加路径
print(WZLJ)
arcpy.management.SetRasterProperties(WZLJ,None,None,None,[[1, 0],[2, 0],[3, 0]]) #设置nodata
arcpy.RasterDomain_3d(WZLJ,image_name, "POLYGON")
11.使用上述代码能批量提取存放路径下所有影像的范围,并输出相同名称shp,对于影像拼接时,选取影像提供了便利。
最近较闲,总结近年工作经验,希望大家多多关注!