今天打算使用GDAL读取MODIS影像数据,由于我的MODIS是HDF4格式,而默认的GDAL是不包含HDF数据驱动的,所以必须重新编译GDAL。
我的开发环境是Ubuntu 14.04,首先安装需要的HDF包。
sudo apt-get install libhdf4-alt-dev libhdf5-dev libnetcdf-dev hdf4-tools hdf5-tools libgeosd-dev libproj-dev
其中,libhdf4-alt-dev,libhdf5-dev,libnetcdf-dev分别是HDF4, HDF5, NetCDF数据的开发库,hdf4-tools和hdf5-tools分别是HDF4和HDF4的命令行工具。libgeos-dev和libproj-dev分别是GEOS和Proj.4的库。
特别需要注意的是:对于HDF4不要安装libhdf4-dev而需要安装libhdf4-alt-dev。我今天刚开始安装的是libhdf4-dev,编译安装都没有问题。但是读数据的时候一直提示打不开HDF4的数据。折腾了好久,最后,网上查询到说是libhdf4-dev包中含有一个NetCDF库的兼容API导致的。
接下来是下载源码进行编译,进入源码目录,执行下面命令。
./configure --with-geos --with-static-proj4 --with-hdf4 --with-hdf5 --with-netcdf --enable-debug
make
sudo make install
将lib库添加到用户环境变量中,我是在~/.profile文件中进行的配置:
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
最后使用sudo ldconfig命令使之生效。
利用其读取MODIS数据如下图: