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中gdal模块,实现对大量栅格图像批量绘制直方图的方法. 首先,明确一下本文需要实现的需求:现需对多幅栅格数据文件进行依据其像元数值的直方图绘制,具体绘制内容即各栅格图 ...
- Python核对遥感影像批量下载情况的方法
本文介绍批量下载遥感影像时,利用Python实现已下载影像文件的核对,并自动生成未下载影像的下载链接列表的方法. 批量下载大量遥感影像数据对于GIS学生与从业人员可谓十分常见.然而,对于动辄成 ...
- Python ArcPy批量计算多时相遥感影像的各项元平均值
本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取. 在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取-- ...
- 用Python批量下载DACC的MODIS数据
本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...
- Python批量读取HDF多波段栅格数据并绘制像元直方图
本文介绍基于Python语言gdal模块,实现多波段HDF栅格图像文件的读取.处理与像元值可视化(直方图绘制)等操作. 另外,基于gdal等模块读取.tif格式栅格图层文件的方法可以查看Pyt ...
- Python ArcPy批量掩膜、重采样大量遥感影像
本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作. 首先,我们来明确一下本文的具体需求.现有一个存储有大量.tif格式遥感影像的文件夹:且其中除了 ...
- Python gdal读取MODIS遥感影像并结合质量控制QC波段掩膜数据
本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取.计算,并基于质量控制QC波段进行图像掩膜的方法. 前期的文章Python GDAL读取栅格数据并基于质量评估波段QA对 ...
- Earthdata批量下载MODIS遥感影像的方法
本文介绍在Earthdata网站中,批量下载MODIS遥感影像的方法. 首先,打开网页:https://search.earthdata.nasa.gov/search ,如果没有Earthd ...
- 批量下载Landsat遥感影像的方法
本文介绍在USGS网站批量下载Landsat系列遥感影像的方法. 首先,打开EarthExplorer的官网,首先完成注册与登录. 接下来,点击左侧"Search Criteri ...
- 基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!
1.基于VC++ Win32+CUDA+OpenGL组合的遥感影像显示 在该组合方案下,初始化时将OpenGL设置为下面两种方式,效果一样 //设置方式1 glutInitDisplayMode (G ...
随机推荐
- win10计划任务程序库实现定时任务的自动执行程序及问题解决。
win10计划任务程序库可以实现按照规则频率执行脚本的功能.现在将设置方法记录如下: 创建任务步骤 1.右键点击我的电脑,选择管理,依次点击:系统工具->任务计划程序->任务计划程序库. ...
- vue之列表渲染v-for
目录 简介 用法 v-for可循环的几种变量的展示 数组的循环展示 对象的循环展示 字符串的循环展示 数字的循环展示 v-for搭档key值的说明 js循环几种方式 基于索引的循环 数组的循环 数组基 ...
- [Linux]常用命令之【mount/umount】
1 mount mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者. 在Linux和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的. 要 ...
- 四月十号java知识点
1.数组:若干个相同数据类型元素按照一定顺序排列的集合2.JAVA语言内存分为栈内存和堆内存3.方法中的一些基本类型变量和对象的引用变量都在方法中的栈内存中分配4.堆内存用来存放new运算符创建的数组 ...
- LeeCode 90双周赛复盘
T1: 差值数组不同的字符串 思路:数组遍历 若前两个字符串差值数组不同,则只需要继续计算第三个字符串的差值数组即可得到答案 若前两个字符串差值数组相同,则依次遍历后续字符串,直至找到不同的差值数组 ...
- python绘图之turtle库的相关使用
目录 turtle库的介绍 turtle库的使用 turtle库中相关的函数 窗体 setup()函数 screensize()函数 坐标 goto()函数 position()函数 home()函数 ...
- JavaScript 发布-订阅设计模式实现 React EventBus(相当于vue的$Bus)非父子之间通信
提前声明: 我没有对传入的参数进行及时判断而规避错误,仅仅对核心方法进行了实现: 解决了react的非父子间的通信: 参考文档:https://github1s.com/browserify/even ...
- MySQL InnoDB Architecture 简要介绍
MySQL InnoDB 存储引擎整体架构图: 一.内存存储结构 1.Buffer Pool buffer pool 是主内存中的一块儿存储区域,用于存储访问的表及索引数据.这样从内存中直接访问获取使 ...
- SQL server数据库拼接语句(STUFF)用法
我对SQLserver 中STUFF函数的理解是在sql server中将字符串中的第一个字符串某一部分字符替换成另外一部分,组成新的字符串数据. STUFF(character_expression ...
- cocos2d-x场景间参数传递
1>使用全局变量 这个就不详细说明了. 2>切换时传递 2.1>在secondScene.h 中加入成员变量,如 int sceneNum; 并在 ...