GDAL简介

4 阅读3分钟

GDAL学习笔记(一)--GDAL简介

在我印象中一直是个单纯的python第三方库,在之前的数据处理过程中也完全是需求导向——需要了再查,拿来就用,一直停留在非常浅层的了解程度。最近看了几篇文章才慢慢了解到GDAL库的重要性,因此打算进行系统的学习整理。 首先是对GDAL做一个简单的了解,为什么要学习GDAL,GDAL有什么用处呢?

GDAL,全称Geospatial Data Abstraction Library,即地理空间数据抽象库,是一个在X/MIT许可协议下读写空间数据的开源库,可以通过命令行工具来进行数据的转换和处理。而在调用中我们常用的[OGR]则是GDAL的一个子项目,实现了一个对空间参考信息进行处理的类。这其中,GDAL主要支持对栅格数据的处理,而OGR主要进行矢量数据的处理,二者通过一个生成系统进行维护,合称为GDAL,用于很多著名的GIS产品(例如[ArcGIS]等)的底层,支持python、C、R等各种语言的API。

使用gdal能给我们带来什么呢?举一个很简单的例子,也是我在数据处理中常见的情况,如果我有一个区域的多年影像数据,我需要对他们进行相似的预处理步骤,那么使用GDAL编写程序进行处理显然要比一个一个操作快捷的多,可以省却重复的多步操作过程,高效地进行数据处理。另外我们也可以使用gdal在python中直接进行数据类型转换、数据读写等操作,这会大大提高提高我们数据处理的效率。

另外,在GDAL的应用中,涉及到投影和大地测量转换的问题时,可以使用[PROJ]库解决,他支持一百多种不同的地图投影,可以通过命令行或者API直接调用。下面简单介绍一下GDAL支持的三大类数据:栅格数据、矢量数据和地理网络数据。

栅格数据

GDAL中使用dataset表示一个栅格数据,其中包含了栅格数据的波段、空间参考、元数据等信息,共同构成了栅格数据集[GeoTIFF]。数据集含有栅格大小的概念,适用于所有波段,负责所有波段的地理参考变换和坐标系定义,本身也可以有关联的源数据。

矢量数据

OGR为矢量数据提供了矢量数据模型,其中主要包括:特征/特征定义(OGRGeometry)、层(OGRLayer)、数据集(GDALDataset)等。

地理网络数据(Geographic Network Model)

任何现实世界中的网络都可以表示为一组矢量数据,而矢量数据本身可以表示为dataset,由网络部分(网络的拓扑、网络的源数据等)和空间/属性部分(GDAL层、特征、几何图形)组成。