2024-04-19 23:53:18 发布
网友
我有一个geotif,想更新一个像素/单元格的值。保存此更改的最佳方法(资源安全)是什么? 我必须使用WriteArray()函数还是有更好的方法来更新相同的tif?在
ds = gdal.Open("test.tif") data = ds.ReadAsArray() data[0][0] = 1
如果使用选项GA_Update打开数据集,而不是使用GA_ReadOnly,则可以直接更新它。还要记住,ReadAsArray()返回一个numpy ndarray,必须用data[0, 0]代替data[0][0]来处理。在
GA_Update
GA_ReadOnly
ReadAsArray()
data[0, 0]
data[0][0]
ds = gdal.Open("test.tif", GA_Update) data = ds.ReadAsArray() data[0, 0] = 1 ds.GetRasterBand(1).WriteArray(data) # close the dataset to flush it to disk ds = None
如果你的图像有一个波段,这个代码可以工作。如果它有多个波段,比如说5,ReadAsArray()将返回一个三维数组,您必须遍历这些带区来编写它们。在
如果使用选项
GA_Update
打开数据集,而不是使用GA_ReadOnly
,则可以直接更新它。还要记住,ReadAsArray()
返回一个numpy ndarray,必须用data[0, 0]
代替data[0][0]
来处理。在如果你的图像有一个波段,这个代码可以工作。如果它有多个波段,比如说5,
^{pr2}$ReadAsArray()
将返回一个三维数组,您必须遍历这些带区来编写它们。在相关问题 更多 >
编程相关推荐