3S-Hub 3S-Hub
首页
  • 基础地理信息数据

    • 点矢量
    • 线矢量
    • 面矢量
  • 栅格数据

    • DEM数据
    • 土地利用数据
    • 人口数据
    • 地图资源数据
  • 领域/学科数据

    • 生态
    • 经济
    • 地质
    • 气象
    • 环境
    • 水文
    • 农学
  • 卫星数据

    • 普通光学卫星
    • 雷达卫星
    • 其他卫星
  • 卫星产品数据

    • 土地利用数据
    • 植被指数数据
    • 土壤数据
    • 温度数据
    • 天气预报数据
    • 气溶胶数据
    • DEM数据
    • 遥感训练数据集
  • 地信开发

    • 编程语言
    • 在线地图源
    • 空间处理包
    • 空间数据库
    • 在线可视化
  • 遥感开发

    • 编程语言
    • 遥感自动化
    • 遥感深度学习
    • 遥感云开发
    • - GEE专题
    • - PIE专题
  • 地信软件

    • ArcGIS专题
    • QGIS专题
    • GeoDa专题
    • PIE 专题
    • 其他
  • 遥感软件

    • 本地软件
    • - ENVI
    • - ERDAS
    • - 其他
    • 遥感云平台
    • - GEE专题
    • - PIE专题
    • - world compute
  • 地图辅助

    • Google Earth
    • 图新地球
    • 奥维地图
    • 水经注
    • Bigmap
  • 常用网址/论坛导航
  • 持续更新中...
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础地理信息数据

    • 点矢量
    • 线矢量
    • 面矢量
  • 栅格数据

    • DEM数据
    • 土地利用数据
    • 人口数据
    • 地图资源数据
  • 领域/学科数据

    • 生态
    • 经济
    • 地质
    • 气象
    • 环境
    • 水文
    • 农学
  • 卫星数据

    • 普通光学卫星
    • 雷达卫星
    • 其他卫星
  • 卫星产品数据

    • 土地利用数据
    • 植被指数数据
    • 土壤数据
    • 温度数据
    • 天气预报数据
    • 气溶胶数据
    • DEM数据
    • 遥感训练数据集
  • 地信开发

    • 编程语言
    • 在线地图源
    • 空间处理包
    • 空间数据库
    • 在线可视化
  • 遥感开发

    • 编程语言
    • 遥感自动化
    • 遥感深度学习
    • 遥感云开发
    • - GEE专题
    • - PIE专题
  • 地信软件

    • ArcGIS专题
    • QGIS专题
    • GeoDa专题
    • PIE 专题
    • 其他
  • 遥感软件

    • 本地软件
    • - ENVI
    • - ERDAS
    • - 其他
    • 遥感云平台
    • - GEE专题
    • - PIE专题
    • - world compute
  • 地图辅助

    • Google Earth
    • 图新地球
    • 奥维地图
    • 水经注
    • Bigmap
  • 常用网址/论坛导航
  • 持续更新中...
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 气象编程资源

    • 地理与气象数据分析(gma包)的说明与使用
  • 遥感编程资源

    • 云环境中GDAL库的配置与安装
      • Windows版
        • 第一种方法:使用Anaconda安装
        • 第二种方法:直接下载安装包
        • 第三种方法:使用pip安装
      • Mac版
      • Linux版
        • 安装geos
        • 安装NetCDF4
        • 安装openjpeg
        • 安装GDAL
        • 编译python版本
      • 查询影像基本信息
      • 影像转投影
      • 影像裁剪
  • 友情链接

加入我们

遥感地信资源网站共建~

遥感地信经验技巧交流~

  • 编程资源
  • 遥感编程资源
GISer
2021-11-21

云环境中GDAL库的配置与安装

# 云环境中GDAL库的配置与安装

# 写作说明

