下面进入正题。

笔者的系统为RHEL4。

建议Linux的使用者习惯非root权限的操作,这是一个好习惯,在工作中会很有帮助。

首先安装GDAL依赖库PROJ.4和GEOS。

PROJ.4是提供投影坐标系相关操作的库,GEOS是提供空间分析计算相关的库。都是开源的项目,可以自行Google最新的下载地址。

由于是非root权限,所以需要自行在~/local/目录下创建proj和geos目录(最好带上版本号)。然后将当前操作目录跳转到解压缩后的PROJ.4工程的根目录,如/.../proj-4.8.0。接下来进行源码安装三部曲。

./configure --prefix=/home/users/yourname/local/proj-4.8.0 --without-jni
make
make install

配置的时候注意一定要配置安装路径,由于没有root权限,如果直接安装会失败。而安装路径就是上面创建的目录。这里笔者的机器由于如果包含jni的话编译会报错,所以在配置的时候将其去掉了。原因可能是版本或者Java配置的问题。反正我是用C++来使用GDAL。这里就要多试一试了,如果可以直接编译成功,那就不需要后面的选项了。

然后是安装GEOS,同样的步骤。

./configure --prefix=/home/users/yourname/local/geos-3.4.2
make
make install

安装完依赖库后,开始正式安装GDAL。

还是先跳转到解压后的工程根目录,然后进行三部曲。

./configure --prefix=/home/users/yourname/local/gdal-1.11.1 --with-geos=/home/users/yourname/local/geos-3.4.2/bin/geos-config
make
make install

这里解释一下,在执行完第一行语句后如果看到GEOS support: yes,则证明GDAL有了GEOS库的支持,否则GDAL库中一些功能将无法正常使用。

这里笔者的机器又出现了问题:无法编译通过。报了一个有关cpl_virtualmem.cpp的错误,通过一番查找发现系统的mremap函数的参数和这个文件中的不一致,所以手动修改源码。将cpl_virtualmem.cpp里面的宏定义(如下)注释掉即可。

#define HAVE_5ARGS_MREMAP

如果可以直接编译通过,可以无视上面的啰嗦。

这样安装的过程就基本完成,下面开始配置一些开发需要的环境。

由于GDAL对PROJ.4是动态加载的,所以要将PROJ.4的动态链接库路径加到变量LD_LIBRARY_PATH中,同时将GDAL的bin路径加到变量PATH中。

先用vim打开~/.bashrc文件,在末尾加上下面的代码。

export PATH=$PATH:/home/users/yourname/local/gdal-1.11.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/users/yourname/local/gdal-1.11.1/lib:/home/users/yourname/local/proj-4.8.0/lib

保存退出后,执行source ~/.bashrc才真正的更新了变量。

然后在命令行中输入gdalinfo回车,如果出现提示信息证明安装成功。

下面介绍一下用C++来调用GDAL库的方法。

首先,新建一个GDALTest.cpp文件,内容如下。

1 #include "gdal.h"
 2 #include "ogrsf_frmts.h"
 3 
 4 int main(int argc,char * argv[])
 5 {
 6     RegisterOGRTAB();
 7 
 8     OGRSFDriverRegistrar *registrar = OGRSFDriverRegistrar::GetRegistrar();
 9     int count =registrar->GetDriverCount();
10     printf("Total: %d\n",count);
11     for(int i=0;i<count;i++){
12         printf("%s\n",registrar->GetDriver(i)->GetName());
13     }
14 
15     return 0;
16 }

这段代码的意思是输出OGR驱动。

然后进行编译。

g++ GDALTest.cpp -I ./ -I /home/users/yourname/local/gdal-1.11.1/include -L/home/users/yourname/local/gdal-1.11.1/lib -lgdal -o GDALTest

最后执行./GDALTest,如果看到正常的输出则说明成功。