python对landsat8数据进行辐射校正

这篇博客详细介绍了如何使用Python和ENVI对Landsat8 L1 T数据进行辐射定标和大气校正。在Python中,通过辐射亮度公式进行辐射定标,并在ENVI中应用FLAASH进行大气校正。讨论了校正过程中的关键参数设置和结果差异,并提供了相关博客和论文参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Landsat8 L1 T数据是辐射校正数据使用地面控制点和数字高程模型数据进行精确校正后的数据产品,还需要做辐射校正(辐射定标和大气校正)。

一、python

1.辐射定标

辐射亮度L=DN*Gain+Bias

(1)代码

倾向于TIF格式的影像,所以output format选择的是“GTIFF”格式。

from osgeo import gdal
from osgeo import gdal_array
import numpy as np
from show import TwoPercentLinear
from matplotlib import pyplot as plt
import cv2 as cv


class Landsat8Reader(object):

    def __init__(self):
        self.base_path = r"D:\ProfessionalProfile\LandsatImage\LC08_L1TP_134036_20170808_20170813_01_T1\LC08_L1TP_134036_20170808_20170813_01_T1"
        self.bands = 7
        self.band_file_name = []
        self.nan_position = []

    def read(self):
        for band in range(self.bands):
            band_name = self.base_path + "_B" + str(band + 1) + ".tif"
            self.band_file_name.append(band_name)

        ds = gdal.Open(self.band_file_name[0])

        image_dt = ds.GetRasterBand(1).DataType
        image = np.zeros((ds.RasterYSize, ds.RasterXSize, self.bands),
                         dtype=np.float)
        for band in range(self.bands):
            ds = gdal.Open(self.band_file_name[band])
            band_image = ds.GetRasterBand(1)
            image[:, :, band] = band_image.ReadAsArray()

        self.nan_position = np.where(image == 0)
        image[self.nan_position] = np.nan

        del ds

        return image

    def write(self, image, file_name, bands, format='GTIFF'):

        ds = gdal.Open(self.band_file_name[0])
        projection = ds.GetProjection()
        geotransform = ds.GetGeoTransform()
        x_size = ds.RasterXSize
        y_size = ds.RasterYSize
        del ds
        band_cou
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值