我使用GDAL函数更改栅格值。 由于某种原因,一切正常,突然我得到一个错误:
UnicodeDecodeError:“ ascii”编解码器无法解码位置中的字节0xe2 46:序数不在范围内(128)
我检查并发现在代码中生成错误的相关行是这样的:
dst_ds=driver.Create(nameToSave, tableshape[1], tableshape[0], 1, gdal.GDT_Float32)
这是包含以下行的函数:
def NDVI(red, nir, nameToSave):
red=gdal.Open(red)
if red is None:
sys.exit(1)
r=np.array(red.GetRasterBand(1).ReadAsArray(), dtype=float)
nir=gdal.Open(nir)
if nir is None:
sys.exit(1)
n=np.array(nir.GetRasterBand(1).ReadAsArray(), dtype=float)
geotr=red.GetGeoTransform()
proj=red.GetProjection()
tableshape=r.shape
np.seterr(divide='ignore', invalid='ignore')
calc=(n-r)/(n+r)
driver=gdal.GetDriverByName('GTiff')
dst_ds=driver.Create(nameToSave, tableshape[1], tableshape[0], 1, gdal.GDT_Float32)
dst_ds.SetGeoTransform(geotr)
dst_ds.SetProjection(proj)
dst_ds.GetRasterBand(1).WriteArray(calc)
return 1
我使用Anaconda和Python 2.7。 我很乐意解决。谢谢