gdalのインストールと使用


一、linuxでのインストールと使用
1.インストール
ダウンロードソースパッケージ、解凍、次の3つのコマンドを実行
./configure
make
make install

/usr/local/libディレクトリの下にコンパイルされた関連gdalライブラリが表示されます.私が使用しているredhat linuxの下の問題は、/usr/local/libディレクトリがライブラリの検索パスにないため、リンク時にgdalライブラリが見つからないという問題です.これはredhatのバグだと考えられていますが、redhatはわざとこのようにしたと説明しています.開発者は自分でライブラリ検索ディレクトリにパスを追加することを提案しています.
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf

/sbin/ldconfig

 
 
また、pythonバージョンのgdalをmake時にインストールするには、次の構成コマンドを使用します.
 
./configure --with-python

エラーが発生した場合:
 
extensions/gdal_wrap.cpp: error: Python.h: No such file or directory

これはpython-devがないため,本稿の末尾を参照する.
 
2.使用
2.1 gdalライブラリ接続の問題
私が使用しているRetHat linuxでgdalが正常にインストールされると、関連するライブラリも/usr/local/libディレクトリにコピーされます(このディレクトリはシステムのデフォルトのロードパスではないので、libgdal.soライブラリをどこでロードするか分かりません)、ライブラリパスを指定する必要があります:プログラムが実行時にこれらのライブラリを見つけることができます
実行中に次のエラーが発生した場合:
 error while loading shared libraries: libgdal.so.1: cannot open shared object file: No such file or directory
説明システムはgdal共有ライブラリのロードパスを知らないで、lddコマンドを実行してプログラムが正常に実行するために必要な共有ライブラリをリストします
ldd test.o
[root@test]# ldd a.out        /usr/lib/libcwait.so (0x0054f000)         libgdal.so.1 => not found         libstdc++.so.6 =>/usr/lib/libstdc++.so.6 (0x00b42000)         libm.so.6 =>/lib/tls/libm.so.6 (0x009b5000)         libgcc_s.so.1 =>/lib/libgcc_s.so.1 (0x00b03000)         libc.so.6 =>/lib/tls/libc.so.6 (0x0088a000)        /lib/ld-linux.so.2(0 x 00871000)解決策は以下の通りです.
a.環境変数を設定する:
$LD_の設定LIBRARY_PATH=ライブラリが存在するディレクトリ(複数のディレクトリ用:区切り)、システムロードツールは変数が指定したディレクトリを順番に検索する
LD_LIBRARY_PATH=/usr/local/lib:/usr/local/erlang/lib; export LD_LIBRARY_PATH

b.  rootとしてライブラリパスを/etc/ld.so.confに追加
vim/etc/ld.so.conf.d/gdal.conf
このファイルに次のパスを追加します.
/usr/local/gdal-1.5.1/.libs
次にldconfig更新/etc/ld.so.cache/sbin/ldconfigを実行します.
c.
gdal関連ライブラリを/usr/libに直接コピー
共有ライブラリの検索順序は通常$LDLIBRARY_PATH,/etc/ld.so.cache,/usr/lib,/lib
参照:Linuxプログラミングライブラリ
2.2 GDALライブラリを使用したC++プログラムのコンパイル
次のコマンドを実行します.
g++ test.cpp -lgdal -o test.o 

 
 
二、Mac OS Xでのインストールと使用
 
1.ソースコードから直接コンパイルインストール
ソースコードをダウンロードした後./configure&make&sudo mak install
32位の古いmac以上でいいのですが、
 
64ビットのmacの場合、上記のコマンドでインストールをコンパイルすると、64ビットのダイナミックライブラリと関連gdalプログラムしか生成されません.次のコマンドでconfigureをコンパイルしてインストールできます.
./configure CFLAGS="-arch i386 -arch x86_64"CXXFLAGS="-arch i386 -arch x86_64"LDFLAGS="-arch i386 -arch x86_64" --disable-dependency-tracking
 
これにより、32ビットと64ビットを同時にサポートするダイナミックリンクライブラリが生成されます.
ここを参照:
 
[1] http://www.kyngchaos.com/macosx/build/gdal
[2] http://www.mail-archive.com/[email protected]/msg12306.html
 
2.dmg取付
William KyngesburyeはGDALのMac OS X frameworkを維持した.
指示に従ってインストールすれば良い、アンインストールするとそのまま/Library/Framework/GDAL.framework、/Library/APplication Support/GDAL、~/Library/APplication Support/GDALを紙くずかごに捨てる
2.1
 
