Python与开源GIS:使用OGR模块打开矢量数据

2017-10-22 作者: bukun 浏览: 1041 次 Help edit

摘要: 首先来看一下使用Python如何对矢量数据进行操作。 在 Python 中使用 OGR,只需要导入ogr模块。在早期的版本中,OGR是使用下面的语句导入的: import ogr 或者使用目前建议的方法: from osgeo impor....

首先来看一下使用Python如何对矢量数据进行操作。 在 Python 中使用 OGR,只需要导入ogr模块。在早期的版本中,OGR是使用下面的语句导入的:

import ogr

或者使用目前建议的方法:

from osgeo import ogr

为了保持兼容性,同样可以使用下面的方法:

try: 
    from osgeo import ogr             
except:
    import ogr

先看一下使用ogr读取数据的简单流程:

OGR读取数据流程

首先我们先看一下如何打开一个数据。这里使用矢量数据常用的数据集ESRI的ShapeFile。可以使用ogr.Open()函数直接打开矢量数据,在这个过程中,ogr会自动根据文件的类型来确定相应的驱动

>>> inshp = '/bk/gdata/world_borders.shp'
>>> from osgeo import ogr
>>> datasource = ogr.Open(inshp)
>>> driver = datasource.GetDriver()
>>> driver.name
    'ESRI Shapefile'

这样就打开了一个数据源(DataSource),并将其赋给datasource变量。

上面这种方法打开的是按缺省方式进行的,在实际编程中,应该对要打开的数据类型进行一下处理。要读取某种类型的数据,必须要先载入数据驱动,也就是初始化一个对象,让它“知道”某种数据结构。

>>> driver = ogr.GetDriverByName('ESRI Shapefile')
    Open(self, char name, int update = 0) -> DataSource

数据驱动driver的Open()(方法返回一个数据源对象),其中update为0是只读,为1是可写)。 例如:

import sys
from osgeo import ogr
inshp = '/bk/gdata/world_borders.shp'
driver = ogr.GetDriverByName('ESRI Shapefile')
dataSource = driver.Open(inshp,0)
if dataSource is None:
    print 'could not open'
    sys.exit(1)
print 'done!'

注意filename一定要写绝对路径! 使用Python的内省函数dir()看一下datasource有哪些可用的方法。

>>> dir(datasource)
'CopyLayer', 'CreateLayer', 'DeleteLayer', 'Dereference', 'Destroy',
'ExecuteSQL', 'GetDriver', 'GetLayer', 'GetLayerByName', 'GetLayerCount',
'GetName', 'GetRefCount', 'GetSummaryRefCount', 'Reference', 'Release',
'ReleaseResultSet', 'TestCapability'

返回目录:Python与开源GIS

随机推荐

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

Powered by TorCMS