GDAL / OGR 学习手册 | 前言

一、GDAL / OGR简介

在这里插入图片描述
GDAL 全称 Geospatial Data Abstraction Library,是一个在 X/MIT 许可协议下读写空间数据的开源库。该项目由 Frank Warmerdam 教授于 1998 年发起。它利用抽象数据模型来表达所支持的各种文件格式,还有一系列的命令行工具来进行数据转换和处理。

OGR 全称 OpenGIS Simple Features Reference Implementation,是 GDAL 的一个子项目,提供对矢量数据的支持。同时它实现了一个对空间参考信息进行处理的类,用来对空间数据的空间信息进行处理。

GDAL 提供了一整套读写不同栅格数据格式功能的抽象类库, 而 OGR 是一个读写诸多矢量数据格式功能的抽象类库。两大类库用同一个生成系统进行维护,且作者均为Frank Warmerdam,因此通常把这两个库合称为 GDAL / OGR ,或者简称为 GDAL

在这里插入图片描述

GDAL / OGR 使用 C/C++ 编写,因此该库在支持百余种格式的同时,还具有很高的执行效率。GDAL / OGR 同时还提供多种主流编程语言的绑定,除了 C 和 C++ 之外,用户还可以在 Python、Java、C# 等语言中调用 GDAL / OGR,这令 GDAL / OGR 的应用变得非常广泛。

二、GDAL / OGR 核心功能

  • 栅格/矢量数据格式读写
    • 栅格格式:GeoTiff(tiff)、Erdas Imagine Images(img)、ASCII DEM(dem)等数百种格式
    • 矢量格式:ESRI Shapefiles、PostGIS、GeoJSON等近百种格式
  • 地理空间数据格式转换
  • 地理空间处理: 图像校正、影像镶嵌、重投影、DEM 处理等

三、关于本专栏

在这里插入图片描述

现如今,几乎所有的 GIS 产品都使用 GDAL / OGR 作为底层数据处理库,如ArcGIS、Google Earth、Quantum GIS、GRASS GIS等。掌握 GDAL / OGR 能帮助各位 GISer 通过编写代码来灵活高效地处理地理空间数据,本专栏将以 Python 为例,结合 GDAL / OGR 官方说明文档,依次介绍 GDALOGR 中的常用类和算法,并通过具体的编码示例来帮助大家理解和掌握 GDAL / OGR

四、参考资料


定期更新GIS相关内容
请关注微信公众号 “GISea”
GDAL开发手册API详细说明,内含详细示例代码,适合初学者使用,非常棒的入门书!In pythe Import go from gdalconst import s datasct-gdal. Open( filename, GA ReadOnly if dataset is none 如果 GDALOpen(函数返回NUL则表示打开失败,同时 CPLError(函数产生 相应的错误信息。如果您需要对错误迂行处理可以参考 CPLError相关文档 通常情况下,所有的GDAL函数都通过 CPLError(报告错误。另外需要注意的 是 pszFilename并不一定对应一个实际的文件名(当然也可以就是一个文件 名)。它的具休解释由相应的驱动程序负责。它可能是一个URL,或者是文件 名以后后面带有许多用于控制打开方式的参数。通常建议,不要在打开文件的 选择对话框中对文件的类型做太多的限制。 1.2.获取 Dataset信息 如果GL数据模型一节所描述的,一个 GDALDataset包含了光栅数据的一系列 的泼段信息。同时它还包含元数据、一个坐标系统、投影类型、光枥的大小以 及其他许多信息。 dfGeotransform[0]/米左上角x*/ dfGeoTrans lori[1]/东西方向一个像素对应的距离*/ adfGeotransform[2]/米旋转,0表示上面为北方 adfGeotransform[3]米左上角y*/ adfGeotrans form[4]/*旋转,0表示上面为北方米/ adfGeoTransform[5]/*南北方向一个像素对应的距离*/ 如果需要输出 dataset的基木信息,可以这样: In c+t adfGcotransform[6] printf( Driver: %s/%s\n poDataset->GetDriver(->GetDescription o poDataset->GetDriver()->GetMetadataltem( GDAL DMD LONGNAME)) printr( Size is %dx%dx%d\n poDataset->GetRasterXSizeo, poDataset->GetRasterYSize( poDataset->GetRasterCounto) if( poDataset->GetProjectionRef(!= NULL printf( Projection is %s'n poDataset->GetProjectionRef() if( poDataset->GetGeoTransform( adfGeoTransform one printf( Origin=(%. 6f, %. 6f)\n adfGeoTransform[01, adfGeoTrans form[3]) printf(Pixel Size=(%. 6f, %. 6f)\n adfGcoTransform[1, adfGco Transform[5 In c GDALDriverh dRiver double adfGeoTransform[6] hDriver- GDALGctDatasctDriver( hDatasct printf( Driver: %s /%s\n GDALGetDriver ShortName( hDriver GDALGetDriverlongName ( dRiver)) printf size is %dx%dx%d\n GDALGetRasterXSize( hDataset GDALGetRasterYSize( dAtaset GDALGetRasterCount( hDataset)) if( GDALGetProjectionRef( hDataset )! -NULL printf( Projection is %s\n GDALGetProjectionRef( dAtaset )) if( GDALGetGeoTransform( hDataset, adfGeoTransform )==CE None printf( Origin =(9%.6f, %.6f)\n adfGeo Transform[01, adfGeo Transform[3]) printf( pixel Size=(%. 6f, %.6f)\n adfGeoTransform[1, adfGeoTrans form[5) In Python print Driver:', dataset GetDriver(. ShortName, /', dataset. Get Driver(. Lon
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值