Linux 安装PostGIS 3.1全过程

3 篇文章 0 订阅
2 篇文章 1 订阅

安装postgis前先安装PostgreSQL,可参照之前博客的具体安装过程

Linux 安装 PostgreSQL详细过程

PostgreSQL 安装情况查看

切换postgres系统账号,输入psql,进行数据库用户postgres的密码修改

执行psql,默认进入postgres用户的postgres数据库
使用\du查看用户

 使用\l 查看用户的数据库列表(以下库为PostgreSQL默认装上,不建议删除)

 使用\c 查看路径

使用\d查看数据表,没有数据表显示为(没有找到任何关系

配置PostgreSQL

之前博客已讲过一种配置方式,现在看下另一种配置方式

配置Linux防火墙端口

执行vi /usr/lib/firewalld/services/ssh.xml, 由于PostgreSQL服务默认是5432端口,所以添加5432端口。

 执行 systemctl restart firewalld 重启防火墙服务,使配置生效。

配置远程访问(之前有讲解过,不在赘述)

补充一下其他内容:

在修改pg_hba.conf文件
执行vi /var/lib/pgsql/13/data/pg_hba.conf,设置为允许192.168.11.0上的所有主机通过用户名验证的方式访问数据库

表示允许网段192.168.11.0
192.168.11.0/24中,数字24是子网掩码,表示允许192.168.1.0--192.168.1.255的计算机访问
192.168.0.0/16,数字16是一个网络,表示允许192.168.0.0--192.168.255.255的计算机访问
192.168.0.0/32,则表示仅允许192.168.0.0单一主机的计算机访问
0.0.0.0/0,表示允许任意IP访问数据库

重启postgresql服务
执行systemctl restart postgresql-13

安装PostGIS 

yum安装PostGIS扩展

PostGIS从2.0之后,要安装很多依赖组件,为了便于依赖组件的安装,先安装epel (Extra Packages for Enterprise Linux)
执行 yum install epel-release 

执行 yum list postgis*,查看可用的postgis的包,选择和postgresql-13对应的所有版本,建议安装:postgis32_13.x86_64  

  执行 yum install postgis32_13.x86_64 ,安装postgis组件

执行以上步骤后完成postgis安装  

安装成功后可以利用命令查看安装信息

        rpm -qi postgis32_13

测试PostGIS扩展

1、切换到postgres用户
   su postgres

2、建立数据库

        建立名为 postgis_test,所属用户为postgres的数据库

        bash-4.2$ createdb postgis_test -O postgres   

3、连接数据库

        bash-4.2$ psql -d postgis_test

         

4、开启PostGIS扩展

        postgis_test=# create extension postgis;

         

5、验证PostGIS扩展

        postgis_test=# select postgis_version();

使用pgAdmin登录后验证PostGIS扩展

postgis_test=# select ST_SetSRID(ST_Point(-108,30.741),4326),ST_GeomFromText('POINT(-106.51 29.741)',4326);

# 新建数据库,安装 PostGIS 插件,每个新建的数据库,如果想用 PostGIS 插件,必须执行以下步骤创建 PostGIS 扩展
[root@proxy ~]# su - postgres
-bash-4.2$ createdb postgis
-bash-4.2$ psql
postgres=# CREATE EXTENSION postgis;
postgres=# CREATE EXTENSION postgis_raster;
postgres=# CREATE EXTENSION postgis_topology;
postgres=# CREATE EXTENSION address_standardizer;
postgres=# CREATE EXTENSION postgis_sfcgal;
postgres=# CREATE EXTENSION fuzzystrmatch;
postgres=# CREATE EXTENSION postgis_tiger_geocoder;
postgres=# CREATE EXTENSION address_standardizer_data_us;

或者使用pgadmin进行添加扩展

部分SQL语句创建及查询

--给PostGIS添加扩展及扩展解释

CREATE EXTENSION postgis; --postgis的基本核心功能,仅支持地理图形(矢量要素),在其他Extension前启用

CREATE EXTENSION postgis_raster; --对栅格数据的支持

CREATE EXTENSION postgis_topology; --拓扑功能的支持

CREATE EXTENSION postgis_sfcgal; --这个Extension主要是集成了CGAL(Computational Geometry Algorithms Library,计算几何算法库),来进行三维空间数据的空间运算,例如:ST_3DDifference、ST_3DUnion 等,可见是通常空间运算在三维空间上的拓展

CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder; --TIGER指的是(拓扑集成地理编码和参考),这个是美国人口普查局的GIS数据,提供了美国全国的行政区划、交通道路、水系等空间数据。这个Extension提供了TIGER数据的地理编码支持,需要注意的是这个Extension启用前,需要先启用fuzzystrmatch(字符串模糊查询)Extension,以及可选的address_standardizer(TIGER数据地址规则化)address_standardizer_data_us(地址规则化示例数据集)Extension

-- --二维空间数据创建
-- -- 创建含有单点的几何表
-- CREATE TABLE point (name varchar, geom geometry);
-- INSERT INTO point VALUES ('Point', 'POINT(0 0)');

-- -- 创建含有单线的几何表
-- CREATE TABLE line (name varchar, geom geometry);
-- INSERT INTO line VALUES ('road', 'LINESTRING(0 0, 1 1, 2 1, 2 2)');

-- -- 创建含有单面的几何表
-- CREATE TABLE polygon (name varchar, geom geometry);
-- INSERT INTO polygon VALUES ('boundary', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))');