インストールに成功すると、インストールディレクトリ(/Library/Frameworks/GDAL.framework/)の下にLibrariesディレクトリはありません.
共有ライブラリでプログラムを使用する場合は、インストールディレクトリ(/Library/Frameworks/GDAL.framework/)にシンボル接続を追加する必要があります.
 
cd /Library/Frameworks/GDAL.framework/
sudo ln -s Versions/Current/Libraries/ Libraries

これにより、Macの下でGDALを使用した共有ライブラリを作成できます. 
 
2.2 Pythonのサポート
インストールに成功すると、インストールディレクトリ/Library/Frameworks/GDAL.frameworkの下にVersions/1.6/Pythonがあり、gdalのpythonライブラリはこのディレクトリのsite-packagesにあります.
インストーラは、上記のgdalのpythonライブラリの場所を指定したgdal.pthファイルを/Library/Python/2.5/site-packagesディレクトリに追加します.
Python 2.6をインストールすると、インストーラが自動的に2.6にgdalのインストールパスを指定しないため、2.6でgdalライブラリを使用するには、Python 2.6のインストールディレクトリのsite-packagesに上記gdal.pthファイルを追加する必要があります.
3.使用
GDALライブラリを使用した実行可能なC++プログラムのコンパイル:
g++ gdal_test.cpp -framework GDAL
 -o gdal_test.o

 
GDALライブラリを使用した共有ライブラリを生成するCプログラムのコンパイル:(gcc 4.2.1)
 
gcc -o GDAL_drv.so \
-fpic -shared -flat_namespace -undefined suppress -fno-common \
GDAL_drv.c spectrometer.c \
 -framework GDAL

 
 
に注意
 C/C++プログラムのincludeにGDAL/を付ける 
 
#include "GDAL/ogrsf_frmts.h"

 
三、クロスプラットフォームコンパイル
3.1ソースコードでの処理
プリプロセッサのテクニックを使用して処理プラットフォームの違いを区別し、コンパイルされたOSプラットフォームを表すマクロを異なるプラットフォームで定義します.たとえば、次のようにします.
Mac OSプラットフォームの下でマクロ_APPLE_を定義します.
Linuxではマクロ_linux_が事前定義されています.
FreeBSDの下に__FreeBSD__があります
Unixではマクロ_unix_が定義されています
 
異なるプロセッサでもマクロ対応、例えば
__i386__および__X86_64__はLinux x 86に対応する
__ia64__LinuxIA 64に対応
 
詳細については、以下を参照してください.http://dev.csdn.net/article/63/63391.shtm
 
例:
#ifdef __APPLE__
	#include "GDAL/ogrsf_frmts.h"
#elif defined(__linux__)
	#include "ogrsf_frmts.h"
#endif

 
Macでコンパイル
g++  -framework GDAL test.cpp -o test.o

 
 
linuxでのコンパイルは変更されません
 
g++ test.cpp -lgdal -o test.o

 
3.2構築ツールでの処理
プラットフォームによって異なるコンパイルコマンドがある場合があります.makefileは区別されます.たとえば、コンパイルリンク共有ファイルオブジェクト(shared object)のコマンドパラメータはlinuxとMaxOSXでは異なり、uname-sのshellコマンドでプラットフォームを区別できます
myos := $(shell uname -s)
ifeq ($(myos),Linux)
CFLAGS = -shared
else
CFLAGS = -bundle -undefined suppress -flat_namespace
endif

gcc -std=c99 -fPIC $(CFLAGS) -o $@ $<

 
 
四、その他の問題
1.geosのサポート
geosライブラリはJTSのC/C++版で、ジオメトリを操作するにはgeosライブラリをインストールする必要があります.geosライブラリはgdalの前にインストールする必要があります.
geosライブラリを正しくインストールすると、gdalのconfiugreが完了すると次のように表示されます.
GEOS support: yes
 
2.python対応gdal
構成時に--with-pythonパラメータを追加すればいいです.
./configure --with-python
 
次のエラーが発生した場合:
 
error: Python.h: No such file or directory

python-devがインストールされていない理由です
 
まずpythonバージョンを確認します
$ python -V
Python 2.7.2+
 
バージョンに基づいてpython-devをインストールするには、次のように選択します.
$ sudo apt-get install python2.7-dev
 
numpyのインストールが望ましい
sudo apt-get install python-numpy
 
otherwise:
import _gdal ImportError: No module named _gdal
 
 
ソースコードからpythonをインストールするには:
ソースコードをダウンロードし、configure->make->make install後、python-V表示を実行
 
