Skip to content

crazyzlj/RasterClass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RasterClass


  • Raster I/O class based on GDAL and MongoDB (optional).
  • 基于GDAL开源库和NoSQL数据库MongoDB的栅格数据读写类
  • Author: Liangjun Zhu

0 Build status

RasterClass采用CMake进行跨平台代码管理,理论上,支持任何主流操作系统(Windows、Linux、macOS)和编译器(MSVC、GCC、Clang),可编译生成32位和64位程序(操作系统支持的前提下)。

目前测试环境配置采用GDAL-1.10.1+mongo-c-driver-1.5.0+,测试系统及编译器包括:

  • Linux(Unbuntu 14.04) + GCC-4.8: Build Status
  • macOS 10.12 + Clang: Build Status
  • Windows + MSVC 2013 (build x64 version): Build status

Code coverage: codecov

值得一提的是,在64位系统下,可以编译32位或64位程序,此时需要注意对应的GDAL库和mongo-c-driver库都需要编译成64位才可。利用AppVeyor构建的CI测试即全部采用64位编译。

1 Introduction

  • RasterClass提供基本栅格数据的读取。
  • RasterClass提供两种栅格数据读取结果:
    • 二维矩阵方式,矩阵中包含NODATA
    • 一维数组,配合一个行列号索引的二维数组使用,该一维数组为栅格数据按行展开,并排除NODATA值。
  • RasterClass可单独调试,也可作为其他项目的基础类。

2 Install GDAL

2.1 Windows

Windows下GDAL最方便的安装方式应该就是采用Tamas Szekeres's Windows GDAL binaries编译发布的版本。

  • 具体安装请参考博客Installing-gdal-with-python-for-windows

  • 安装完成之后,除了GDAL_DATA外,还需要在环境变量里添加一个GDAL_DIR,赋值为你的GDAL安装目录,如C:\GDAL,以便CMake在编译时能够找得到GDAL依赖库。

  • 为了方便将来程序能够找到GDAL的诸多动态链接库,建议新建GDAL_PATHS环境变量C:\GDAL;C:\GDAL\bin;C:\GDAL\bin\proj\apps;C:\GDAL\bin\gdal\apps;C:\GDAL\bin\ms\apps;C:\GDAL\bin\curl;,并将%GDAL_PATHS%添加至环境变量PATH中。

2.2 On Linux

以CentOS为例 (Take CentOS as example)

  • 源码编译安装GDAL后,新建环境变量export GDAL_ROOT=<GDAL_root_path>, 如export GDAL_ROOT=/soft/share

2.3 On macOS

macOS下推荐使用William Kyngesburye维护的Framework安装包,最新的为GDAL_Complete-1.11.dmg

  • GDAL将安装在/Library/Frameworks/GDAL.framework

  • 同时,测试python的GDAL包是否安装成功:

     >>> import osgeo
     >>> osgeo.__version__
     '1.11.4'
     >>> from osgeo import ogr
     >>> from osgeo import osr
     >>> from osgeo import gdalconst
     >>> from osgeo import gdal_array
     >>> from osgeo import gdal

3. 单元测试

  • RasterClass采用CMake进行跨平台编译。
  • RasterClass采用Google Test单元测试框架。
  • RasterClass需调用UtilsClass,编译前需将其保存至RasterClass同级目录下。
  • 如需添加MongoDB数据库相关操作,RasterClass支持对MongoUtilClass的依赖, 同样地,将其保存至RasterClass同级目录下,mongo-c-driver的相关配置请参阅 MongoUtilClass库的相关帮助。
  • 所有单元测试代码统一存放在test文件夹下,并以Test_XX.cpp格式命名。
  • 通用编译命令
    cd <path-to-UtilsClass>
    mkdir build
    cd build
    cmake .. -DUNITTEST=1
    make
    ./test/UnitTests_Raster
  • 强烈推荐CLion,直接打开RasterClass目录并在CMake Options中添加-DUNITTEST=1, 即可自动构建工程,方便且跨平台。