辐射校正后,为什么在波段5、6和7处得到负值?

时间:2019-04-30 22:51:19

标签: python gis

我正在尝试使用Python手动辐射校正Landsat 8图像;我正在使用Rasterio和numpy数组,使用LVL 1 collection 1数据中提供的MTL文件中的波段乘和加值来修改每个波段的数字,但我的NIR SWIR1和SWIR2的值却为负。

 for x in B_list: 
    with rasterio.open(x,"r") as b:
        band=b.read(1)
        band_masked = numpy.ma.masked_array(band, mask=(band == 0))
        TOA_x=(.00002000*band_masked)+(-.100000)
        TOA=TOA_x/math.sin(sun_elevation)
        scaled=TOA*10000 # scale the numbers by 10000
        rad_cor_bands.append(scaled) # append the new rasters to a list

这些是与ENVI FLAASH结果进行比较的结果:

(我的结果)

{'min':870.353812730424,'max':9149.756477515453,'mean':1282.322945234995,'std':320.7381911648936}

{'min':622.4013889713156,'max':10142.046235327802,'mean':1079.4094047219655,'std':350.35757713331907}

{'min':343.96497894172603,'max':11529.667689104577,'mean':896.144857921475,'std':378.5729920045608}

{'min':134.17754586770752,'max':11543.109446830142,'mean':742.6455972788715,'std':453.6422724804889}

{'min':-110.65446984796611,'max':10970.634586553786,'mean':1557.865121879584,'std':1162.4318852778347}

{'min':-82.33076606909405,'max':14530.300069949319,'mean':1092.5736223521078,'std':926.4220337052117}

{'min':-41.045367340568724,'max':14530.300069949319,'mean':667.2732393332138,'std':626.3179561231228}

(ENVI的结果)

频段1 859.540771 9036.083008 1266.391450 316.757106

频段2 614.668823 10016.045898 1065.998458 346.008481

频段3 339.691589 11386.427734 885.012531 373.876933

频段4 132.510468 11399.702148 733.421884 448.012152

第5频段0.711042 10834.339844 1538.519843 1147.988763

第6波段0.236943 14349.781250 1078.952402 914.906030

频段7 1.896288 14349.781250 658.963308 618.535988

ENVI quickstats的结果以与我为numpy数组制作的字典中的顺序相同的顺序显示。有谁知道为什么我的NIR SWIR1和SWIR2取负值?所有其他值与ENVI Quick统计信息极为相似。

0 个答案:

没有答案