PostgreSQL 12.5+ PostGIS3.0 + SFCGAL1.3的离线编译安装

                                  PostgreSQL 12.5+ PostGIS3.0 + SFCGAL1.3的离线编译安装

             

安装前的相关背景简介:

PostgreSQ L 是一种对象-关系型数据库管理系统(ORDBMS ),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。它起源于伯克利(BSD)的数据库研究计划,目前是最重要的开源数据库产品开发项目之一,有着非常广泛的用户。
PostGIS是在对象关系型数据库Post greSQL 上增加了存储管理空间数据的能力,相当于Oracle 的spatial(地理) 部分。PostGIS 最大的特点是符合并且实现了OpenGIS 的一些规范,是最著名的开源GIS数据库。PostGIS作为开源GIS 的支柱之一,它具有很强的空间数据存储、管理、分析能力。

PostGIS通过向PostgreSQL添加对空间数据类型、空间索引和空间函数的支持,将PostgreSQL数据库管理系统转换为空间数据库。PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。因为PostGIS是建立在PostgreSQL之上的,所以PostGIS自动继承了重要的"企业级"特性以及开放源代码的标准。可以说PostGIS仅仅只是PostgreSQL的一个插件,但是它将PostgreSQL变成了一个强大的空间数据库!PostGIS是一群国外GISer在PostgreSQL实现的插件,PostgreSQL是著名的老牌数据库,特点是功能全,什么都能干(当数仓、做业务库、当MQ、做MPP等)

PostGIS的版权被纳入到GNU的GPL中,也就是说任何人可以自由得到PostGIS的源码并对其做研究和改进。正是由于这一点,PostGIS得到了迅速的发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中。

PostGIS是由Refractions Research Inc开发的,Refractions是一家GIS和数据库咨询公司,Refraction公司最初是在PostgreSQL的基础上研究空间数据库的实现,由于PostgreSQL所提供的空间数据类型和功能远远不能满足GIS的需求,研究工作经常陷入到进退维谷的境地,最终的结果往往是耗费了大量的人力物力,而产品却极其复杂并且性能低下。这些原因直接或间接促成PostGIS项目的实施。

安装顺序的问题说明

合理的安装postgigrs的顺序应该是这样的:postgresql--->(postgis所需要的依赖)--->postgis--->进入postgresql数据库,选定要使用的数据库给该库增加扩展插件,  postgresql是基础软件,因此是必须第一个安装的,而postgis的依赖可分为两个部分,一部分是geos库+gdal库+proj库+json-c库,这四个库如果正确安装了,那么就已经可以编译安装postgis并在pg数据库激活或者说新增插件了,但是需要说明的是,此时的postgis并不支持3d数据的分析,存储,计算等工作,仅仅支持2d的地理信息。在前面四个库的基础上,在安装四个库,这 四个库分别是protobuf+protobuf-c+cgal+sfcgal,其中protobuf和protobuf-c是一对,前者是后者的强依赖(后续安装的时候需要小心处理哦),cgal和sfcgal是另一对,也为强依赖关系,这四个库又全部依赖于boost这个基础库。

还一个网络分析插件PgRouting,这个插件和postgis无关,和cgal,boost有依赖关系,如有需要,可顺势安装了。

安装部署的实操部分:

(1)根据前面关于安装顺序的说明,postgresql+四个基础库geos库+gdal库+proj库+json-c库的安装教程在另一个博客,请先根据这个博客完成,不建议此时安装postgis。博客地址为:

https://blog.csdn.net/alwaysbefine/article/details/114874242   (编译安装考验人的耐性,请耐心安装,不要害怕失败)

(2)protobuf+protobuf-c+cgal+sfcgal的编译安装

需要特别说明一下,protobuf的版本至少要为2.6.1。GitHub上有两个版本,如果从那下载需要注意有一个版本不带configure脚本,需要联网下载gtest插件,国内基本不要想用,网速感人的!!我所提供的版本已经安装过gtest。

这四个库分为两对,protobuf先安装,protobuf-c后安装,cgal先安装,sfcgal后安装,安装前先yum安装这四个库所依赖的开发库,命令如下:

