У меня есть растровые данные, которые включают значения 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)))))