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

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


发布日期: 2017-10-22 更新日期: 2019-10-28 编辑:xuzhiping 浏览次数: 10827

标签:

摘要: Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。 本页面的内容不再更新。 首先来看一下使用Python如何对矢量数据进行操作。 在 Python 中使用 OGR,只...

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



首先来看一下使用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 © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

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

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