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 ...
随机推荐
- 【读书笔记】组合计数中的行列式方法 专题3 完美匹配: the Pfaffian method
目录 专题3-Perfect matchings: the Pfaffian method 一些定义 用2×1的砖密铺a×b的大矩形的方法数 专题3-Perfect matchings: the Pfa ...
- Unity JobSystem使用及技巧
什么是JobSystem 并行编程 在游戏开发过程中我们经常会遇到要处理大量数据计算的需求,因此为了充分发挥硬件的多核性能,我们会需要用到并行编程,多线程编程也是并行编程的一种. 线程是在进程内的,是 ...
- 【LeetCode贪心#11】单调递增的数字(详解)
单调递增的数字 力扣题目链接(opens new window) 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的 ...
- DIYAUDIO LM3886空板、套件、成品机DIY
diyaudio 3886空板,3886纯后级功放板.最后三张图为成品板子演示图.正确安装后,没有底噪.大水塘电容直径最大35MM.本人已经用这快板子制作了多台成品机,用过的都说好!空板20元,全部1 ...
- requests不带参数的get请求和带get参数请求
requests库常用的方法 requests.Request(url) 构造一个请求,支持以下各种方式 requests.get() 发送get请求 requests.post() 发送post请求 ...
- odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)
计算的字段和变更(Computed Fields And Onchanges) 模型之间的关系是任何Odoo模块的关键组成部分.它们对于任何业务案例的建模都是必要的.然而,我们可能需要给定模型中字段之 ...
- 使用 diffusers 训练你自己的 ControlNet 🧨
简介 ControlNet 这个神经网络模型使得用户可以通过施加额外条件,细粒度地控制扩散模型的生成过程.这一技术最初由 Adding Conditional Control to Text-to-I ...
- vue之条件渲染v-if
目录 说明 语法 示例 说明 "vue条件渲染指令包括v-if.v-else.v-else-if.v-show. 语法 v-if="条件1&&条件2" # ...
- 升级:Logical Upgrade升级MySQL5.6.26
升级需谨慎,事前先备份 MySQL升级的实质是对数据字典的升级,数据字典有:sys.mysql.information_schema.performance_schema . MySQL升级的两种方式 ...
- Golang一日一库之logrus
前言 之前一篇文章介绍了 日志库zap https://www.cnblogs.com/zichliang/p/17311480.html 毋庸置疑,zap库无论是Golang在项目中 还是生产中都极 ...