Python与开源GIS:开始使用GDAL

Python与开源GIS

Python与开源GIS:开始使用GDAL

2019-10-28 作者: xuzhiping 浏览: 6327 次

摘要: Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。 本页面的内容不再更新。 导入GDAL 在Python中使用GDAL,只需要导入gdal模块。在早期的版本中,GDAL...

Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。
本页面的内容不再更新。



导入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

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © 2014-2019 OSGeo中国中心 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org