我对python相当陌生。我在用陆地卫星8号。tiff图像生成NDVI图像。当我生成图像时,河流不显示为负值。NDVI从-1到1,但在此图像中最低为0。这是我使用的代码的一部分:
import os
from glob import glob
import sys
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import rasterio as rio
from rasterio.plot import plotting_extent
import rioxarray as rxr
import geopandas as gpd
import earthpy as et
import earthpy.spatial as es
import earthpy.plot as ep
#create image stack
arr_st, meta = es.stack(stack_bands_path, nodata = -9999)
#allow division by 0
np.seterr(divide='ignore', invalid='ignore')
#create NDVI
red = arr_st[3].astype(float)
nir = arr_st[4].astype(float)
ndvi = np.divide((nir-red), (nir+red))
ep.plot_bands(ndvi, cmap="RdYlGn", cols=1, vmin=-1, vmax=1)
plt.show()
我不确定我做错了什么。我最初使用的是Earthpy。spatial.normalized_difference,但河流显示为绿色(或色条上的1)。
我的理论是小于0的数字显示为0。但我不确定任何帮助都很感激。NDVI的图像在下面。
1条答案
按热度按时间jljoyd4f1#
NDVI将落在
-1
到+1
的范围内,因此整数不是一个很好的表示,因为在该范围内只有3个可能的整数结果,即-1,0和1。我不熟悉您使用的特定包,但是,如果您想要小数(十进制)结果,我想您应该使用
float
类型,i。即: