1. 什么使GDAL

GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库),在一个X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库,它利用抽象数据模型来表达所支持的各种文件格式,还使用一系列命令行来进行数据转换和处理。

OGR(OGR Simple Features Library)是GDAL项目的一个分支,功能与GDAL类似,只是它提供对矢量数据的读写支持。同时它实现了一个对空间参考信息进行处理的类,用来对空间数据的空间信息进行处理。

GDAL最初是由Frank Warmerdam于1998年开始开发的,在GDAL1.3.2版本之后,正式有开源空间信息基金会(OpenSourceGeospatialFoundation,简称OSGeo)下的GDAL/OGR项目委员会对其进行维护。

很多著名的GIS类产品都使用了GDAL/OGR库,包括ESRI的ArcGIS系列,Erdas2011、Geogle Earth和跨平台的GRASS GIS、Quantunm GIS系统等。

可以通过以下网址,查看哪些软件和产品使用了GDAL
https://trac.osgeo.org/gdal/wiki/SoftwareUsingGdal

2. GDAL的特点

GDAL提供对多种栅格数据的支持,包括Arc/Info ASCII Grid(asc),GeoTiff(tiff)、Erdas Imagine Images(img),ASCII DEM(dem)等格式。

OGR提供对矢量数据格式的读写支持,包括ESRI Shapefiles、S-57、SDTS、PostGIS、Oracle Spatial、Mapinfo mid/mif和Mapinfo TAB等。

GDAL库还提供了一系列算法接口,比如矢量栅格化、栅格矢量化、图像校正算法以及DEM相关的算法接口等:同时对这些算法提供了一系列可以运行的程序或者脚本,方便人们使用。

3. GDAL代码的下载

  • 官网下载地址:

http://download.osgeo.org/gdal

https://github.com/OSGeo/gdal/tree/master/gdal

下载GDAL的Java bindings文件 gdal 文档_帮助文档

  1. alg:该文件夹存放的是GDAL库中提供的一些算法的源代码,这些算法包括但不限于:DEM生成的等高线算法,图像纠正算法(几何纠正、TPS纠正、RPC纠正等),栅格矢量化算法,矢量栅格化算法,格网计算算法,PCT和RGB互转算法,分类图的小碎斑块去除算法等。
  2. apps:该文件夹中存放的是GDAL库中提供的一些命令行工具集的源代码。后面会对这些工具做一个简单的说明,其中有些工具非常有用,比如gdalinfo,可以用来查看图像的元数据信息等。
  3. bridge:该文件夹中存放的是用来连接GDAL抽象类的定义于GDAL自己的结构体定义及其实现的源代码。
  4. data:该文件夹中存放的是GDAL库中需要用到的一些“配置文件”,这些文件主要有ESRI的投影文佳佳,ESPG的投影文件,PCI的投影和椭球体文件,AutoCAD的DXF格式的头文件等。
  5. doc:该文件夹存放的是用来生成GDAL帮助文档的一些dox文件。dox文件是使用doxygen工具来进行生成的,后面我们会对doxygen工具做一个简单的介绍,并且说明在自己的工程中怎样使用doxygen生成程序的开发帮助文档。
  6. frmts:这个文件夹可以说是GDAL代码中内容最多的一个文件夹了,每次更新GDAL的版本后这个文件夹中都会多出几个文件夹,同时在GDAL支持的文件格式中也会多出来几个新的文件格式。
  7. gcore:这个文件夹是GDAL的灵魂所在,主要存放GDAL抽象类的数据集,图像,波段的读写接口都在这个里面实现的。如果想要知道GDAL的抽象类是怎么对图像格式进行抽象的,可以看看这个文件夹中的代码。
  8. html:这个文件夹主要用来存放GDAL生成的帮助文档,使用doxygen工具生成的GDAL帮助文档会出现在这个文件夹中
  9. m4:这个文件夹存放的是以m4为后缀名的文件。m4文件叫Macro Processor Library,是编译基础中最核心的为文件,这个文件主要是用autoconf来生成configure配置文件,继而自动生成makefile文件。这个文件夹在Windows平台下没有用。
  10. man:该文件夹是用来生成Linux或者其他平台下的帮助文件,Windows平台下也没有用。
  11. ogr:GDAL和OGR曾经是两个库,GDAL库负责读写栅格数据,OGR库负责读写矢量数据,然而GDAL的算法库中经常会用到矢量数据的读取,将这两个库分开会造成不变,所以两个库整合到了一起,OGR库就是GDAL库的一个子集。
  12. port:该文件夹中存放的是CPL库的东西,CPL是一个GDAL的底层支持库,CPL库中定义了一些字符串的操作、文件处理、网页请求、数据库连接、哈希表、字符加密、文件压缩等基础的函数。
  13. swig:该文件夹主要存放swig的脚本。SWIG全称叫Simplified Wapper and Interface Generator,官网地址是:http://www.swig.org/。SWIG的作用就是将C/C++写的库封装成Python、C#、Java、Perl和Ruby等其他语言的访问接口。GDAL的C#版本就是使用swig编译出来的。
  14. vb6:这个文件夹用来将GDAL编译成一个VB6的模块,对于里面具体的文件说明以及如何编译参考文件夹中的readme.txt

文件夹用来将GDAL编译成一个VB6的模块,对于里面具体的文件说明以及如何编译参考文件夹中的readme.txt

  1. wince:这个文件夹中的文件就是用来编译Windows CE平台下的GDAL库的