我正在尝试使用GDAL处理栅格数据(ASCII格式),但在此之前,我有困难将新的值写入文件。在调用slopeband.WriteArray(s)时,会出现以下错误信息:
ERROR 6:slope.asc,波段1:此数据集不支持WriteBlock()。
ERROR 1:slope.asc,波段1:写一个脏块时出错。
非常抱歉如果这很基础,但我还是新手,特别是对Python和GDAL。我在Mac OS X 10.6.8上使用GDAL 1.9.0和Python 2.7。谢谢!
ERROR 6:slope.asc,波段1:此数据集不支持WriteBlock()。
ERROR 1:slope.asc,波段1:写一个脏块时出错。
非常抱歉如果这很基础,但我还是新手,特别是对Python和GDAL。我在Mac OS X 10.6.8上使用GDAL 1.9.0和Python 2.7。谢谢!
import numpy
import gdal
import gdalconst
dgm = gdal.Open("DGM_10_MR.asc", gdalconst.GA_ReadOnly)
driver = dgm.GetDriver()
geotransform = dgm.GetGeoTransform()
band = dgm.GetRasterBand(1)
data = band.ReadAsArray()
cols = dgm.RasterXSize
rows = dgm.RasterYSize
slope = driver.CreateCopy("slope.asc", dgm)
slope = None
dgm = None
slope = gdal.Open("slope.asc", gdalconst.GA_Update)
slope.SetGeoTransform(geotransform)
slopeband = slope.GetRasterBand(1)
s = slopeband.ReadAsArray()
for y in range(rows):
for x in range(cols):
s[y, x] = 0.0
slopeband.WriteArray(s)
slopeband.FlushCache()
del s
dgm = None
slope = None
print "done"
gdalinfo --formats
和GDAL文档声称可以读写Arc ASCII Grid,但是当我按照你建议使用ASCII网格和gdalconst.GA_Update
运行@Lucia的示例代码时,我遇到了相同的错误:ERROR 6: WriteBlock() not supported for this dataset.
。正如我在我的回答中提到的那样,使用更好支持的栅格格式(如GeoTiff)可以解决这个问题。 - James