Python遥感开发之快速判断TIF数据为空

Python遥感开发之快速判断TIF数据为空


前言:介绍一下如何使用python下的gdal读取tif数据的时候,快速判断该tif数据是否为空,如果为空的话就把当前的tif删掉。


如图所示,通过arcgis查看箭头指向的为空值。
在这里插入图片描述
仅通过文件的大小无法判断
在这里插入图片描述
实现思路:我们可以借助python下的gdal读取tif,以第一个像元为基准像元,如果后面的像元有不一样的值就认定该tif不为空。
代码实现:

import numpy as np
from osgeo import gdal
import os

def read_tif01(filepath):
    dataset = gdal.Open(filepath)
    col = dataset.RasterXSize  # 图像长度
    row = dataset.RasterYSize  # 图像宽度
    geotrans = dataset.GetGeoTransform()  # 读取仿射变换
    proj = dataset.GetProjection()  # 读取投影
    data = dataset.ReadAsArray()  # 转为numpy格式
    data = data.astype(np.float32)  # 转为float类型
    # data[(data < 0) | (data > 15000)] = np.nan
    # a = data[0][0]
    # data[data == a] = np.nan #原因:读取某一个行政区的影像图的时候,往往第一行的第一列值为空值
    # band = dataset.GetRasterBand(1)
    # print(band)
    return [col, row, geotrans, proj, data]


def get_data_list(file_path, out=""):
    list1 = []  # 文件的完整路径
    if os.path.isdir(file_path):
        fileList = os.listdir(file_path)
        if out != "":
            for f in fileList:
                out_data = out + "\\" + f
                out_data = out_data.replace(".HDF", "_ndvi.tif")
                list1.append(out_data)
        else:
            for f in fileList:
                pre_data = file_path + '\\' + f  # 文件的完整路径
                list1.append(pre_data)
        return list1


if __name__ == '__main__':
    inputfile_path = r"F:\风云数据\MERSI-II陆表反射比1KM段产品\b19\01原始"
    infile_list = get_data_list(inputfile_path)
    for file_path in infile_list:
        col, row, geotrans, proj, data = read_tif01(file_path)
        print(data[0, 0])
        are_all_elements_equal = np.all(data == data[0, 0])
        if are_all_elements_equal:
            print("所有元素都相同")
            os.remove(file_path)
        else:
            print("数组中有不同的元素")
    print("已去除空数据")

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等待着冬天的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值