|||
对于Linux初级用户来说,采用编译源码的方式安装软件并非易事。特别是一些科研软件,一方面自述文档极其简略,另一方面用户少,找不到合适的攻略(ps:之前最详细的一份攻略中,老外也忍不住吐槽LEDAPS文档太粗糙http://karthur.org/2015/ledaps-installation-ubuntu.html),一些配置错误可能折腾很久。最近在Fedora23下安装LEDAPSv1.3.0花了近4天时间,走了很多弯路。有必要记录下详细步骤,分享给需要的人。
1. LEDAPS简介
该系统本身就是面向批量处理而设计,只需要输入解压好的Landsat影像,就会输出校正后的地表反射率。
LEDAPS(The LandsatEcosystem Disturbance Adaptive Processing System)是NASA的一个研究大陆区域森林扰动等的项目。该系统利用为MODIS开发的大气校正方法对Landsat进行处理。方法采用的是6S模型,其输入需要水汽和臭氧浓度等辅助参数。这些参数利用传统方法获取成本较高,LEDAPS通过NCEP(National Centers for Environmental Prediction,美国国家环境预报中心)水汽数据,TOMS(Total Ozone Mapping Spectrometer,臭氧总量探测仪)臭氧数据产品作为参数,使得模型有了标准化的大气参数。对于精度,研究显示,在全球范围,使用LEDAPS估算的Landsat地表反射率数据同MODIS地表反射率产品具有高度的一致性,其均方根误差(Root Mean–Squared Deviation, RMSD)介于1.3-2.8。
这里采用的LEDAPS系统为1.30版,代码下载地址为(http://code.google.com/p/ledaps/)。安装包分两部分:
(1)ledaps.tar.gz即系统源代码;
(2)ledapsAnc.1980-2010.tar.gz等,即各个年份的辅助参数。
2. Linux下安装应用简介
熟悉Linux的人请忽略本节。
通常,Linux的安装包有两类:
(1)打包的可执行程序:
优点是方便,缺点是不能灵活定制。
类似windows下的安装包,如:rpm包(后缀.rpm),是RedhatLinux(Fedora)提供的一种包封装格式。dpkg包(后缀. deb),如software-1.2.3-1.deb。它是Debain Linux(Ubuntu, Linux Mint)提供的一种包封装格式。
(2)打包的源代码
优缺点与前一类相反
为tar包,通常压缩完后缀为.tar.gz、.tar.Z等,通过“tar zxvf文件名”来解压,然后分三步安装:
#注意,部分时候,安装前还需要配置一些其他信息
1)执行“./configure --prefix=… --with-…=…”为编译和链接设置参数;其中,prefix用来指定软件将要安装的位置,with指定依赖包的安装目录。
2)执行“make”编译源代码
3)执行“make install”安装软件
#安装完还可以用“makecheck”或“make test”测试安装结果,如果源码提供了测试。
Linux新手还可以参考这篇博文:
http://www.cnblogs.com/jyginger/archive/2010/07/25/1784599.html
3. LEDAPS各种依赖包的配置与安装
注意:Ledaps安装的难点主要在这部分
(1)各种依赖包的准备
Ledaps的readme只说系统本身依赖的包有:HDF-EOSGCTP, HDF4, HDF-EOS2, TIFF, GeoTIFF。它没说而又值得注意的是:
1)这些被依赖的包还依赖一些其他的包:所以还要加上JPEG, SZIP, ZLIB, PROJ4这四个包(依赖关系参见后面的安装配置)。
2)HDF-EOS GCTP和HDF-EOS2其实都在HDF-EOS包里面。而HDF和HDF-EOS名字相近,是两个独立包(HDF-EOS依赖HDF)。
3)需要特别注意各个包的版本号,应按照从后往前的顺序,看需要什么版本依赖包去对应下载,不是越新越好。例如,hdf-4.2.10依赖jpeg-6b,jpeg-6b里面坑较多,安装麻烦。尽管jpeg-9a的bug少容易配置,但会导致hdf编译通不过“make check”!
(2)安装配置
以下是各安装包的配置(./configure)方法,一些额外配置(填坑记录!)会加#号说明。
先从最简单的zlib开始,斜体为通用步骤,每个包安装都需要,不再累述。
1) zlib
cd /usr/local
sudo mkdir zlib
sudo chown USERNAME zlib 注意,USERNAME是你的linux账户名哦
tar zxvf zlib-1.2.8.tar.gz
./configure --prefix=/usr/local/zlib
make
make install
make check
make clean
安装成功后,会看到/usr/local/zlib 目录下多了inlucde, bin,lib, man几个目录
接下来重复的步骤不再累述,只介绍最关键的configure和特殊情况
2) szip
./configure --prefix=/usr/local/szip
3) jpeg-6b
#坑1. jpeg-6b包居然需要自己建目录,否则安装失败。所以,记得在安装目录下输入sudo mkdir include bin lib man man/man1
./configure --prefix=/usr/local/jpeg --enable-shared=yes --enable-static=yes
#坑2. 有时还会遇到错误,如Fedora23下configure失败,提示”checkinghost system type… Invalid configuration ‘x86_64-unknown-linux-gnu’: machine‘x86_64-unknown’ not recongnized”。此时,需要将libtool这个包(没有的话先安装)目录(libtool/build-aux/)下的configure.guess和configure.sub拷贝到jepg源文件目录下,然后configure。详情还可以参考 http://blog.csdn.net/php_boy/article/details/7382998
4) tiff
./configure --prefix=/usr/local/tiff --with-jpeg-include-dir=/usr/local/jpeg/include --with-jpeg-lib-dir=/usr/local/jpeg/lib --enable-shared=yes --enable-static=yes --with-zlib-include-dir=/usr/local/zlib/include --with-zlib-lib-dir=/usr/local/zlib/lib
#坑3. 大多数包只需要指定一个包的根目录,唯有tiff需要单独指定其include和lib。所以每次安装前记得查看安装包中的configure文件,了解--with后面的格式。
5) proj4:
./configure --prefix=/usr/local/proj4 --enable-shared=yes --enable-static=yes
6) libgeotiff:
./configure --prefix=/usr/local/geotiff --with-libtiff=/usr/local/tiff --with-proj=/usr/local/proj4 --with-zlib=/usr/local/zlib
#坑4. 我用的libgeotiff1.3.0,一旦加上--with-jpeg=/usr/local/jpeg就会configure失败。
7) hdf4:
./configure --prefix=/usr/local/hdf --enable-shared=yes --enable-static=yes --with-szlib=/usr/local/szip --with-zlib=/usr/local/zlib --with-jpeg=/usr/local/jpeg --disable-fortran
#坑5. 一定记得--disable-fortran
8) hdfeos:
#坑6. 尽管通过--with指定了szip和zlib的目录,但安装包就是找不到,解决办法是configure前输入export LD_LIBRARY_PATH=/usr/local/szip:/usr/local/zlib
./configure CC=/usr/local/hdf/bin/h4cc --enable-install-include --prefix=/usr/local/hdfeos --with-szlib=/usr/local/szip --with-zlib=/usr/local/zlib --with-hdf4=/usr/local/hdf --with-jpeg=/usr/local/jpeg
#坑7.如果通过--prefix指定了安装目录,则HDF-EOSGCTP和HDF-EOS2都会在该目录下的include和lib目录下。如果没有指定,则会分别安装到源码目录下的gctp和hdfeos2目录中。
如果顺利越过7个坑,安全的装上8个包,恭喜,可以安装ledaps了。
4. LEDAPS安装
相对上面容易多了,分三步:
(1)解压参数集
将ledapsAnc.1980-2010.tar.gz文件解压到"…/LedapsAnc"目录,并在接下来将该目录赋予ANC_PATH变量。
(2)设置路径
建立一个env.sh文件,添加各个包的路径:
export HDFEOS_GCTPINC="/usr/local/hdfeos/include"
export HDFEOS_GCTPLIB="/usr/local/hdfeos/lib"
export TIFFINC="/usr/local/tiff/include"
export TIFFLIB="/usr/local/tiff/lib"
export GEOTIFF_INC="/usr/local/geotiff/include"
export GEOTIFF_LIB="/usr/local/geotiff/lib"
export HDFINC="/usr/local/hdf/include"
export HDFLIB="/usr/local/hdf/lib"
export HDFEOS_INC="/usr/local/hdfeos/include"
export HDFEOS_LIB="/usr/local/hdfeos/lib"
export BIN="… /ledapsSrc/bin"
export ANC_PATH="…/LedapsAnc"
export PATH=$PATH:"…/ledapsSrc/bin"
然后运行source env.sh。当然,更好的方式是,将这些内容添加到/etc/profile里面,然后注销。这样每次启动都自动保存这些路径。
(3)安装
进入… /ledapsSrc/src目录,输入make和make install就Ok了(根据本人目前的这些设置,lndsrbm仍然无法编译成功,不过不影响得到sr数据,有人知道如何解决还请帮忙指出)。
编译成功后会在… /ledapsSrc/bin下添加lndpm,lndapp, lndcal, lndsr, sixsV1.0B共5个可执行文件。
5. 使用
其中,lndpm是预处理,lndcal是将DN值转化为TOA,lndsr会调用sixsV1.0B,用来计算地表反射率。
实际使用时,直接执行:
csh do_ledaps.csh LT51240462005245BJC00_MTL.txt
*示例文件名,假设do_ledaps.csh和影像在同一目录
等待4分半就会得到hdf格式的sr数据了(i7-47903.9GHZ的cpu,4g内存)。
#坑8. 注意,待处理的Landsat影像前一定不能有目录,否则运行失败。即:
# csh do_ledaps.csh …/somedir/LT51240462005245BJC00_MTL.txt 失败
# csh …/somedir/do_ledaps.cshLT51240462005245BJC00_MTL.txt 成功
如果还有其他问题,请仔细检查《4. LEDAPS安装》是否正确。
6. 版本和下载链接
jpegsrc.v6b http://sourceforge.net/projects/libjpeg/files/libjpeg/
zlib-1.2.8 http://zlib.net/
szip-2.1 http://www.hdfgroup.org/HDF5/release/obtain5.html
tiff-4.0.6 http://www.linuxfromscratch.org/blfs/view/svn/general/libtiff.html
proj-4.9.2 https://github.com/OSGeo/proj.4/wiki
libgeotiff-1.3.0 http://trac.osgeo.org/geotiff/
hdf-4.2.11 http://www.hdfgroup.org/products/hdf4/
HDF-EOS2.19v1.00 http://hdfeos.org/software/library.php#HDF-EOS2
转载请保留以下版权信息:
广州地理研究所 姜浩 原创
jianghao_rs@outlook.com(一般交流);jianghao@gdas.ac.cn(学术交流)
http://blog.sciencenet.cn/blog-2919002-937921.html
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-8 14:30
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社