gdalライブラリの場所を指定する必要があります.前のように、必要に応じてldconfigを実行します.
gdalのswig/pythonディレクトリで実行
python setup.py build
python setup.py install
 
モジュールが正しく取り付けられているかどうかを確認します
pyhon環境で動作
 
from osgeo import ogr
 
3.64ビットlinux下build次のエラーが発生した場合
/usr/lib/libexpat.so: could not read symbols: File in wrong format
つまりexpatは32ビットで64ビットマシンではできません.configureで生成されたGDALmake.optが正しいファイルを指しているか、confiugreでexpatを使わないように指定できますが、KMLやGPXはサポートされていません
 
独自のexpatを使用してコンパイルできます.  次のパラメータを設定します.
./configure --with-expat=buildin
 
 
 
 
4.HDF 4のサポート:ソースコードコンパイルからHDF 4をインストールする
 
4.1前提
ubuntuでhdf 4をコンパイルする場合はyaccとflexが必要です
 
configureでエラーが発生した場合:
cannot find yacc utility
byaccをインストールするには
sudo apt-get install byacc
 
 
4.2 HDF 4サードパーティサポートライブラリのインストールが必要:szip jpegなど
 
これらをすべて/usr/localにインストールし、hdfインストール構成時に(--prefix=...)これらのサードパーティライブラリのインストールパスを指定し、gdalインストール構成時にhdfのインストールパスを指定するポリシーです.
 
4.2.1 szipライブラリのインストール
szipライブラリのサポートを選択できます.makeがszipをインストールする場合、デフォルトは現在のszipソースファイルディレクトリの下にインストールされますので、インストールパスを指定したほうがいいです.
./configure --prefix=/usr/local/szip-2.1
 
 
4.2.2 jpegサードパーティライブラリのインストール
http://www.hdfgroup.org/ftp/lib-external/jpeg/src/jpegsrc.v6b.tar.gz
 
 
./configure --prefix=/usr/local/jpeg6b --enable-shared --enable-static

 
調べてみると、このjpegライブラリのソースコードは1998年にリリースされたようです.コンパイルインストール時に次の2つの問題が発生する可能性があります.
1)libtoolの問題
64ビット環境でmake中にlibtoolエラーが発生し、apt-getでlibtoolをインストールし、インストールディレクトリの下にlibtoolへのソフトリンクを作成できます.
ln -s `which libtool` libtool
これでmakeできます
 
2)手動でターゲットディレクトリを作成する
ただし、make installの前に、以下のディレクトリを手動で作成する必要があります.
sudo mkdir -p /usr/local/jpeg6b/bin  /usr/local/jpeg6b/include /usr/local/jpeg6b/lib /usr/local/jpeg6b/man/man1 
 
sudo make install
 
 
4.2.3 zlibライブラリのインストール
一般的なシステムにはこのライブラリが付属していますが、バージョンは低い(1.2.3).インストールを継続する場合は、インストールパスをカスタマイズしたほうがいいです.
./configure --prefix=/usr/local/zlib-1.2.5
make 
sudo make install
 
prefixを指定しないと、overrideシステムに付属のzlibがあるため、他のアプリケーションで正常に使用できない場合があります.zlibソースコードにはアンインストールオプションがあります.
sudo make uninstall
 
 
4.3 hdf 4のコンパイルインストール
インストール先パス(prefix)を指定する必要があります.そうしないと、現在のディレクトリにインストールされます.
 
./configure --prefix=/usr/local/hdf-4.2.7 --with-jpeg=/usr/local/jpeg6b --with-szlib=/usr/local/szip-2.1 --enable-shared=yes --enable-static=yes --disable-fortran
 
あるいは、zlib-1.2.5を使い続けると
./configure --prefix=/usr/local/hdf-4.2.7 --with-jpeg=/usr/local/jpeg6b --with-szlib=/usr/local/szip-2.1 --with-zlib=/usr/local/zlib-1.2.5 --enable-shared=yes --enable-static=yes --disable-fortran
 
make 
sudo make install
 
HDF 4ライブラリ構成を/usr/local/hdf-4.2.7ディレクトリにインストール
 
4.4 gdalのコンパイルインストール
./configure --with-python --with-hdf4=/usr/local/hdf-4.2.7
 
make 
sudo make install
 
参照先:
http://www.cnblogs.com/yeahgis/articles/2446336.html
http://www.hdfgroup.org/release4/obtain.html