前言
介绍CentOS8源码编译PostGIS 3.2.1版本
安装
官网
官方网站 https://www.postgis.net/
源码下载地址 https://www.postgis.net/source/
依赖
必须
- PostgreSQL 9.6+,PostgreSQL源码安装教程可以参考另一篇文章,文章传送门
- GNU C(gcc)
- GNU Make (gmake or make)
- Proj 4.9+ 下载地址 https://proj.org/download.html
- GEOS 3.6+ 下载地址 http://libgeos.org/usage/download/
- LibXML2 2.5+ 下载地址 https://gitlab.gnome.org/GNOME/libxml2/-/releases
- JSON-C 0.9+ 下载地址 https://s3.amazonaws.com/json-c_releases/releases/index.html
- GDAL 2+,推荐3+ http://download.osgeo.org/gdal/
可选
- protobuf-c 1.1.0+,该依赖用于矢量切片相关,推荐安装 [下载地址 https://github.com/protobuf-c/protobuf-c](https://github.com/protobuf-c/protobuf-c)
其它具体依赖可以参考官方文档,传送门
作者依赖版本
- PostgreSQL 14.3
- PostGIS 3.2.1
- Proj 9.0.0
- GEOS 3.10.3
- LibXML 2.9.14
- JSON-C 0.16
- GDAL 3.5.0
编译
cmake
yum install cmake
Geos
# 进入安装路径
cd geos
# 创建编译文件夹
mkdir _build
cd _build
# cmake
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/geos ..
# 安装
make
ctest
make install
vim /etc/ld.so.conf.d/geos.conf
文件中增加 /usr/local/geos/lib64
保存退出
ldconfig
JSON-C
# 进入安装路径
cd json-c
# 创建编译文件夹
mkdir _build
cd _build
# cmake
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/json-c ..
# 安装
make
make test
make install
Libxml2
yum install autoconf automake libtool
./autogen.sh
./configure --prefix=/usr/local/libxml2
Proj
依赖安装
./configure --prefix=/usr/local/sqlite3
make
make install
vim /etc/ld.so.conf.d/sqlite3.conf
文件中增加 /usr/local/sqlite3/lib
保存退出
ldconfig
./configure --prefix=/usr/local/tiff
make
make install
vim /etc/ld.so.conf.d/tiff.conf
文件中增加 /usr/local/tiff/lib
保存退出
ldconfig
- CURL
yum install curl-devel
安装
cd proj
mkdir _build
cd _build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/proj -DSQLITE3_INCLUDE_DIR=/usr/local/sqlite3/include -DSQLITE3_LIBRARY=/usr/local/sqlite3/lib/libsqlite3.so -DTIFF_INCLUDE_DIR=/usr/local/tiff/include -DTIFF_LIBRARY_RELEASE=/usr/local/tiff/lib/libtiff.so -DCURL_LIBRARY=/usr/lib64/libcurl.so.4 -DCURL_INCLUDE_DIR=/usr/bin ..
make
make install
Protobuf-c
依赖安装
cd protobuf
./autogen.sh
./configure --prefix=/usr/local/protobuf
make
make install
修改环境变量
vim ~/.bash_profile
PATH后面增加 :/usr/local/protobuf/bin
保存退出
source ~/.bash_profie
安装
cd protobuf-c
PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig ./configure --prefix=/usr/local/protobuf-c
make
make install
修改环境变量
vim ~/.bash_profile
PATH 后面增加 :/usr/local/protobuf-c/bin
保存退出
source ~/.bash_profie
gdal
cd gdal
./autogen.sh
./configure --prefix=/usr/local/gdal
make
make install
PostGIS
- json-c
json-c的安装路径下,lib64拷贝为lib
cp -r /usr/local/json-c/lib64 /usr/local/json-c/lib
- proj
proj的安装路径下,lib64 拷贝为 lib
cp -r /usr/local/proj/lib64 /usr/local/proj/lib
./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj --with-gdalconfig=/usr/local/gdal/bin/gdal-config --with-protobufdir=/usr/local/protobuf-c --with-jsondir=/usr/local/json-c --with-xml2config=/usr/local/libxml2/bin/xml2-config
make
make install
使用测试
- 连接pg数据库
- 使用超级用户,执行
create extension postgis;
,安装pg数据库 - 测试语句
SELECT ST_AsMVTGeom(
ST_GeomFromText('POLYGON ((0 0, 10 0, 10 5, 0 -5, 0 0))'),
ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)),
4096, 0, false);