-- --三维空间数据创建
-- -- 创建含有三棱柱的表
-- CREATE TABLE triangularPyramid (name varchar, geom geometry); 
-- INSERT INTO triangularPyramid (name, geom) VALUES ('beam', ST_Extrude(ST_GeomFromText('POLYGON((0 0,1 3,2 0, 0 0))'),0,0,10));

-- -- 创建含有立方体的表
-- CREATE TABLE cubeBox (name varchar, geom geometry); 
-- INSERT INTO cubeBox (name, geom) VALUES ('box', ST_Extrude(ST_GeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0))'),0,0,2));

-- --查询预览
-- -- 查询含有三棱柱的表
-- SELECT name, ST_AsText(geom) AS ewkt FROM triangularPyramid;
-- -- 查询含有立方体的表
-- SELECT name, ST_AsText(geom) AS ewkt FROM cubeBox;
-- -- 查看三棱柱的X3D格式文本
-- SELECT ST_AsX3D(geom) AS x3d FROM triangularPyramid;
-- -- 查看立方体的X3D格式文本
-- SELECT ST_AsX3D(geom) AS x3d FROM cubeBox;

 \dx 查询显示以下数据

  简洁安装参考

从 PostgreSQL RPM repository 中预编译安装 PostGIS 软件,版本 3.2.0
同样这种方式也只适用于创建新环境或者现有数据库的扩展插件位置在 /usr/pgsql-13/share/extension,如果系统里没有通过 YUM 方式安装 PostgreSQL,yum install postgis 的同时会安装 PostgreSQL 13.5。

从这里能查看到 PostgreSQL 提供的RPM存储库中有哪些最新的软件包: https://yum.postgresql.org/13/redhat/rhel-7-x86_64/repoview/

# 对于可以直接连接互联网的主机,直接下载 pgdg-redhat-repo-latest.noarch.rpm 再 yum install postgis32_13 即可完成安装
# 一般安装操作系统会默认安装 PostgreSQL 9.2,建议先将其卸载掉,再安装新版本
[root@proxy ~]# yum remove postgresql*
[root@proxy ~]# yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@proxy ~]# yum -y install postgis32_13

