Есть ли способ использовать numpy .where () для растровых данных со значениями NaN в качестве данных? - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть растровые данные, которые включают значения NaN в качестве данных. Я хочу вычислить новый растр из него, например, если растр == 0 делать оператор1, если растр == 1 делать оператор2, если растр между 0 и 1 делать оператор3, в противном случае не изменяйте значение. Как я могу сделать это с помощью функции numpy .where ()?

вот мой код:

import os
import rasterio
from rasterio import plot
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

os.listdir('../NDVI_output')

ndvi1 = rasterio.open("../NDVI_output/NDVI.tiff")

min_value = ndvi_s = np.nanmin(ndvi) #NDVI of Bare soil
max_value = ndvi_v = np.nanmax(ndvi) #NDVI of full vegetation cover

fvc = (ndvi-ndvi_s)/(ndvi_v-ndvi_s) #fvc: Fractional Vegetation Cover

band4 = rasterio.open('../TOAreflectance_output/TOAref_B4.tiff')
toaRef_red = band4.read(1).astype('float64')
emiss = np.where((fvc == 1.).any(), 0.99,
                 (np.where((fvc == 0.).any(), 0.979-0.046*toaRef_red,
                           (np.where((0.<fvc<1.).any(), 0.971*(1-fvc)+0.987*fvc, fvc)))))
...