Python实现批量填补遥感影像的无效值NoData
本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件批量进行无效值(NoData值)填充的方法。
在处理栅格图像文件时,我们经常会遇到图像中存在有无效值(即NoData值)的情况。如下图所示,这里有一个矢量面要素图层和该矢量图层范围对应的一景栅格图像;可以看到,由于该栅格图像存在无效值NoData,因此栅格图像是没有完全遮盖矢量图层的。

在一些情况下,这些无效值可能会对我们的后续图像处理操作带来很多麻烦。那么,我们可以通过代码,对大量存在NoData值的栅格图像进行无效值填充。
首先,我们来明确一下本文的具体需求。现有一个存储有多张.tif格式遥感影像的文件夹,且文件夹内除了.tif格式的遥感影像文件外,还具有其它格式的文件。

其中,每一个.tif格式遥感影像都存在若干无效值像元;我们希望对每一张遥感影像进行NoData值的填充。
明确了需求后,我们就可以开始具体的操作。首先,本文所需用到的代码如下。
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 19 14:53:49 2022
@author: fkxxgis
"""
import arcpy
from arcpy.sa import *
tif_file_path="E:/LST/Data/MODIS/13_Average/"
fill_file_path="E:/LST/Data/MODIS/14_AverageFill/"
arcpy.env.workspace=tif_file_path
tif_file_name=arcpy.ListRasters("*","tif")
for tif_file in tif_file_name:
fill_file=arcpy.sa.Con(IsNull(tif_file),
FocalStatistics(tif_file,NbrAnnulus(1,12,"CELL"),"MEAN"),
tif_file)
fill_result_path=fill_file_path+tif_file.strip(".tif")+"_Fill.tif"
fill_file.save(fill_result_path)其中,tif_file_path是原有填充无效值前遥感图像的保存路径,fill_file_path是我们新生成的填充无效值后遥感影像的保存路径,也就是结果保存路径。
首先,我们利用arcpy.ListRasters()函数,获取路径下原有的全部.tif格式的图像文件;接下来,遍历tif_file_path路径下全部.tif格式图像文件,并分别执行arcpy.sa.Con()这个栅格计算函数。其中,该函数中IsNull(tif_file)表示首先选择每一景图像中的无效值像元,随后通过FocalStatistics()函数进行无效值的填充;NbrAnnulus(1,12,"CELL")参数表示,以当前无效值像元为圆心,12为圆环外半径,1为圆环内半径,构建一个圆环作为参考区域,从而以圆环内所有像元的值作为参考进行圆心处该无效值像元的填充(除了圆环,还可以设置矩形、扇形、圆形等);"MEAN"参数表示以刚刚这个圆环中全部像元数值的平均值作为圆心处该无效值像元的数值。最后,我们在原有遥感影像文件名后添加"_Fill.tif"后缀,作为填充后遥感影像文件的新文件名。
在 IDLE (Python GUI) 中运行代码。代码运行完毕后,我们选取一景图像,对比填充前后的图像结果,如下图所示;其中,这一张是填充前图像。

这一张则为填充后图像。

通过对比,我们可以看到填充后图像中的空白区域(NoData值区域)已经明显较之填充前图像有了很大程度的减少(图像右下角尤为明显)。如果大家想让更多的NoData值区域得到填充,就可以将FocalStatistics()函数中设定的参考区域的范围更大一些;当然,这样也会稍微降低填充值的精度,大家结合实际需要来操作即可。
到此这篇关于Python实现批量填补遥感影像的无效值NoData的文章就介绍到这了,更多相关Python填补遥感影像无效值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
这篇文章主要为大家详细介绍了python 3利用Dlib 19.7实现摄像头人脸检测特征点标定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-02-02
Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列
Pandas是一个强大的数据处理库,提供了各种功能来操作和处理数据,这篇文章主要给大家介绍了关于Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-05-05
python pip安装的包放在哪个目录(site-packages目录的位置)
这篇文章主要介绍了python pip安装的包放在哪个目录(site-packages目录的位置),通常安装在python安装目录下的lib/site-packages目录下,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06
6行Python代码实现进度条效果(Progress、tqdm、alive-progress
这篇文章主要介绍了6行Python代码实现进度条效果(Progress、tqdm、alive-progress和PySimpleGUI库),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
解决import tensorflow导致jupyter内核死亡的问题
这篇文章主要介绍了解决import tensorflow导致jupyter内核死亡的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02


最新评论