​ GDAL库作为遥感GIS行业最常用也是基本的一个开源库,它的强大功能自然不用在过多强调。目前市面上很多的开源软件或者第三方的开源库底层都和GDAL库相关联,比如GeoServer、QGIS等等,而我们在平时工作中这个库也是必不可少的一个重要软件。合理利用GDAL库,不仅能加速我们平时的各种数据处理速度,优化我们工作效率,同时也能加深我们对于GIS行业中各种操作原理有充分的认知。

​ 这篇文章主要面向的是在公司里面从事遥感GIS行业的开发人员,主要原因是目前公司大部分都是采用云环境开发,工作内容大部分都需要在云上完成,所以我们需要配置云上的GDAL环境。同时目前大部分云操作系统都是RedHat系统或者Centos系统或者Arm64系统等Linux环境,所以独立掌握配置Linux环境的GDAL是必备的技能。

# 1、GDAL库介绍

GDAL库的官方介绍地址:https://gdal.org/index.html

引用官方的一段描述

GDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License (opens new window) by the Open Source Geospatial Foundation (opens new window). As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing. The NEWS (opens new window) page describes the November 2021 GDAL/OGR 3.4.0 release.

需要了解的是GDAL是用来做地理信息数据处理的一个开源库,它可以处理栅格影像数据(比如tif、img等),也可以处理空间矢量数据(比如shapefile、geojson等),结合其它的软件库可以实现目前遥感GIS行业几乎所有格式数据的处理。

GDAL支持栅格数据格式:https://gdal.org/drivers/raster/index.html#raster-drivers

支持矢量数据格式:https://gdal.org/drivers/vector/index.html#vector-drivers

# 2、GDAL库安装

# Windows版

Windows版本的GDAL安装还是比较容易的主要有几种方式

# 第一种方法:使用Anaconda安装

官方推荐使用conda安装GDAL环境,他会帮你把所有的依赖找完整,相关命令如下图:

作为一个开发人员,说实话我个人不喜欢Anaconda这种环境,我还是喜欢按照自己意愿独立配置相关内容,后面介绍的两种方法就是纯粹的技术开发人员配置方式

# 第二种方法:直接下载安装包