yum install -y gcc gcc-c++ libffi-devel python-devel mpfr-devel gmp-devel boost-devel openssl-devel readline-devel libxml2-devel

里面的libxml2和boost特别要注意一下下,可编译安装源码,也可采用yum安装开发库的形式(如果觉得难度不够高的话,请自行编译这两个玩意)。

安装包的下载

链接:https://pan.baidu.com/s/12GFnU_kdCJ_4UtJ3F03oXw 
提取码:post 
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V3的分享

安装包的内容说明:8个postgis的依赖,以及postgresql的启动脚本,安装过程中要使用的 环境变量文件 profile 和ld.so.conf,配置文件根据自己的安装路径更改后移动到原目录即可正常使用。附带了一个rar安装包,

(pgsql 这个文件的路径是/etc/init.d/    profile这个文件的路径是/etc/  ld.so.conf 这个文件的路径是 /etc/,rar这个安装包解压后 make &&make install 即可使用rar和unrar命令了)

1)protobuf的安装

cd protobuf-2.6.1
./configure  --prefix=/usr/local/protobuf
make && make install

注意,要指定安装路径哦!!! 

2)protobuf-c的安装

vim /etc/profile  在文件末尾添加如下内容:

export PROTOBUF_HOME=/usr/local/protobuf
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig

 执行命令  source /etc/profile 激活环境变量

解压安装文件后,进入目录,并执行编译:

cd protobuf-c-1.3.1
./configure  --prefix=/usr/local/protobuf-c
make && make install

注意,要指定安装路径哦!!!  

3)cgal的安装

cd cgal-releases-CGAL-4.13/
mkdir build
cd build
cmake ../
make &&make install

注意,这个不要尝试指定安装目录,一切默认即可!!!!

4)sfcgal的安装

cd SFCGAL-1.3.6/
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sfcgalcmake ../
make &&make install

注意,要指定安装路径哦!!! 

5)postgis的安装(激动人心的时刻):

预编译阶段:

./configure --prefix=/usr/local/postgis \
 --with-gdalconfig=/usr/local/gdal/bin/gdal-config \
 --with-pgconfig=/usr/local/pgsql/bin/pg_config  \
 --with-protobufdir=/usr/local/protobuf-c \
 --with-sfcgal=/usr/local/sfcgal/bin/sfcgal-config

 

如果正确无误,那么就make &make install 完成安装

6)postgis的使用

postgres=# create extension postgis;
CREATE EXTENSION
#安装过了sfcgal,创建扩展测试下
postgres=# create extension postgis_sfcgal;

安装扩展很可能不会成功,因为爱报错libprotobuf-c.so.1没有找到,具体原因未知,解决方案有两个:

方案1,找到这个文件,链接到 /usr/lib目录下,具体命令为:ln -s /usr/local/protobuf-c/lib/libpro/protobuf-c.so.1   /usr/lib/

本文采用的这种方法

方案2,找到的这个文件的全路径写入 /etc/ld.so.conf 文件,并执行ldconfig命令

SQL语句可查询到插件状态,具体SQL语句为,可看到第三列的版本号为安装成功:

[postgres@centos2 ~]$ psql
psql (12.5)
Type "help" for help.

postgres=# select * from pg_available_extensions where name like 'postgis%';
          name          | default_version | installed_version |                               comment                               
------------------------+-----------------+-------------------+---------------------------------------------------------------------
 postgis                | 3.0.0           | 3.0.0             | PostGIS geometry, geography, and raster spatial types and functions
 postgis_tiger_geocoder | 3.0.0           |                   | PostGIS tiger geocoder and reverse geocoder
 postgis_raster         | 3.0.0           |                   | PostGIS raster types and functions
 postgis_topology       | 3.0.0           |                   | PostGIS topology spatial types and functions
 postgis_sfcgal         | 3.0.0           | 3.0.0             | PostGIS SFCGAL functions
(5 rows)

 

猜你喜欢

转载自blog.csdn.net/alwaysbefine/article/details/114971627