GDAL简介

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: Geospatial Data Abstraction Library (GDAL)是使用C/C++语言编写的用于读写空间数据的一套跨平台开源库。现有的大部分GIS或者遥感平台,不论是商业软件ArcGIS,ENVI还是开源软件GRASS,QGIS,都使用了GDAL作为底层构建库。

GDAL简介

作者:阿振

邮箱:tanzhenyugis@163.com

博客:https://blog.csdn.net/theonegis/article/details/80089375

修改时间:2018-05-13

声明:本文为博主原创文章,转载请注明原文出处


Geospatial Data Abstraction Library (GDAL)是使用C/C++语言编写的用于读写空间数据的一套跨平台开源库。现有的大部分GIS或者遥感平台,不论是商业软件ArcGIS,ENVI还是开源软件GRASS,QGIS,都使用了GDAL作为底层构建库。

GDAL库由OGR和GDAL项目合并而来,OGR主要用于空间要素矢量矢量数据的解析,GDAL主要用于空间栅格数据的读写。此外,空间参考及其投影转换使用开源库 PROJ.4进行。

目前,GDAL主要提供了三大类数据的支持:栅格数据,矢量数据以及空间网络数据(Geographic Network Model)。

GDAL提供了C/C++借口,并且通过SWIG提供了Python,Java,C#等的调用借口。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。

GDAL不但提供了API借口方便开发人员自定义自己的功能,而且还提供了一系列实用工具(Command Line Tools)可以实现方便快速的空间数据处理。我们可以使用这些实用工具,结合Linux Shell脚本或者Windows批处理脚本进行大批量空间数据的批量处理。

GDAL 1.x版本以前,对于栅格和矢量数据的读写API借口设计是相对分离的,从2.x版本开始,栅格和矢量数据的API进行了集成,对开发者更加友好。我们这里的示例都是以2.x版本为例。

栅格数据组织

GDAL中使用dataset表示一个栅格数据(使用抽象类GDALDataset表示),一个dataset包含了对于栅格数据的波段,空间参考以及元数据等信息。一张GeoTIFF遥感影像,一张DEM影像,或者一张土地利用图,在GDAL中都是一个GDALDataset。

  • 坐标系统(使用OGC WKT格式表示的空间坐标系统或者投影系统)

  • 地理放射变换(使用放射变换表示图上坐标和地理坐标的关系)

  • GCPs(大地控制点记录了图上点及其大地坐标的关系,通过多个大地控制点可以重建图上坐标和地理坐标的关系)

  • 元数据(键值对的集合,用于记录和影像相关的元数据信息)

  • 栅格波段(使用GDALRasterBand类表示,真正用于存储影像栅格值,一个栅格数据可以有多个波段)

  • 颜色表(Color Table用于图像显示)

地理放射变换

放射变换使用如下的公式表示栅格图上坐标和地理坐标的关系:

$$ \begin{matrix} X_{geo} = GT(0) + X_{pixel} * GT(1) + Y_{line} * GT(2) \\ Y_{geo} = GT(3) + X_{pixel} * GT(4) + Y_{line} * GT(5) \\ \end{matrix} $$

($X_{ge0}$, $Y_{ge0}$)表示对应于图上坐标($X_{pixel}$, $Y_{line}$)的实际地理坐标。对一个上北下南的图像,GT(2)和GT(4)等于0, GT(1)是像元的宽度, GT(5)是像元的高度。(GT(0),GT(3))坐标对表示左上角像元的左上角坐标。

通过这个放射变换,我们可以得到图上所有像元对应的地理坐标。

参考资料:GDAL Data Model

矢量数据组织

GDAL的矢量数据模型是建立在OGC Simple Features规范的基础之上的,OGC Simple Features规范规定了常用的点线面几何体类型,及其作用在这些空间要素上的操作。

OGR矢量数据模型中比较重要的几个概念:

  • Geometry(OGRGeometry类表示了一个空间几何体,包含几何体定义,空间参考,以及作用在几何体之上的空间操作,几何体和OGC WKB,WKT格式直接的导入导出)
  • Spatial Reference(OGRSpatialReference类表示了空间参考信息,各种格式的空间参考的导入导出)
  • Feature(OGRFeature类表示空间要素,一个空间要素是一个空间几何体及其属性的集合)
  • Layer(OGRLayer表示一个图层,一个图层中可以包含很多个空间要素)
  • Dataset(GDALDataset抽象类表示一个矢量数据,一个Dataset可以包含多个图层)

总结一下:一个数据集(Dataset)可以包含多个图层(Layer),一个图层中可以包含多个空间要素(Feature),一个Feature由一个空间几何体(Geometry)及其属性构成

参考资料:OGR Architecture

目录
相关文章
|
Linux 数据处理 iOS开发
Python空间数据处理环境搭建
常用的空间数据处理Python库 GDAL 全能型的基础空间数据处理库 fiona 基于GDAL的空间矢量数据处理库 rasterio 基于GDAL的空间栅格处理库 basemap 基于matplotlib的空间制图库 GeoPandas 基于pandas的空间数据分析库 RSGISlib 针对遥感数据及GIS分析的高级库
134 0
|
7月前
|
编译器 数据处理 Python
Anaconda下Python中GDAL模块的下载与安装方法
Anaconda下Python中GDAL模块的下载与安装方法
364 1
|
XML 数据管理 编译器
Qt+GDAL开发笔记(二):在windows系统msvc207x64编译GDAL库、搭建开发环境和基础Demo
上一篇使用mingw32版本的gdal,过程曲折,为更好的更方便搭建环境,在windows上msvc方式对于库比较友好。
|
XML 数据管理 Linux
Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo
麒麟系统上做全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了另一个shang市公司项目使用WG,最终选择了GDAL库进行转换。
|
机器学习/深度学习 自然语言处理 Serverless
OpenCV简介与安装
OpenCV简介与安装
270 0
|
编译器 数据处理 Python
Anaconda环境配置Python GDAL库
本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法~
346 1
Anaconda环境配置Python GDAL库
|
编译器 Python
Python 3安装GDAL库总结
Python 3安装GDAL库总结
937 0
Python 3安装GDAL库总结
|
Python
Python模块化简介
Python模块化简介自制脑图 介绍了模块化定义和模块化优点。 模块化: 模块化指将一个完整的程序分解为一个一个小的模块。通过将模块组合,来搭建出一个完整的程序。 简单理解: 不采用模块化就是统一将所有代码编写到一个文件里 采用模块化就是将程序分别编写到多个文件中。
94 0
Python模块化简介
|
Linux 定位技术 数据格式
Python与开源GIS:开始使用GDAL
Python与开源GIS:开始使用GDAL
307 0
安装gdal:
安装gdal:
182 0