Изменено значение заполнения массива маски - PullRequest
0 голосов
/ 16 октября 2019

Я использую следующий код для маскировки облаков с изображения 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)
...