安装postgis前先安装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; -- -- 查看三棱柱的X 3D格式文本 -- SELECT ST_AsX 3D(geom) AS x 3d FROM triangularPyramid; -- -- 查看立方体的X 3D格式文本 -- SELECT ST_AsX 3D(geom) AS x 3d 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-x 86_ 64 /repoview / # 对于可以直接连接互联网的主机,直接下载 pgdg-redhat-repo-latest.noarch.rpm 再 yum install postgis 32_ 13 即可完成安装 # 一般安装操作系统会默认安装 PostgreSQL 9.2,建议先将其卸载掉,再安装新版本 [root@proxy ~]# yum remove postgresql * [root@proxy ~]# yum -y install https: / /download.postgresql.org /pub /repos /yum /reporpms /EL- 7-x 86_ 64 /pgdg-redhat-repo-latest.noarch.rpm [root@proxy ~]# yum -y install postgis 32_ 13 # 对于内网环境又没有YUM源,同样可以用老方法,在外网主机上下载制作YUM源传到内网主机上进行安装 # 对于没有外网的小伙伴,可以直接使用我打包好的进行测试,链接:https: / /pan.baidu.com /s / 1OEmZM 1eAiwFLNQbAYQtaxA 提取码:kqlf [root@proxy ~]# yum remove postgresql * [root@proxy ~]# yum -y install https: / /download.postgresql.org /pub /repos /yum /reporpms /EL- 7-x 86_ 64 /pgdg-redhat-repo-latest.noarch.rpm [root@proxy ~]# yum -y install postgis 32_ 13 --downloadonly --downloaddir = /root /postgis 32_ 13 [root@proxy ~]# yum install http: / /createrepo.baseurl.org /download /createrepo- 0.4.4- 1.noarch.rpm -y [root@proxy ~]# cd /root /postgis 32_ 13 # 创建YUM源 [root@proxy postgis 32_ 13]# createrepo -v . / # 打包 [root@proxy postgis 32_ 13]# cd .. [root@proxy ~]# tar -zcvf /root /postgis 32_ 13-rpm.tar.gz postgis 32_ 13 # 将打好的包传输到内网主机配置YUM安装,这里我直接使用外网主机测试 [root@proxy ~]# cd /enmo /soft [root@proxy soft]# tar -zxvf postgis 32_ 13-rpm.tar.gz # 配置yum源,加入以下内容 [root@proxy soft]# vi /etc /yum.repos.d /enmo.repo [postgis- 32] name =postgis baseurl = file: / / /enmo /soft /postgis 32_ 13 enabled =yes gpgcheck = 0 # 执行yum安装 [root@proxy ~]# yum clean all [root@proxy ~]# yum -y install postgis 32_ 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.0beta 1 | public | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step. address_standardizer_ data_us | 3.2.0beta 1 | 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.0beta 1 | public | PostGIS geometry and geography spatial types and functions postgis_raster | 3.2.0beta 1 | public | PostGIS raster types and functions postgis_sfcgal | 3.2.0beta 1 | public | PostGIS SFCGAL functions postgis_tiger_geocoder | 3.2.0beta 1 | tiger | PostGIS tiger geocoder and reverse geocoder postgis_topology | 3.2.0beta 1 | topology | PostGIS topology spatial types and functions ( 9 rows) # postgis 32_ 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