无法从 rasterio 中的堆栈数组创建虚拟栅格
Cannot create a virtual raster from a stack array in rasterio
我需要知道如何创建虚拟栅格。我遍历了一个文件夹,其中包含一些二进制栅格 (1, 0)。我使用 numpy.concatenate 将这些栅格附加到一个 numpy 数组中。然后我想创建一个虚拟栅格,使用连接的栅格数作为该栅格将具有的波段数。不过我收到以下消息:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-93-7a57711dc737> in <module>
20 compress = 'lzw')
21 with rasterio.open(path_scl + "/" + "scl_stack.vrt", "w", **profile) as dst:
---> 22 dst.write(final_array.astype(rasterio.uint8), dimension)
rasterio/_io.pyx in rasterio._io.DatasetWriterBase.write()
IndexError: band index out of range
我查看了光栅的个数,它对应的是变量"dimension",y是写出我最终的虚拟光栅时刚放的。
path_scl = r'I:\Sentinel-2\Central17\T32TNT'
files = [os.path.join(root, file) for root, directories, filenames in os.walk(path_scl) for file in filenames]
scls = [file for file in files if file.endswith("_01_cloud_mask_bin.tif")]
final_array = np.zeros((10980, 10980))
for scl in scls:
with rasterio.open(scl) as ds:
profile = ds.profile
array = ds.read(1)
np.concatenate((final_array, array), axis = 0)
print(f"{scl} added")
dimension = len(scls)
with rasterio.Env():
profile = profile
profile.update(
dtype = rasterio.uint8,
compress = 'lzw')
with rasterio.open(path_scl + "/" + "scl_stack.vrt", "w", **profile) as dst:
dst.write(final_array.astype(rasterio.uint8), dimension)
有谁知道如何解释此错误消息?
谢谢
VRT 是一种 read-only 格式,您不能将数组写入 VRT。要创建 VRT 文件,您只需参考现有的 on-disk 光栅文件。例如。将 Python 中的 gdal.BuildVRT 与 example 3 here 中的光栅文件列表一起使用。
我需要知道如何创建虚拟栅格。我遍历了一个文件夹,其中包含一些二进制栅格 (1, 0)。我使用 numpy.concatenate 将这些栅格附加到一个 numpy 数组中。然后我想创建一个虚拟栅格,使用连接的栅格数作为该栅格将具有的波段数。不过我收到以下消息:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-93-7a57711dc737> in <module>
20 compress = 'lzw')
21 with rasterio.open(path_scl + "/" + "scl_stack.vrt", "w", **profile) as dst:
---> 22 dst.write(final_array.astype(rasterio.uint8), dimension)
rasterio/_io.pyx in rasterio._io.DatasetWriterBase.write()
IndexError: band index out of range
我查看了光栅的个数,它对应的是变量"dimension",y是写出我最终的虚拟光栅时刚放的。
path_scl = r'I:\Sentinel-2\Central17\T32TNT'
files = [os.path.join(root, file) for root, directories, filenames in os.walk(path_scl) for file in filenames]
scls = [file for file in files if file.endswith("_01_cloud_mask_bin.tif")]
final_array = np.zeros((10980, 10980))
for scl in scls:
with rasterio.open(scl) as ds:
profile = ds.profile
array = ds.read(1)
np.concatenate((final_array, array), axis = 0)
print(f"{scl} added")
dimension = len(scls)
with rasterio.Env():
profile = profile
profile.update(
dtype = rasterio.uint8,
compress = 'lzw')
with rasterio.open(path_scl + "/" + "scl_stack.vrt", "w", **profile) as dst:
dst.write(final_array.astype(rasterio.uint8), dimension)
有谁知道如何解释此错误消息? 谢谢
VRT 是一种 read-only 格式,您不能将数组写入 VRT。要创建 VRT 文件,您只需参考现有的 on-disk 光栅文件。例如。将 Python 中的 gdal.BuildVRT 与 example 3 here 中的光栅文件列表一起使用。