暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

磐维数据库PostGIS插件的安装使用

原创 飞天 2024-11-18
519

磐维数据库介绍

磐维数据库,简称"PanWeiDB"。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。其产品内核能力基于华为openGauss开源软件,并进一步提升了系统稳定性。

PostGIS介绍

PostGIS 是在对象关系型数据库 PostgreSQL 上增加了存储管理空间数据的能力的开源 GIS 数据库,它在 PostgreSQL 的基础上增加了表达地理信息的空间数据类型和操作这些类型的函数。
PanWeiDB V2.0-S3.0.1_B01 版本可使用 PostGIS 的如下模块:

  • 支持矢量分析的 postgis 模块。
  • 支持计算几何的 sfcgal 模块。
  • 支持栅格分析的 raster 模块。
  • 支持拓扑分析的 topology 模块。

支持扩展组件如下:

  • Fuzzystrmatch 扩展,是一个判断字符串之间相似性和距离的一个插件,主要是提供 Soundex、Levenshtein、Metaphone 和 Double
    Metaphone 四个功能,开源 PostgreSQL 的 contrib 中包含此扩展。PostGIS 中的 postgis_tiger_geocoder 依赖此扩展。
  • postgis_tiger_geocoder 扩展,TIGER 指的是拓扑集成地理编码和参考,这个扩展提供了 TIGER 数据的地理编码支持。

须知:
此扩展启用前,需要先启用 fuzzystrmatch(字符串模糊查询)插件,以及可选的 address_standardizer、address_standardizer_data_us。

  • address_standardizer 扩展, TIGER 数据地址规则化,是基于 PAGC标准的地名标准化的扩展。
  • address_standardizer_data_us 扩展,TIGER 地址规则化示例数据集,包含了基于 PAGC 标准的地名标准化的美国样例数据。

注意事项:

  • PanWeiDB 创建函数不支持添加 WINDOW 关键字,所以不支持函数ST_ClusterDBSCAN 和 ST_ClusterKMeans。
  • PanWeiDB 不支持 BRIN 索引,所以不支持geog_brin_inclusion_add_value 和geom2d_brin_inclusion_add_value 等相关函数。
  • PanWeiDB 不支持 WITH ORDINALITY 功能,所以topology.ValidateTopology 提供的功能与 PostGIS 3.2 版本不一致。
  • 不支持 PostGIS 3.2 版本中的 ST_AsGeoJson 函数。

安装 PostGIS 插件

环境说明

操作系统:centos7.9,磐维数据库:V2-S3.0.0版本,一主两备集群。

安装步骤

1、获取安装包

从磐维大礼包中下载相应平台的postgis安装包,并上传到数据库主机的/opt目录。
安装包名称:Postgis_3_2_0_centos7_x86-64_20240730.tar

2、解压安装包(root用户,在三个节点都执行)

[root@node2 opt]# tar -zxf Postgis_3_2_0_centos7_x86-64_20240730.tar.gz
复制
  • 查看解压后的目录、文件:
[root@node2 opt]# ls
containerd  postgis  Postgis_3_2_0_centos7_x86-64_20240730.tar.gz 
[root@node2 opt]# cd postgis
[root@node2 postgis]# ls
bin  include  lib   share

[root@node2 postgis]# ls bin/*
bin/pgsql2shp  bin/raster2pgsql  bin/shp2pgsql

[root@node2 postgis]# ls lib/*
lib/libboost_atomic.so.1.71.0  lib/libboost_date_time.so.1.71.0      lib/libboost_system.so.1.71.0  lib/libCGAL_Core.so.13  lib/libgdal.so.27   lib/libgeos.so.3.10.2  lib/libjson-c.so.2  lib/libproj.so.15
lib/libboost_chrono.so.1.71.0  lib/libboost_serialization.so.1.71.0  lib/libboost_thread.so.1.71.0  lib/libCGAL.so.13       lib/libgeos_c.so.1  lib/libgmp.so.10.3.2   lib/libmpfr.so.6    lib/libSFCGAL.so.1

lib/postgresql:
address_standardizer-3.so  postgis-3.so  postgis_raster-3.so  postgis_sfcgal-3.so  postgis_topology-3.so  proc_srclib