# 对于内网环境又没有YUM源,同样可以用老方法,在外网主机上下载制作YUM源传到内网主机上进行安装
# 对于没有外网的小伙伴,可以直接使用我打包好的进行测试,链接:https://pan.baidu.com/s/1OEmZM1eAiwFLNQbAYQtaxA 提取码:kqlf 
[root@proxy ~]# yum remove postgresql*
[root@proxy ~]# yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@proxy ~]# yum -y install postgis32_13 --downloadonly --downloaddir=/root/postgis32_13
[root@proxy ~]# yum install http://createrepo.baseurl.org/download/createrepo-0.4.4-1.noarch.rpm -y
[root@proxy ~]# cd /root/postgis32_13
# 创建YUM源
[root@proxy postgis32_13]# createrepo -v ./
# 打包
[root@proxy postgis32_13]# cd ..
[root@proxy ~]# tar -zcvf /root/postgis32_13-rpm.tar.gz postgis32_13
# 将打好的包传输到内网主机配置YUM安装,这里我直接使用外网主机测试
[root@proxy ~]# cd /enmo/soft
[root@proxy soft]# tar -zxvf postgis32_13-rpm.tar.gz 
# 配置yum源,加入以下内容
[root@proxy soft]# vi /etc/yum.repos.d/enmo.repo
[postgis-32]
name=postgis
baseurl=file:///enmo/soft/postgis32_13
enabled=yes
gpgcheck=0

# 执行yum安装
[root@proxy ~]# yum clean all
[root@proxy ~]# yum -y install postgis32_13

 
# 初始化数据库,对于已经存在 PostgreSQL 数据库的环境,可以选择忽略此步骤
[root@proxy ~]# /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK
[root@proxy ~]# systemctl enable postgresql-13
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-13.service to /usr/lib/systemd/system/postgresql-13.service.
[root@proxy ~]# systemctl start postgresql-13

 
# 新建数据库,安装 PostGIS 插件,每个新建的数据库,如果想用 PostGIS 插件,必须执行以下步骤创建 PostGIS 扩展
[root@proxy ~]# su - postgres
Last login: Sat Nov 20 20:40:56 CST 2021 on pts/0
-bash-4.2$ createdb postgis
-bash-4.2$ psql
postgres=# CREATE EXTENSION postgis;
postgres=# CREATE EXTENSION postgis_raster;
postgres=# CREATE EXTENSION postgis_topology;
postgres=# CREATE EXTENSION address_standardizer;
postgres=# CREATE EXTENSION postgis_sfcgal;
postgres=# CREATE EXTENSION fuzzystrmatch;
postgres=# CREATE EXTENSION postgis_tiger_geocoder;
postgres=# CREATE EXTENSION address_standardizer_data_us;


postgis=# \dx
                                                                         List of installed extensions
             Name             |  Version   |   Schema   |                                                     Description                                                     
------------------------------+------------+------------+---------------------------------------------------------------------------------------------------------------------
 address_standardizer         | 3.2.0beta1 | public     | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
 address_standardizer_data_us | 3.2.0beta1 | public     | Address Standardizer US dataset example
 fuzzystrmatch                | 1.1        | public     | determine similarities and distance between strings
 plpgsql                      | 1.0        | pg_catalog | PL/pgSQL procedural language
 postgis                      | 3.2.0beta1 | public     | PostGIS geometry and geography spatial types and functions
 postgis_raster               | 3.2.0beta1 | public     | PostGIS raster types and functions
 postgis_sfcgal               | 3.2.0beta1 | public     | PostGIS SFCGAL functions
 postgis_tiger_geocoder       | 3.2.0beta1 | tiger      | PostGIS tiger geocoder and reverse geocoder
 postgis_topology             | 3.2.0beta1 | topology   | PostGIS topology spatial types and functions
(9 rows)
 

# postgis32_13提供以下软件版本
PostGIS      3.2.0
PostgreSQL   13.5
GEOS         3.10.0
SFCGAL       1.3.1
GDAL         3.3.3
PROJ         7.2.1
json-c       0.11

部分内容来自博客PostGIS插件,包括YUM和编译安装PostGIS

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向着太阳往前冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值