没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
GDAL for Python 使用方法简介
1. 地理数据处理软件包 GDAL 简介
GDAL(Geospatial Data Abstraction Library)是一个在 X/MIT 许可协议下的开源栅格空间
数据转换库。该项目由 Frank Warmerdam 教授于 1998 年发起。 它利用抽象数据模型来表
达所支持的各种文件格式。 它还有一系列命令行工具来进行数据转换和处理。
OGR(OpenGIS Simple Features Reference Implementation)是 GDAL 项目的一个子项目,
提供对矢量数据的支持。 一般把这两个库合称为 GDAL/OGR,或者简称为 GDAL。
由于 MIT 协议的开放性,任何人都可以基于 GDAL 库来编写自己的软件而不需要原作
者的授权, 所以有很多著名的 GIS 软件都使用了 GDAL/OGR 库, 包括商业公司 ESRI 的
ArgGIS,Google 的 Google Earth 和开源的 GRASS GIS 系统。 GDAL/OGR 支持多种操作系
统,可以同时对 Linux 和 windows 下的地理空间数据管理系统提供百余种矢量和栅格文件
类型的支持。
GDAL/OGR 使用面向对象的 C++语言编写,这令该库在支持百余种格式的同时,还具
有很高的执行效率。 GDAL/OGR 同时还提供多种主流编程语言的绑定,除了 C 和 C++语
言之外, 用户还可以在 Perl、python、VB6、Ruby、Java、C#等语言中调用 GDAL, 这令
GDAL 的应用变得非常广泛。 但是目前 GDAL 的中文资料较少,本人在美国学习期间,
主要参考了 GDAL 的官方网站和 Utah State University 的 GDAL Python 培训课程 。
下面简要介绍 GDAL/OGR 的体系结构
1.1 GDAL
GDAL 提 供 对 多 种 栅 格 数 据 的 支 持 , 包 括 Arc/Info ASCII
Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem)等格式。
GDAL 使用抽象数据模型(abstract data model)来解析它所支持的数据格式,
抽象数据模型包括数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo
Transform),大地控制点(GCPs),元数据(Metadata),栅格波段(Raster Band),颜
色 表 (Color Table) , 子 数 据 集 域 (Subdatasets Domain) , 图 像 结 构 域
(Image_Structure Domain),XML 域(XML:Domains)。
GDAL 包括如下几个部分:
GDALMajorObject 类:带有元数据的对象。
GDALDdataset 类:通常是从一个栅格文件中提取的相关联的栅格波段
集合和这些波段的元数据;GDALDdataset 也负责所有栅格波段的地理
坐标转换(georeferencing transform)和坐标系定义。
GDALDriver 类:文件格式驱动类,GDAL 会为每一个所支持的文件格
式创建一个该类的实体,来管理该文件格式。
GDALDriverManager 类:文件格式驱动管理类,用来管理 GDALDriver
类
1.2 OGR
OGR 提供对矢量数据格式的读写支持,它所支持的文件格式包括: ESRI
Shapefiles , S-57 , SDTS , PostGIS , Oracle Spatial , Mapinfo mid/mif ,
Mapinfo TAB。
OGR 包括如下几部分:
Geometry:类 Geometry (包括 OGRGeometry 等类)封装了 OpenGIS 的矢
量数据模型,并提供了一些几何操作, WKB(Well Knows Binary) 和
WKT(Well Known Text)格式之间的相互转换,以及空间参考系统(投影)。
Spatial Reference:类 OGRSpatialReference 封装了投影和基准面的定义。
Feature:类 OGRFeature 封装了一个完整 feature 的定义,一个完整的
feature 包括一个 geometry 和 geometry 的一系列属性。
Feature Definition:类 OGRFeatureDefn 里面封装了 feature 的属性,类型、
名称及其默认的空间参考系统等。一个 OGRFeatureDefn 对象通常与一
个层(layer)对应。
Layer:类 OGRLayer 是一个抽象基类,表示数据源类 OGRDataSource
里面的一层要素(feature)。
Data Source:类 OGRDataSource 是一个抽象基类,表示含有 OGRLayer
对象的一个文件或一个数据库。
Drivers:类 OGRSFDriver 对应于每一个所支持的矢量文件格式。类
OGRSFDriver 由类 OGRSFDriverRegistrar 来注册和管理。
1.3 GDAL 安装方法
正常情况下,gdal 安装可以采用在线安装,即:pip install gdal;然而该安
装方式,要求电脑实现安装好 VS 环境;(安装时会提醒)
若想避免出现这类错误,推荐的安装方法为:pip install GDAL-2.2.4-cp35-
cp35m-win_amd64.whl;相应版本下 whl 文件下载地址为:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
2. OGR 读写矢量数据
本教程的讲义和源码都是取自 Utah State University 的 openGIS 课程, 相关资
料,包括讲义、源码、数据样例,请从: https://www.gis.usu.edu/~chrisg/python/
2.1 为什么用 open source?
优点:
免费,适合个人和小公司
强大的开发工具,找 bug 更容易
跨平台,windows 和 linux 都能用
缺点:
没有内嵌地理处理器
用的人少
2.2 Open source RS/GIS 模块
1. OGR 矢量库:简单的矢量数据读写,是 GDAL 的一部分
2. GDAL 地理空间数据抽象库: a)读写栅格数据 b)ArcGIS 也是基于
GDAL 开发的 C) C++库,但是可以用 python 调用
2.3 相关模块
1. Numeric:高速的数组处理,对栅格数据尤其重要
2. NumPy:下一代的 Numeric
3. 更强大的 gis 库 http://www.gispython.org/
2.4 导入库
import ogr 或者 from osgeo import ogr
万能的方法是:
try:
from osgeo import ogr
except:
import ogr
要读取某种类型的数据,必须要先载入数据驱动,也就是初始化一个对象,
让它“知道”某种数据结构。
import ogr
driver = ogr.GetDriverByName(‘ESRI Shapefile’)
剩余30页未读,继续阅读
资源评论
奔跑的小豆芽
- 粉丝: 950
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功