[root@node2 postgis]# ls include/*
ls: cannot access include/*: No such file or directory

[root@node2 postgis]# ls share/*
share/doc:
postgresql

share/postgresql:
contrib  extension
复制

3、将解压得到postgis 文件夹下的内容复制到 $GAUSSHOME 目录中(root用户,在三个节点都执行)

说明:$GAUSSHOME为数据库的安装路径

[root@node2 opt]# cp -r postgis/* $GAUSSHOME
[root@node2 opt]# chown -R omm: $GAUSSHOME
复制

4、yum 安装相关依赖

如果不能使用 yum 可下载对应版本的安装包进行安装。

[root@node2 opt]# yum install -y gmp gmp-devel(版本 6.0.0)
[root@node2 opt]# yum install -y mpfr mpfr-devel(版本 3.1.1)
[root@node2 opt]# yum install -y boost boost-devel(版本 1.53.0)
复制

5、启动数据库并设置guc参数behavior_compat_options

说明:$PGDATA为数据库的实例路径

su - omm
pw_guc reload -N all  -D $PGDATA -c "behavior_compat_options='bind_procedure_searchpath, display_leading_zero'"
复制

6、重启数据库

gs_om -t restart
复制

7、创建插件

postgres=# create extension postgis;
CREATE EXTENSION
postgres=# create extension postgis_sfcgal;
CREATE EXTENSION
postgres=# create extension postgis_raster;
CREATE EXTENSION
postgres=# create extension postgis_topology;
CREATE EXTENSION
postgres=# 
复制

8、查询测试

postgres=# SELECT Box3D(ST_GeomFromEWKT('LINESTRING(1 2 3, 3 4 5, 5 6 5)'));
       box3d        
--------------------
 BOX3D(1 2 3,5 6 5)
(1 row)
复制

示例1、创建 address_standardizer_data_us 扩展

1、创建扩展(前提条件:已创建 PostGIS 插件)

postgres=# create extension address_standardizer_data_us;
CREATE EXTENSION
复制

2、查看已创建扩展

postgres=# \dx
                                              List of installed extensions
             Name             | Version |   Schema   |                            Description                            
------------------------------+---------+------------+-------------------------------------------------------------------
 address_standardizer_data_us | 3.2.0   | public     | Address Standardizer US dataset example
 file_fdw                     | 1.0     | pg_catalog | foreign-data wrapper for flat file access
 pg_zhtrgm                    | 1.4     | pg_catalog | text similarity measurement and index searching based on trigrams
 plpgsql                      | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgis                      | 3.2.0   | public     | PostGIS geometry and geography spatial types and functions
 postgis_raster               | 3.2.0   | public     | PostGIS raster types and functions
 postgis_sfcgal               | 3.2.0   | public     | PostGIS SFCGAL functions
 postgis_topology             | 3.2.0   | topology   | PostGIS topology spatial types and functions
 security_plugin              | 1.0     | pg_catalog | provides security functionality
(9 rows)
复制

示例2、创建 fuzzystrmatch 和 postgis_tiger_geocoder 扩展

1、创建扩展(前提条件:已创建 PostGIS 插件)

postgres=# create extension fuzzystrmatch;
CREATE EXTENSION
postgres=# create extension postgis_tiger_geocoder;
CREATE EXTENSION
复制

2、查看已创建扩展。

postgres=# \dx
                                              List of installed extensions
             Name             | Version |   Schema   |                            Description                            
------------------------------+---------+------------+-------------------------------------------------------------------
 address_standardizer_data_us | 3.2.0   | public     | Address Standardizer US dataset example
 file_fdw                     | 1.0     | pg_catalog | foreign-data wrapper for flat file access
 fuzzystrmatch                | 1.0     | public     | determine similarities and distance between strings
 pg_zhtrgm                    | 1.4     | pg_catalog | text similarity measurement and index searching based on trigrams
 plpgsql                      | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgis                      | 3.2.0   | public     | PostGIS geometry and geography spatial types and functions
 postgis_raster               | 3.2.0   | public     | PostGIS raster types and functions
 postgis_sfcgal               | 3.2.0   | public     | PostGIS SFCGAL functions
 postgis_tiger_geocoder       | 3.2.0   | tiger      | PostGIS tiger geocoder and reverse geocoder
 postgis_topology             | 3.2.0   | topology   | PostGIS topology spatial types and functions
 security_plugin              | 1.0     | pg_catalog | provides security functionality
(11 rows)

postgres=# 
复制

示例3、创建 address_standardizer 扩展

1、创建扩展(前提条件:已创建 PostGIS 插件)

postgres=# create extension address_standardizer;
CREATE EXTENSION
postgres=# 
复制

2、查看已创建扩展。

postgres=# \dx address_standardizer
                                                                 List of installed extensions
         Name         | Version | Schema |                                                     Description                                                     
----------------------+---------+--------+---------------------------------------------------------------------------------------------------------------------
 address_standardizer | 3.2.0   | public | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
(1 row)

postgres=# 
复制

总结

把学到的东西分享出来是一种快乐,愿你我都学有所获,谢谢!

最后修改时间:2024-11-18 17:22:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

飞天
暂无图片 暂无图片
关注
暂无图片
获得了1054次点赞
暂无图片
内容获得198次评论
暂无图片
获得了238次收藏
TA的专栏
磐维数据库
收录50篇内容
MySql数据库
收录24篇内容
KINGBASE数据库
收录7篇内容
目录
  • 磐维数据库介绍
  • PostGIS介绍
  • 安装 PostGIS 插件
    • 环境说明
    • 安装步骤
      • 1、获取安装包
      • 2、解压安装包(root用户,在三个节点都执行)
      • 3、将解压得到postgis 文件夹下的内容复制到 $GAUSSHOME 目录中(root用户,在三个节点都执行)
      • 4、yum 安装相关依赖
      • 5、启动数据库并设置guc参数behavior_compat_options
      • 6、重启数据库
      • 7、创建插件
      • 8、查询测试
  • 示例1、创建 address_standardizer_data_us 扩展
  • 示例2、创建 fuzzystrmatch 和 postgis_tiger_geocoder 扩展
  • 示例3、创建 address_standardizer 扩展
  • 总结