日期:2014-05-16  浏览次数:20721 次

Linux下使用GDAL进行开发(automake使用)

首先写三个源代码文件,分别是GDALTest.cpp、Fun.cpp和Fun.h,将这三个存放在一个叫GDALTest的文件夹中,然后打开终端,切换到该目录,如下图所示(注:这个图是最后截图的,所以文件夹下面有好多文件,开始应该就只有三个)。

 

三个文件的内容分别如下,这篇文章主要还是想试试使用automake来生成Linux下的编译脚本,所以就写了三个文件,如果想直接用gcc编译的话,直接写一个cpp就可以。本文后面主要内容其实就是如何使用automake的。

Fun.h

#ifndef FUN_H
#define FUN_H
 
void Fun(const char* pszFile);
 
#endif // FUN_H

Fun.cpp

#include "Fun.h"
#include "gdal.h"
#include "cpl_conv.h"
#include "cpl_string.h"
void Fun(const char* pszFile)
{
 GDALAllRegister();
 GDALDatasetH hDataset = GDALOpen(pszFile, GA_ReadOnly);
   GDALDriverH hDriver = GDALGetDatasetDriver( hDataset );
   printf( "Driver: %s/%s\n",
            GDALGetDriverShortName( hDriver ),
            GDALGetDriverLongName( hDriver ) );
   char** papszFileList = GDALGetFileList( hDataset );
   if( CSLCount(papszFileList) == 0 )
   {
       printf( "Files: none associated\n" );
   }
   else
   {
       printf( "Files: %s\n", papszFileList[0] );
   }
   CSLDestroy( papszFileList );
   printf( "Size is %d, %d\n",
            GDALGetRasterXSize( hDataset ),
            GDALGetRasterYSize( hDataset ) );
   double adfGeoTransform[6] = {0};
   if( GDALGetGeoTransform( hDataset, adfGeoTransform ) == CE_None )
   {
       if( adfGeoTransform[2] == 0.0 && adfGeoTransform[4] == 0.0 )
       {
            printf( "Origin =(%.15f,%.15f)\n",
                    adfGeoTransform[0],adfGeoTransform[3] );
            printf( "Pixel Size =(%.15f,%.15f)\n",
                    adfGeoTransform[1],adfGeoTransform[5] );
       }
       else
            printf( "GeoTransform=\n"
                    "  %.16g, %.16g, %.16g\n"
                    "  %.16g, %.16g, %.16g\n",
                    adfGeoTransform[0],
                    adfGeoTransform[1],
                    adfGeoTransform[2],
                    adfGeoTransform[3],
                    adfGeoTransform[4],
                    adfGeoTransform[5] );
   }
   GDALClose(hDataset);
}

GDALTest.cpp

#include <stdio.h>
#include <Fun.h>
int main()
{
 const char* pszFile = "/home/liml/Work/GDALTest/Test.img";
 Fun(pszFile);
}
上面就是源代码编写完成,下面开始就是使用automake这一系列的工具生成makefile脚本文件,最后的结果就是编译的时候与编译GDAL库一样,使用./configure,make,makeinstall三步曲进行编译和安装。

输入autoscan,回车生成文件configure.scan

输入mv configure.scan configure.in,将congfigure.scan文件重命名为configure.in,如下图所示。

接下来输入vim configure.in 或geidtconfigure.in或emacs  configure.in来打开 configure.in文件进行修改。修改后的内容如下,红色字体为修改或者增加部分,截图见下图。

 

#                                              -*- Autoconf -*-
# Process this file with autoconf toproduce a c