需要用mapnik加载shp文件展示数据:
需要给mapnik安装gdal插件:
我的环境是centos8 之前安了proj6.3.2
安装步骤:采用源码编译:
1.下载安装json-c
安装之后配置环境变量:
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
pkg-config --modversion json-c
0.14
2.下载gdal源码:我这里用3.2.0版本,(更高的版本好像对proj的版本要求比较高。)
tar zxvf gdal-3.2.0.tar.gz 解压
cd gdal-3.2.0
./configure 查看配置信息
最后输出:
2024-04-15 16:34:10 SWIG Bindings: no
2024-04-15 16:34:10
2024-04-15 16:34:10 PROJ >= 6: yes
2024-04-15 16:34:10 enable GNM building: yes
2024-04-15 16:34:10 enable pthread support: yes
2024-04-15 16:34:10 enable POSIX iconv support:yes
2024-04-15 16:34:10 hide internal symbols: no
3.运行make,没有make的话直接安装就行了:
安装cmake:
dnf install epel-release 安装 EPEL 软件仓库:
dnf install cmake 安装 CMake:
cmake --version 验证 CMake 是否成功安装
然后运行make进行编译就行了。
我第一次编译报错:
2024-04-15 18:07:51 /bin/sh /home/gdal/gdal-3.2.0/libtool --mode=compile --silent --tag=CXX g++ -I/home/gdal/gdal-3.2.0/port -I/home/gdal/gdal-3.2.0/gcore -I/home/gdal/gdal-3.2.0/alg -I/home/gdal/gdal-3.2.0/ogr -I/home/gdal/gdal-3.2.0/ogr/ogrsf_frmts -I/home/gdal/gdal-3.2.0/gnm -I/home/gdal/gdal-3.2.0/apps -DHAVE_AVX_AT_COMPILE_TIME -DHAVE_SSSE3_AT_COMPILE_TIME -DHAVE_SSE_AT_COMPILE_TIME -g -O2 -Wall -Wextra -Winit-self -Wunused-parameter -Wformat -Werror=format-security -Wno-format-nonliteral -Wlogical-op -Wshadow -Werror=vla -Wdate-time -Wnull-dereference -Wduplicated-cond -Wextra-semi -Wfloat-conversion -Wmissing-declarations -Wnon-virtual-dtor -Woverloaded-virtual -fno-operator-names -Wzero-as-null-pointer-constant -Wsuggest-override -Wimplicit-fallthrough -DGNM_ENABLED -I/home/gdal/gdal-3.2.0/port -DGDAL_COMPILATION -c -o ../o/jpeg2000dataset.lo jpeg2000dataset.cpp
2024-04-15 18:07:55 jpeg2000dataset.cpp:40:10: fatal error: jasper/jasper.h: No such file or directory
2024-04-15 18:07:55 #include <jasper/jasper.h>
2024-04-15 18:07:55 ^~~~~~~~~~~~~~~~~
2024-04-15 18:07:55 compilation terminated.
2024-04-15 18:07:55 make[2]: *** [../../GDALmake.opt:646: ../o/jpeg2000dataset.lo] Error 1
2024-04-15 18:07:55 make[2]: Leaving directory '/home/gdal/gdal-3.2.0/frmts/jpeg2000'
2024-04-15 18:07:55 make[1]: *** [GNUmakefile:15: jpeg2000-install-obj] Error 2
2024-04-15 18:07:55 make[1]: Leaving directory '/home/gdal/gdal-3.2.0/frmts'
2024-04-15 18:07:55 make: *** [GNUmakefile:114: frmts-target] Error 2
2024-04-15 20:47:36 [root@07d48aac5991 gdal-3.2.0]# yum install jasper-devel
2024-04-15 20:47:40 Last metadata expiration check: 4:44:17 ago on Mon 15 Apr 2024 08:03:23 AM UTC.
2024-04-15 20:47:40 No match for argument: jasper-devel
2024-04-15 20:47:40 Error: Unable to find a match: jasper-devel
看报错提示jasper/jasper.h有问题,找不到jasper.h的头,重新安装下jasper
1.启用 PowerTools 仓库
2024-04-15 20:49:41 [root@07d48aac5991 gdal-3.2.0]# yum config-manager --set-enabled powertools
2.再次安装 jasper-devel:
底下是安装信息
2024-04-15 20:49:47 [root@07d48aac5991 gdal-3.2.0]# yum install -y jasper-devel
CentOS Linux 8 - PowerTools 1.5 MB/s | 2.3 MB 00:01 0 B --:-- ETA
2024-04-15 20:49:51 Last metadata expiration check: 0:00:02 ago on Mon 15 Apr 2024 12:49:49 PM UTC.
2024-04-15 20:49:54 Dependencies resolved.
2024-04-15 20:49:54 ========================================================================================================================
2024-04-15 20:49:54 Package Architecture Version Repository Size
2024-04-15 20:49:54 ========================================================================================================================
2024-04-15 20:49:54 Installing:
2024-04-15 20:49:54 jasper-devel x86_64 2.0.14-5.el8 powertools 635 k
2024-04-15 20:49:54
2024-04-15 20:49:54 Transaction Summary
2024-04-15 20:49:54 ========================================================================================================================
2024-04-15 20:49:54 Install 1 Package
2024-04-15 20:49:54
2024-04-15 20:49:54 Total download size: 635 k
2024-04-15 20:49:54 Installed size: 2.8 M
2024-04-15 20:49:54 Downloading Packages:
jasper-devel-2.0.14-5.el8.x86_64.rpm 364 kB/s | 635 kB 00:01 0 B --:-- ETA
2024-04-15 20:49:56 ------------------------------------------------------------------------------------------------------------------------
2024-04-15 20:49:56 Total 362 kB/s | 635 kB 00:01
2024-04-15 20:49:56 Running transaction check
2024-04-15 20:49:56 Transaction check succeeded.
2024-04-15 20:49:56 Running transaction test
2024-04-15 20:49:56 Transaction test succeeded.
2024-04-15 20:49:56 Running transaction
Preparing : 1/1
Installing : jasper-devel-2.0.14-5.el8.x86_64 1/1
Running scriptlet: jasper-devel-2.0.14-5.el8.x86_64 1/1
Verifying : jasper-devel-2.0.14-5.el8.x86_64 1/1
2024-04-15 20:49:57
2024-04-15 20:49:57 Installed:
2024-04-15 20:49:57 jasper-devel-2.0.14-5.el8.x86_64
2024-04-15 20:49:57
2024-04-15 20:49:57 Complete!
安装完以后查询下 find / -name 'jasper.h'
/usr/include/jasper/jasper.h
安装成功后,运行./configure查看信息,不太放心加上jasper的配置
2024-04-15 20:50:08 [root@07d48a CPPFLAGS="-I/usr/include/jasper" ./configure
然后编译完之后运行:make install安装
2024-04-15 22:54:22 make[1]: Leaving directory '/home/gdal/gdal-3.2.0/apps'
2024-04-15 22:54:22 rm -f gdal.pc
2024-04-15 22:54:22 echo 'CONFIG_VERSION='`cat ./VERSION`'' >> gdal.pc
2024-04-15 22:54:22 echo 'CONFIG_INST_PREFIX=/usr/local' >> gdal.pc
2024-04-15 22:54:22 echo 'CONFIG_INST_LIBS=-L/usr/local/lib -lgdal' >> gdal.pc
2024-04-15 22:54:22 echo 'CONFIG_INST_CFLAGS=-I/usr/local/include' >> gdal.pc
2024-04-15 22:54:22 echo 'CONFIG_INST_DATA=/usr/local/share/gdal' >> gdal.pc
2024-04-15 22:54:23 cat gdal.pc.in >> gdal.pc
2024-04-15 23:17:40 [root@07d48aac5991 gdal-3.2.0]# make install
安装成功:
2024-04-15 23:19:18 make[1]: Leaving directory '/home/gdal/gdal-3.2.0/gnm'
2024-04-15 23:19:18 (cd apps; make install)
2024-04-15 23:19:18 make[1]: Entering directory '/home/gdal/gdal-3.2.0/apps'
2024-04-15 23:19:18 for f in gdalinfo gdal_translate gdaladdo gdalwarp nearblack gdalmanage gdalenhance gdaltransform gdaldem gdallocationinfo gdalsrsinfo gdalmdiminfo gdalmdimtranslate gdal_viewshed gdal_create gdal_contour gdaltindex gdal_rasterize gdal_grid ogrinfo ogr2ogr ogrtindex ogrlineref testepsg gdalbuildvrt gnmmanage gnmanalyse ; do /bin/sh /home/gdal/gdal-3.2.0/libtool --mode=install --silent /home/gdal/gdal-3.2.0/install-sh -c $f /usr/local/bin ; done
2024-04-15 23:19:51 /home/gdal/gdal-3.2.0/install-sh -c -m 0644 gdal_utils.h /usr/local/include
2024-04-15 23:19:52 /bin/sh /home/gdal/gdal-3.2.0/libtool --mode=install --silent /home/gdal/gdal-3.2.0/install-sh -c gdal-config-inst /usr/local/bin/gdal-config
2024-04-15 23:19:53 make[1]: Leaving directory '/home/gdal/gdal-3.2.0/apps'
2024-04-15 23:19:53 for f in LICENSE.TXT data/*.* ; do /home/gdal/gdal-3.2.0/install-sh -c -m 0644 $f /usr/local/share/gdal ; done
看到这些信息就是安装成功了
2024-04-15 23:21:06 /bin/sh /home/gdal/gdal-3.2.0/libtool --mode=finish --silent /usr/local/lib
2024-04-15 23:21:07 /home/gdal/gdal-3.2.0/install-sh -d /usr/local/lib/pkgconfig
2024-04-15 23:21:07 /home/gdal/gdal-3.2.0/install-sh -c -m 0644 gdal.pc /usr/local/lib/pkgconfig/gdal.pc
然后查看版本看看;
2024-04-15 23:25:15 [root@07d48aac5991 gdal-3.2.0]# gdalinfo --version
提示报错:
2024-04-15 23:25:15 gdalinfo: error while loading shared libraries: libjson-c.so.5: cannot open shared object file: No such file or directory
因为libjson在lib64底下,配置环境变量把lib64读上:
export LD_LIBRARY_PATH=/home/boost/boost_1_68_0/stage/lib:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
2024-04-15 23:31:08 [root@07d48aac5991 gdal-3.2.0]# source ~/.bashrc 刷新
2024-04-15 23:31:11 [root@07d48aac5991 gdal-3.2.0]# gdalinfo --version 查看版本
2024-04-15 23:31:11 GDAL 3.2.0, released 2020/10/26
在mapnik进行gdal插件安装:(我这块也没出啥问题,直接安编译就行了)
cd mapnik
python3 scons/scons.py configure 这里可以看看输出有没有检测到gdal,有的话直接安就行了
python3 scons/scons.py
python3 scons/scons.py install
然后在python里面使用:
效果: