Я использую следующий код для маскировки облаков с изображения Landsat с использованием QA-полосы. Я сталкиваюсь со странной проблемой, поскольку вы можете видеть, что у меня есть 2 оператора печати в моем коде, который печатает fill_value landsat_pre
и landsat_pre_cl_free
соответственно. Если я запускаю код с оператором print, я получаю вывод как landsat_pre_cl_free 999999
и landsat_pre_cl_free 16959
. Где, как будто я удаляю первый оператор print, тогда я получаю landsat_pre_cl_free 999999
. Я не могу понять, почему изменяется значение заполнения landsat_pre_cl_free
из-за удаления первого оператора печати. Я использую следующие пакеты с conda
rasterio 1.0.25 py36h238e834_0 conda-forge
numpy 1.17.2 py36h6b0580a_0 conda-forge
Код:
import earthpy.mask as em
import numpy as np
import numpy.ma as ma
import rasterio as rio
all_masked_values = [2800, 2804, 2808, 2812, 6896, 6900, 6904, 6908]
landsat_qa_path = 'BQA.TIF'
path_landsat_pre_st='B4.TIF'
with rio.open(path_landsat_pre_st) as landsat_pre_src:
landsat_pre = landsat_pre_src.read(masked=True)
print("landsat_pre", landsat_pre.fill_value)
with rio.open(landsat_qa_path) as landsat_pre_cl:
landsat_qa = landsat_pre_cl.read()
landsat_pre_cl_free = em.mask_pixels(
landsat_pre, landsat_qa, vals=all_masked_values)
print("landsat_pre_cl_free", landsat_pre_cl_free.fill_value)