[ArcPy] 去除遥感影像黑边
来源:互联网 发布:淘宝采集软件收费吗 编辑:程序博客网 时间:2024/05/01 07:31
- 问题
- 分析
- ArcPy暴力剔除边缘的像元值
- 代码
- 将Py脚本制定成自定义工具
- 结果
- 找出边界后掩膜
问题
去除遥感影像黑边
数据:
分析
- 将边界进行矢量化,然后用掩膜提取
缺点:遥感影像边缘是锯齿形,矢量化边界精度不高 - 边界像元值为0,将0值重分类为NoData
缺点:将内部像元值为0的像素也归为了NoData,会出现空洞
发现ArcGIS中有类似功能的工具:ArcToolbox–>Data Management Tools–>Raster–>Raster Dataset–>CopyRaster - 法一法二联合做就可以解决他们两个的缺点
法一的结果为1.tif,法二的结果为2.tif
栅格计算器:Con(IsNull(“2”) & ( ~IsNull(“1”)), “1”, “2” )
解释:如果2为NoData的地方1有值,那么就赋予1的值,其他地方赋予2 - 使用ArcPy仅将边缘像元为0的地方赋予NoData,里面的地方不处理
缺点:处理速度慢,遥感图像n行m列,时间复杂度O(n*m) - 使用边界跟踪算法得出边界,存储成shp格式,再进行掩膜
ArcPy暴力剔除边缘的像元值
代码
# -*- coding:utf-8 -*-# Author: PasserQi# Time: 2017/12/18# Func: 去边处理# Desc: 从左边向右,从右边向左开始搜索,将边界像素替换成NoData,只会替换到边界的像素,不会替换到内部像元# Attention: 若要打包成ArcGIS自定义工具,此文件下不能有中文import arcpy,sysfrom arcpy.sa import *arcpy.CheckOutExtension("sptial") #权限检查# 得到初始参数# rasterPath = sys.argv[1]# outPath = sys.argv[2]# BORDER_VALUE = int(sys.argv[3])#rasterPath = r'E:\user\Desktop\DeleteDarkSide\Data\Kejicheng0.TIF' #输入栅格outPath = r'E:\user\Desktop\DeleteDarkSide\Data\q' #输出栅格BORDER_VALUE = 0 #边界值if __name__ == '__main__': r = Raster(rasterPath) #打开栅格 noDataValue = r.noDataValue #获取栅格中的NoData值 array = arcpy.RasterToNumPyArray(r) #转成Numpy方便对每个像元进行处理 bandNum,rowNum,colNum = array.shape #波段、行数、列数 # 左边 for i in range(0,rowNum): for j in range(0,colNum): if array[0][i][j]==BORDER_VALUE: #找到边界 for w in range(0,bandNum): array[w][i][j] = noDataValue #赋值 print "替换:%d %d" % (i,j) continue elif array[0][i][j]==noDataValue: #是无值 continue else: #是普通像素 break #退出该行 # 右边 for i in range(0,rowNum): for z in range(0,colNum): j = colNum - 1 - z if array[0][i][j]==BORDER_VALUE: #找到边界 for w in range(0,bandNum): array[w][i][j] = noDataValue # 赋值 print "替换:%d %d" % (i, j) continue elif array[0][i][j]==noDataValue: #是无值 continue else: #是普通像素 break #退出该行 #保存栅格 lowerLeft = arcpy.Point(r.extent.XMin, r.extent.YMin) #左下角点坐标 cellWidth = r.meanCellWidth #栅格宽度 cellHeight = r.meanCellHeight newRaster = arcpy.NumPyArrayToRaster(array,lowerLeft,cellWidth,cellHeight,noDataValue) #转换成栅格 newRaster.save(outPath) #保存
将Py脚本制定成自定义工具
执行: 去黑边 "E:\user\Desktop\[ArcPy] 去除遥感影像黑边\Data\Kejicheng0.TIF" "E:\user\Desktop\[ArcPy] 去除遥感影像黑边\result\tmp.tif" 0开始时间: Thu Dec 21 20:15:58 2017正在运行脚本 去黑边...Completed script 去黑边...成功 在 Thu Dec 21 20:19:02 2017 (经历的时间: 3 分 4 秒)
注:可以看到这个方法时间要很久
结果
找出边界后掩膜
阅读全文
0 0
- [ArcPy] 去除遥感影像黑边
- 遥感影像镶嵌-黑边去除-无效区域去除方法
- 遥感影像去除黑边,提取有效区域矢量文件
- ARCGIS中遥感影像去除黑边方法
- 遥感影像的黑边
- 利用Arcpy向Arcmap中批量加载遥感影像
- 超图 影像 如何去除黑边(两种方法)
- 利用ArcGIS Python批量拼接裁剪遥感影像(arcpy batch processing)
- 利用ArcGIS Python批量拼接裁剪遥感影像(arcpy batch processing)
- 用arcmap为遥感影像去除无效值
- ArcEngine 清除影像黑边
- 遥感影像预处理
- 遥感影像几何校正
- 遥感影像命名规则
- 遥感影像几何校正
- 遥感影像几何校正
- 遥感影像处理流程
- 遥感影像处理
- C++笔记——指向常量的指针/指针常量
- MacPaw CleanMyPC(系统优化工具)官方中文破解版V1.8.11.1175下载 | 含破解程序无需cleanmypc激活码
- 3341: [Ceoi2013]adriatic
- github设置添加SSH
- 在Ardupilot中实现外部测量电机转速
- [ArcPy] 去除遥感影像黑边
- 二叉查找树中搜索区间
- JS之DOM对象
- values资源之color
- 针对SGX的缓存攻击(Cache Attack)调研
- 在ncverilog仿真条件设置中+nospecify ,+notimingcheck 和 +delay_mode_zero之间有什么区别
- ScrollView加载里面的数据出现下滑(可能是焦点问题)
- 二叉查找树迭代器
- 宣传一下自己的私人博客