一、linux下的安装和使用
1.安装
下载源程序包 ,解压,运行以下三条命令
./configure make make install
在/usr/local/lib目录下会出现编译好了的相关gdal库,我用的redhat linux下的一个问题是/usr/local/lib目录不在库的查找路径中,因此链接时会出现找不到gdal库的问题。有人认为这是redhat的一个bug ,但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 (0x00871000)
解决办法如下
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/libtool@gnu.org/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中。
安装程序会在/Library/Python/2.5/site-packages目录下增加一个gdal.pth文件,该文件中指定了上述gdal的python库位置所在。
安装Python2.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 x86
__ia64__对应着 Linux IA64
更多的参见: 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. HDF4的支持:从源代码编译安装HDF4
4.1 前提
在ubuntu中编译hdf4的时候需要yacc和flex
如果configure时出现错误:
cannot find yacc utility
要安装byacc
sudo apt-get install byacc
4.2 HDF4需要安装第三方支持库: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
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 hdf4的编译安装
需要指定安装目标路径(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
将HDF4库配置安装在/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
相关推荐
详细描述了GDAL安装与使用,可供广大用户使用。
这是一个关于GDAL安装和设置的文件 帮你建立起成功的 GDAL开发环境,是在VC6下 进行安装和设置的
资料里有gdal下载地址及安装方法,另外还有phyton等库的安装
python及gdal安装说明和问题解决方法
GDAL 1.4.2 安装文档 详细,经过本人实践多次,不会遗漏
gdal在linux上安装需要的文件比较多,附件包含gdal2.2.3及依赖的文件: proj-4.9.3.tar.gz geos-3.6.2.tar.gz jpegsrc.v9b.tar.gz hdf-4.2.13.tar.gz hdf5-1.10.1.tar.gz netcdf-4.4.1.tar.gz gdal-2.2.3.tar....
GDAL下载版本为3.4.3,含有python3.9两个版本的安装包。安装适合自己需求可以访问链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap下载对应安装包;
教你怎么使用GDAL类库,来读图像的信息,保存图像。
在ubuntu 10.04下编译JAVA可用的GDAL 1.6,还包括遥感影像提取元信息和缩略图的示例代码,编程平台为ECLIPSE 3。6
很多同学在接触卫星或者无人机数据是,都会接触到tif格式的影像,一般的图片读取方法都打不开tif格式的影像,利用GDAL库则可以完成此功能,详细配置过程可以参考我的博客
windows gdal 安装 gdal-304-1916-core.msi
使用GDAL源码版本GDAL1.9.2,目标是将GDAL编译成支持Win64位的JAVA应用程序的类库。并且举例使用
如果你想处理栅格数据,gdal库是很好的工具,里面有不同版本的gdal的whl安装文件,由于官网下载超慢,所以提供下载
有很多著名的GIS类产品都使用了GDAL/OGR库,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系统。利用GDAL/OGR库,可以使基于Linux的地理空间数据管理系统提供对矢量和栅格文件数据的支持。
python3.8版本使用pip命令安装geopandas库所需的GDAL库和Fiona库的whl文件。
Python2.7 GDAL(win7 64位平台)之安装
本文件的内容是作者在网络上搜集GDAL资料,在实践的基础上进行了实践,并将所有搜集到的GDAL攻略在实践的基础上对内容进行总结,网络上的...对GDAL的学习和使用进行比较全面的介绍,希望对学习和使用GDAL的朋友有所帮助
文档内容都可以在网络上搜索到,我只是把我试过并且成功了的方法记录下来。 GDAL在vs2008 C#中的编译、安装和使用的一些方法和注意事项。希望对大家有所帮助
因为官网下载太慢了,所以我免费挂在这里给大家使用,毕竟不是我开发的。 另附Pycharm中配置GDAL的步骤(在我的博客中搜索Pycharm即可)
这是关于gdal库的安装的一个文档,希望对大家有帮助。