我正在尝试使用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统计信息极为相似。