使用Python和GDAL进行图像处理
我有一个数据库目录,它可以读取图片的路径以及其他一些属性。在代码中有一部分是尝试打开数据集,这样如果打开成功,后面的处理就可以继续进行。但是我遇到了一个问题,就是不知道怎么让程序在遇到无法打开的图片后继续执行。现在代码运行得很顺利,但当它遇到一张打不开的图片时,就会停止,而不是回到开头重新读取数据库并尝试打开下一张图片。
try:
hDataset = gdal.Open( pszFilename, gdal.GA_ReadOnly )
except IOError:
print("gdalinfo failed - unable to open '%s'." % pszFilename )
status = "UPDATE %s SET job = 11 WHERE id = %s" % (table,row[2])
setstatus = conn.cursor()
setstatus.execute(status)
conn.commit()
setstatus.close()
else:
print "file opened sucessfully"
hDataset.close()
1 个回答
0
GDAL 通常不会抛出异常,这点有点遗憾。如果你开启了 gdal.UseExceptions()
,它有时会抛出 RuntimeError
(仅此而已!),但我发现这个功能并不是很可靠。
在使用 GDAL 的一些函数时,如果操作失败,它们会返回 None
,而其他一些函数则会返回一个状态整数,0 表示成功,非零则表示出错。
我常用的一种典型写法是这样的:
hDataset = gdal.Open(pszFilename, gdal.GA_ReadOnly)
if hDataset is None:
raise IOError("Could not open '%s'" % (pszFilename,))
band_num = 1
band = hDataset.GetRasterBand(band_num)
if band is None:
raise AttributeError("Raster band %s cannot be fetched" % (band_num,))
...