如何使用GDAL将操纵光栅值写入ASCII网格?

2024-06-26 12:50:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用GDAL操作网格(ASCII网格)中的光栅值。但是在继续之前,我很难将新值写入文件。我收到这些错误消息的时候slopeband.WriteArray(s) 被称为。在

错误6:斜坡.asc,带区1:此数据集不支持WriteBlock()。在

错误1:斜坡.asc,带1:写入脏块时出错

如果这是非常基本的,我很抱歉,但是我对python和GDAL还是新手。我在macosx10.6.8和python2.7上使用gdal1.9.0。谢谢您!在

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"

Tags: importnone网格错误openslopegagdal
1条回答
网友
1楼 · 发布于 2024-06-26 12:50:21

不幸的是,GDAL不能在所有文件类型中以相同的程度读写。Arc ASCII grid恰好是GDAL无法写入的文件类型之一。如您的错误消息所示:WriteBlock() not supported for this dataset.,因此您不能写入Arc ASCII网格。在

另外,您可以将现有的ASCII数据集转换为不同的文件类型,GDAL更全面地支持GeoTiff。要转换文件类型,可以使用gdal_translate命令行程序,如下所示:

gdal_translate -of GTiff DGM_10_R.asc DGM_10_R.tif

我可以在我的计算机上重现您的错误,只需更改文件类型就可以修复错误。在

相关问题 更多 >