从网站(https://download.gisinternals.com/release.php)可以下载GDAL核心包以及python绑定,自己手动安装。

# 第三种方法:使用pip安装

从这个网站(https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal)直接下载对应的whl包,然后使用 pip 安装即可。

下载下来指定的wheel文件后运行

pip3 install GDAL-xxxx.whl
1

如果提示缺少其它包,直接安装对应的内容即可。

# Mac版

Mac系统安装GDAL还是比较容易,已经有国外的开发人员将其打包,可以从这个网站下载(https://www.kyngchaos.com/software/frameworks/),这个网站中不仅仅可以下载GDAL安装包,还可以下载相关的插件以及Mac版本的QGIS。由于这个是国外的网站,所以有时候需要科学上网。

# Linux版

Linux环境配置是我们这次讲解的重点。

第一步配置一个总体的环境

vim ~/.bashrc

录⼊:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
export PATH=$PATH:/usr/local/bin 
export CPATH=:$CPATH:/usr/local/include
1
2
3
4
5
6

第二步安装相关依赖

sudo yum install -y gcc make gcc-c++ sqlite-devel libxml2-devel python3-devel numpy swig expat-devel libcurl-devel postgresql postgresql-devel bzip2 autoconf automake libtool zlib-devel libjpeg-devel bison flex
1

####安装Proj6

(1)下载解压

wget -c http://download.osgeo.org/proj/proj-6.2.0.tar.gz
tar xvf proj-6.2.0.tar.gz
1
2

(2)生成配置

cd proj-6.2.0
./configure --prefix=/usr/local
1
2

(3)编译

make
1

(4)安装

sudo make install
1

# 安装geos

(1)下载解压

wget -c http://download.osgeo.org/geos/geos-3.6.2.tar.bz2
tar xvf geos-3.6.2.tar.bz2
1
2

(2)生成配置

cd geos-3.6.2/ 

./configure --prefix=/usr/local --enable-python
1
2
3

(3)编译

make
1

(4)安装

sudo make install
1

####安装HDF5

(1)下载解压

wget -c https://support.hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.21.tar
tar xvf hdf5-1.8.21.tar
1
2

(2)生成配置

cd hdf5-1.8.21/

./configure \
  --prefix=/usr/local \
  --enable-shared \
  --enable-build-all \
  --with-zlib \
  --with-pthread \
  --enable-cxx
1
2
3
4
5
6
7
8
9

(3)编译

make
1

(4)安装

sudo make install
1

# 安装NetCDF4

下载地址:https://www.unidata.ucar.edu/downloads/netcdf/

由于这个库更新很快,所以不一定会有这个相关库,可以根据自己的实际情况来定。

(1)下载解压

wget -c https://downloads.unidata.ucar.edu/netcdf-c/4.8.1/src/netcdf-c-4.8.1.tar.gz
tar xvf netcdf-c-4.8.1.tar.gz
1
2

(2)生成配置

cd netcdf-c-4.8.1/

./configure --prefix=/usr/local
1
2
3

(3)编译

make
1

(4)安装

sudo make install
1

# 安装openjpeg

(1)下载解压

wget -c https://github.com/uclouvain/openjpeg/archive/v2.3.1/openjpeg-2.3.1.tar.gz
tar xvf openjpeg-2.3.1.tar.gz
1
2

(2)配置编译

mkdir -v build && cd build &&
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_STATIC_LIBS=OFF .. && make
1
2
3
4

(3)安装

sudo make install
1

# 安装GDAL

源码下载地址:http://trac.osgeo.org/gdal/wiki/DownloadSource

(1)下载解压

wget -c http://download.osgeo.org/gdal/3.0.1/gdal-3.0.1.tar.gz
tar xvf gdal-3.0.1.tar.gz
1
2

(2)生成配置

cd gdal-3.0.1

./configure \
--prefix=/usr/local \
--with-libtiff=internal \
--with-geotiff=internal \
--with-jpeg=internal \
--with-jpeg12 \
--without-libtool \
--without-python \
--with-libkml \
--with-static-proj4 \
--with-geos \
--without-hdf4 \
--with-hdf5 \
--with-netcdf \
--with-openjpeg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

(3)更新GDALmake.opt

LIBS    =      $(SDE_LIB) -L/usr/local/lib -lgeos_c -lgeos  -lsqlite3 -lexpat -L/usr/local/lib -lnetcdf -lhdf5 -lproj -lopenjp2 -lz -lpthread -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
                $(MRSID_LIBS) $(MRSID_LIDAR_LIBS) $(ECW_LIBS) $(INGRES_LIB) \
                $(PCIDSK_LIB) $(RASDAMAN_LIB) $(SOSI_LIB) \
                $(OPENCL_LIB) $(JVM_LIB) $(LIBICONV) $(FGDB_LIB) $(LIBXML2_LIB) $(MONGODB_LIB) \
                $(MONGOCXXV3_LIBS) $(JNI_LIB) $(HDFS_LIB)
1
2
3
4
5

(4)编译

make
1

(5)安装

sudo make install
1

# 编译python版本

(1)使用源码编译安装

cd /gdal-3.0.1/swig/python/ 
python3 setup.py build 
sudo python3 setup.py install
1
2
3

(2)修改配置

export PYTHONPATH=$PYTHONPATH:/修改为安装完成后提示的路径/site-packages/GDAL-3.0.1-py3.7-linux-aarch64.egg/osgeo
1

# 3、GDAL安装异常解决

这些异常是我在实际安装中遇到的各种问题,是非常宝贵的经验。

(1)解决configure: error: xxx A compiler with support for c++11 language features is required.

解决方案:

yum install -y gcc gcc-c++
1

(2)解决configure: error: no acceptable C compiler found in $PATH 问题解决

解决方案:

yum install -y gcc
1

(3)openjpeg.h: No such file or directory

解决方案:

重新安装openjpeg,将其安装逻辑指定为 /usr/local,修改 ~/.bashrc,增加

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
export PATH=$PATH:/usr/local/bin 
export CPATH=:$CPATH:/usr/local/include:/usr/local/include/openjpeg-2.3
1
2
3

(4)command 'gcc' failed with exit status 1

解决方法,安装python3-devel

sudo yum install python3-devel
1

(5)配置清华源

pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
1

(6)error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file

解决方案:

1.将⽤户⽤到的库统⼀放到⼀个⽬录,如 /usr/loca/lib 
cp libXXX.so.X /usr/loca/lib/ 
由于我们设置都在 /usr/local 所以这⼀步可以省略

2.向库配置⽂件中,写⼊库⽂件所在⽬录 
#打开文件
sudo vim /etc/ld.so.conf.d/usr-libs.conf
#写入下面内容
/usr/local/lib
#退出保存

3.更新 /etc/ld.so.cache ⽂件 
sudo ldconfig
1
2
3
4
5
6
7
8
9
10
11
12
13

(7)ImportError: No module named ‘_gdal_array'

解决方案:

这个通常是numpy和gdal安装顺序反了,应该先安装numpy等,在安装gdal。

(8)sudo sh: xx: command not found

解决方案:

# 切换到root用户
sudo su -

# 修改这个文件的权限,非常重要
chmod 777 /etc/sudoers                             

# 编辑这个文件
vim /etc/sudoers    

# 增加指定路径
Defaults  secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

# 退出保存
                             
# 修改这个文件的权限,非常重要
chmod 440 /etc/sudoers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 4、GDAL基本命令使用

####查询GDAL版本信息

gdalinfo --version
1

查询结果:

# 查询影像基本信息

gdalinfo 原始影像
1

例子

gdalinfo /Users/lsw/Downloads/Data/wc2.1_10m_elev.tif
1

查询结果:

# 影像转投影

gdalwarp 参数列表 -t_srs 投影信息 原始影像 结果影像
1

例子:

gdalwarp -co COMPRESS=LZW -t_srs EPSG:3857 /Users/lsw/Downloads/Data/wc2.1_10m_elev.tif /Users/lsw/Downloads/3857_dem.tif
1

# 影像裁剪

gdalwarp 参数列表 原始影像 结果影像 -cutline 矢量文件 -crop_to_cutline
1

例子:

gdalwarp -co COMPRESS=LZW /Users/lsw/Downloads/Data/wc2.1_10m_elev.tif /Users/lsw/Downloads/bj_dem.tif -cutline /Users/lsw/Desktop/DLG/2004/china_shp_split/11/110000.shp -crop_to_cutline
1

结果:

# 写作后续

​ 这篇文章我对于它的定位是教大家如何云环境中安装配置使用GDAL,因为目前各个公司做原生的云开发是未来发展趋势,关于云原生环境配置是我们每一个开发人员必备的能力。俗话说好:“一个不懂的配置Linux环境的工程师不是一个好的开发人员”,通过这些简单而琐碎的配置也能增加我们对于Linux环境各种库安装、配置有比较深刻的理解,学习到如何操作Linux环境,为未来升职加薪打下结实基础。

​ 关于GDAL库的各种使用,比如如何读取栅格数据数据、如何读取矢量数据、如何做各种统计分析、数据处理等,后续看情况是否写更多的实例教程来教授大家如何进行相关操作。

# 作者简介

无形的风,大学专修数学,毕业之后反而进入了软件研发行业,后转入农业遥感GIS方面。从事多年软件设计开发,从KJava到Java开发、从Flash AS3到JavaScript开发、从C++到ObjectC开发、从Shell到Python开发,随着行业变迁发展遭受了各种语言程序的“毒打”。目前专注于国产的PIE软件研发、GEE开发与传道、Python机器学习相关方面的学习开发。

编辑 (opens new window)
上次更新: 2021/11/22, 09:44:52
地理与气象数据分析(gma包)的说明与使用
友情链接

← 地理与气象数据分析(gma包)的说明与使用 友情链接→

最近更新
01
README
11-22
02
软件资源
11-22
03
README
11-22
更多文章>
Theme by Vdoing | Copyright © 2021-2021 Updating.. | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×