跳转至

GDAL/OGR一般使用

检测安装

from osgeo import gdal

查看版本

gdal.VersionInfo('VERSION_NUM')

# '2040100'

开启python异常

默认情况下,发生错误时,GDAL/OGR Python绑定不会引发异常。相反,它们返回错误值(例如None),并将错误消息写入sys.stdout。你可以通过调用UseExceptions()函数来开启异常:

from osgeo import gdal

# 开启异常
gdal.UseExceptions()

# 打开不存在的数据集
ds = gdal.Open('test.tif')

# 开启异常前
ERROR 4: test.tif: No such file or directory
# 开启异常后
RuntimeError                              Traceback (most recent call last)
<ipython-input-5-6ef000fdc647> in <module>
----> 1 gdal.Open("test.tif")

c:\program files\python37\lib\site-packages\osgeo\gdal.py in Open(*args)
   3114 def Open(*args):
   3115     """Open(char const * utf8_path, GDALAccess eAccess) -> Dataset"""
-> 3116     return _gdal.Open(*args)
   3117
   3118 def OpenEx(*args, **kwargs):

RuntimeError: test.tif: No such file or directory

你可以在运行的任何时候使用以下命令禁用GDAL/OGR异常:

gdal.DontUseExceptions()

安装GDAL OGR错误处理

安装GDAL错误处理程序功能,以捕获GDAL错误、类和消息。仅适用于GDAL 1.10以上的版本。

from osgeo import ogr, osr, gdal

# GDAL错误处理方法
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__':

    # 安装错误处理
    gdal.PushErrorHandler(gdal_error_handler)

    # 抛出一个假的错误
    gdal.Error(1, 2, 'test error')

    # 卸载错误处理
    gdal.PopErrorHandler()
回到页面顶部