摘要: Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。 本页面的内容不再更新。 导入GDAL 在Python中使用GDAL,只需要导入gdal模块。在早期的版本中,GDAL...
本页面的内容不再更新。
导入GDAL
在Python中使用GDAL,只需要导入gdal模块。在早期的版本中,GDAL是使用下面的语句导入的:
import gdal
但是后来GDAL成为OSGEO的子项目后,对代码进行了重新组织。 在 RFC 17号文件中, 实现了Python的新的名称空间osgeo,并将gdal与ogr都包含在这个名称空间之下。 现在推荐使用 下面的语句导入:
from osgeo import gdal
当然早期版本也是支持的,但是在使用的时候会产生一个 弃用警告:
>>> import gdal /usr/lib/python2.6/dist-packages/osgeo/gdal.py:99: DeprecationWarning: gdal.py was placed in a namespace, it is now available as osgeo.gdal DeprecationWarning)
为了保持兼容性,可以使用下面的语句来导入:
>>> try: > import gdal > except: > from osgeo import gdal
除了gdal包,还有一个gdalconst包最好也导入。 gdalconst 也是osgeo的一个包,它只是在代码中对GDAL中用到的一些常 量进行了绑定。其中gdalconst中的常量都加了前缀,力图与 其他模块冲突最小。 所以对gdalconst你可以直接这样导入:
>>> from osgeo.gdalconst import *
驱动
要读取某种类型的数据,必须要先载入数据驱动,也就是初 始化一个对象,让它“知道”某种数据结构。 可以使用下面 语句一次性注册所有的数据驱动,但是只能读不能写:
>>> gdal.AllRegister()
单独注册某一类型的数据驱动,这样的话可以读也可以写,可以 新建数据集(这最终还要取决于GDAL是否已经进行了实现)。一 些不同类型的数据驱动的编码,在表\ref {tab:gdaL_format}中已经介绍过了。 下面的语句注册了Erdas的 栅格数据类型。
>>> driver = gdal.GetDriverByName('HFA') >>> driver.Register()
可以使用下面的语句判断driver是否注册成功。
>>> driver = gdal.GetDriverByName('GeoTiff') >>> driver == True False
上面的注册就失败了,因为不存在名称为“GeoTiff”的数 据格式(正确的格式为“GTiff”)。
查看系统支持的数据格式
除了使用GetDriverByName(), GDAL还可以使用GetDriver() 来获得驱动。 下面的代码获取了系统支持的所有的驱动的名称。
from osgeo import gdal drv_count = gdal.GetDriverCount() for idx in range(drv_count): driver = gdal.GetDriver(idx) print( "%10s: %s" % (driver.ShortName, driver.LongName))
上面第4行,直接使用了索引值来获得驱动,而在第5行则打印了 驱动的名称。注意到驱动有ShortName与LongName。ShortName与 栅格数据格式在GDAL中定义的编码是一致的,而LongName则可 以看成是描述性的文字。 对于不同的Linux发行版,以及安装 的GDAL的版本与编译选项的不同,上面程序的结果是不一样的。所以一般情况下要避免使用gdal.GetDriver()这个函数来获取 驱动。 我使用的系统是Debian Squeeze,返回的驱动的个数是88。
返回目录:Python与开源GIS