Date: 2015-08-13 9:39
Summary: 一段代码一个小功能,简单清晰又实用。翻译自英文的cookbook。Thanks the author for sharing us such a wonderful tutorial!!!
GDAL/OGR概述
检查是否已经安装了GDAL/OGR
导入Python的GDAL模块,如果找不到的话就退出程序
import sys
try:
from osgeo import ogr, osr, gdal
except:
sys.exit('ERROR: cannot find GDAL/OGR modules')
检查GDAL/OGR的版本
下面这段代码检查导入GDAL/OGR模块的版本
import sys
from osgeo import gdal
version_num = int(gdal.VersionInfo('VERSION_NUM'))
if version_num < 1100000:
sys.exit('ERROR: Python bindings of GDAL 1.10 or later required')
启用Python异常
在默认情况下,GDAL/OGR的Python绑定在出现错误的时候不会引发异常。它们只会返回一个None的错误值并且向标准输出sys.stdout写一条错误信息。你可以通过调用UseException()函数启用异常。
from osgeo import gdal
# Enable GDAL/OGR exceptions
gdal.UseExceptions()
# open dataset that does not exist
ds = gdal.Open('test.tif')
# results in python RuntimeError exception that
# `test.tif' does not exist in the file system
你可以随时停止使用GDAL/OGR异常。
from osgeo import gdal
gdal.DontUseExceptions()
注册GDAL/OGR错误处理函数
下面这段代码注册了一个GDAL错误处理函数,该函数能抓取GDAL错误,类和信息。只有1.10版本以上才能使用。
try:
from osgeo import ogr, osr, gdal
except:
sys.exit('ERROR: cannot find GDAL/OGR modules')
# example GDAL error handler function
def gdal_error_handler(err_class, err_num, err_msg):
errtype = {
gdal.CE_None:'None',
gdal.CE_Debug:'Debug',
gdal.CE_Warning:'Warning',
gdal.CE_Failure:'Failure',
gdal.CE_Fatal:'Fatal'
}
err_msg = err_msg.replace('\n',' ')
err_class = errtype.get(err_class, 'None')
print 'Error Number: %s' % (err_num)
print 'Error Type: %s' % (err_class)
print 'Error Message: %s' % (err_msg)
if __name__=='__main__':
# install error handler
gdal.PushErrorHandler(gdal_error_handler)
# Raise a dummy error
gdal.Error(1, 2, 'test error')
#uninstall error handler
gdal.PopErrorHandler()