openGauss数据库PostGIS 安装与使用
目录
概述
1.PostGIS 安装
1.1 GCC-7.3编译器安装
1.2PostGIS依赖库安装
1.3.安装Postgis
2.使用Extension
2.1创建PostGIS Extension
2.2使用Extension
2.3删除Extension
概述
PostGIS Extension是PostgreSQL的空间数据库扩展,提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。PostGIS Extension完全遵循OpenGIS规范。openGauss提供PostGIS Extension(版本为PostGIS-2.4.2),需要单独安装插件。
1.PostGIS 安装
环境信息:Centos 7.6 + openGauss 3.1.0 极简版
环境需要联网下载一些依赖包。
1.1 GCC-7.3编译器安装
PostGIS安装依赖GCC-7.3编译器(GNU编译器套件)。若数据库实例中已经安装GCC-7.3编译器,可直接跳过本步骤。我本机环境上是4.8.5,需要升级下。
GCC-7.3编译器推荐使用源码由低版本的gcc和g++编译器进行升级安装。若数据库实例中没有低版本gcc和g++编译器,可以通过挂载操作系统镜像等方法进行安装,这里不做赘述。
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz [omm@openGhostxx gcc-7.3.0]$ tar -zxvf gcc-7.3.0.tar.gz [omm@openGhostxx packages]$ cd gcc-7.3.0 [omm@openGhostxx gcc-7.3.0]$ ./contrib/download_prerequisites
这一步会下载一些依赖,需要确保联网。
./configure --prefix=/usr/local/gcc-7.3.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib --disable-libsanitizer --disable-libcilkrts
然后make,时间会比较长,非常长。
make
make install
完成后会提示安装目录,后续会用到。
设置下环境变量,不然gcc -v还是旧版本。
在vim编辑器中打开~/.bashrc文档。
vi ~/.bashrc
加入以下内容,实际路径根据情况替换为前面make install的路径。
export CC=/usr/local/gcc-7.3.0/bin/gcc export CXX=/usr/local/gcc-7.3.0/bin/g++ export LD_LIBRARY_PATH=/usr/local/gcc-7.3.0/lib/../lib64:$LD_LIBRARY_PATH export PATH=/usr/local/gcc-7.3.0/bin:$PATH
然后source生效
source ~/.bashrc
最后查看下
1.2PostGIS依赖库安装
- 下载postgis插件包并解压重命名。
[omm@openGhostxx ~]$ cd $GAUSSHOME/ [omm@openGhostxx openGauss]$ wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz [omm@openGhostxx openGauss]$ tar -zxvf postgis-xc-master-2020-09-17.tar.gz [omm@openGhostxx openGauss]$ mv postgis-xc-master postgis-xc/
2.下载补丁文件到$GAUSSHOME/postgis-xc/目录,并打入补丁。
下载路径:gpl_dependency/postgis/postgis_2.4.2-2.patch · openGauss/openGauss-third_party - Gitee.com
cd $GAUSSHOME/postgis-xc/ [omm@openGhostxx postgis-xc]$ patch -p1 < $GAUSSHOME/postgis_2.4.2-2.patch patching file gdal-1.11.0/frmts/postgisraster/postgisraster.h patching file gdal-1.11.0/ogr/ogrsf_frmts/pg/ogr_pg.h patching file gdal-1.11.0/ogr/ogrsf_frmts/pg/ogrpgutility.h patching file postgis-2.4.2/configure patching file postgis-2.4.2/postgis--2.4.2.sql patching file postgis-2.4.2/postgis_svn_revision.h patching file postgis-2.4.2/raster/rt_pg/rtpostgis.c patching file postgis-2.4.2/topology/Makefile.in patching file postgis-2.4.2/topology/postgis_topology.c patching file postgis-2.4.2/topology/sql/topogeometry/totopogeom.sql.in patching file postgis-2.4.2/topology/sql/topogeometry/type.sql.in patching file postgis-2.4.2/topology/topology.sql.in
3.从网站https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/extension_dependency.h下载postgis依赖头文件到$GAUSSHOME/include/postgresql/server/。
4.编译proj
PROJ框架在做投影,坐标系转换时,其操作风格类似于Linux Shell命令。
cd $GAUSSHOME/postgis-xc/proj-4.9.2 chmod +x ./configure ./configure --prefix=$GAUSSHOME/install/proj make -sj make install -sj
5.编译Geos
GEOS的前身是JTS,JTS提供了全功能的,强大的空间操作和空间判断。
cd $GAUSSHOME/postgis-xc/geos-3.6.2 chmod +x ./configure ./configure --prefix=$GAUSSHOME/install/geos make -sj make install -sj
6.编译libxml
libxml是一个用于解析xml文件的库,在各个平台下都能使用,也支持多种语言。
cd $GAUSSHOME/postgis-xc/libxml2-2.7.1 chmod +x ./configure ./configure --prefix=$GAUSSHOME/install/libxml2 make -sj make install -sj
7.安装JSON-C
JSON-C实现了一个引用计数对象模型,它允许您轻松地使用C语言来构建JSON对象,将它们输出为JSON格式的字符串,并将JSON格式字符串解析回JSON对象的C语言表示形式。
cd $GAUSSHOME/postgis-xc/json-c-json-c-0.12.1-20160607
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/json
make -sj
make install -sj
1.3.安装Postgis
cd $GAUSSHOME/postgis-xc/postgis-2.4.2 chmod +x ./configure ./configure --prefix=$GAUSSHOME/install/postgis2.4.2 --with-pgconfig=$GAUSSHOME/bin/pg_config --with-projdir=$GAUSSHOME/install/proj --with-geosconfig=$GAUSSHOME/install/geos/bin/geos-config --with-jsondir=$GAUSSHOME/install/json --with-xml2config=$GAUSSHOME/install/libxml2/bin/xml2-config --without-raster --without-topology CFLAGS='-O2 -fpermissive -DPGXC -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w' CC=g++ make -sj make install -sj
如果编译出现类似/home/carrot/data/openGauss-server/third_party/buildtools/gcc/res/lib64/libstdc++.la 找不到,可以自建目录,将libstdc++.la拷贝进去,然后再make -sj(如果libstdc++.so出现类似问题,按同样方法处理)。
omm用户执行下面的语句,完成PostGIS相关动态链接库在数据库实例节点中的分发。因为我的openGauss是单机极简版,所以使用cp 复制到节点路径。如果是企业版需要使用tranfer.py,具体参考openGauss产品文档PostGIS安装章节。
mv $GAUSSHOME/lib/postgresql/postgis-2.4.so $GAUSSHOME/install/postgis-2.4.so cp $GAUSSHOME/install/postgis-2.4.so $GAUSSHOME/lib/postgresql/postgis-2.4.so cp $GAUSSHOME/install/json/lib/libjson-c.so.2 $GAUSSHOME/lib/libjson-c.so.2 cp $GAUSSHOME/install/geos/lib/libgeos_c.so.1 $GAUSSHOME/lib/libgeos_c.so.1 cp $GAUSSHOME/install/proj/lib/libproj.so.9 $GAUSSHOME/lib/libproj.so.9 cp $GAUSSHOME/install/geos/lib/libgeos-3.6.2.so $GAUSSHOME/lib/libgeos-3.6.2.so cp $GAUSSHOME/install/postgis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0 cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis--2.4.2.sql cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/postgis.control
最后重启数据库实例。
gs_ctl stop -D /opt/software/openGauss/data/single_node/ gs_ctl start -D /opt/software/openGauss/data/single_node/
2.使用Extension
下列SQL语句展示PostGIS的简单使用,对于各函数的具体使用,请参考《PostGIS-2.4.2用户手册》。
2.1创建PostGIS Extension
可直接使用CREATE EXTENSION命令进行创建:
openGauss=# CREATE EXTENSION postgis;
2.2使用Extension
示例1:几何表的创建。
CREATE TABLE cities ( id integer, city_name varchar(50) ); SELECT AddGeometryColumn('cities', 'position', 4326, 'POINT', 2);
示例2:几何数据的插入。
INSERT INTO cities (id, position, city_name) VALUES (1,ST_GeomFromText('POINT(-9.5 23)',4326),'CityA'); INSERT INTO cities (id, position, city_name) VALUES (2,ST_GeomFromText('POINT(-10.6 40.3)',4326),'CityB'); INSERT INTO cities (id, position, city_name) VALUES (3,ST_GeomFromText('POINT(20.8 30.3)',4326), 'CityC');
示例3:计算三个城市间任意两个城市距离。
SELECT p1.city_name,p2.city_name,ST_Distance(p1.position,p2.position) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;v
2.3删除Extension
在openGauss中删除PostGIS Extension的方法如下所示:
DROP EXTENSION postgis CASCADE;
说明: 如果Extension被其它对象依赖(如创建的几何表),需要加入CASCADE(级联)关键字,删除所有依赖对象。
确认执行OK后,可执行下列命令删除$GAUSSHOME/postgis安装目录。
rm -rf $GAUSSHOME/postgis-xc
最后:除了上面这种安装插件支持空间数据,还有基于openGauss的Yukon 数据库扩展地理空间数据的存储和管理能力, 提供专业的GIS功能,管理地理空间数据。Yukon 目前共提供 postgis、postgis_raster、postgis_sfcgal、yukon_geomodel、yukon_geogridcoder五个扩展,感兴趣的同学可以了解。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用“宝塔一键迁移”工具,将单机版typecho博客系统迁移到京东云cvm云主机
作者:京东科技 林中 服务器更换、网站搬家,对于很多开发者新手来说不是一件容易的事情,需要迁移网站程序、数据库,修改数据库连接文件等。在云迁移方案中,宝塔是非常简单好用的服务器运维面板,能够极大提升运维管理效率。本文将介绍如何使用“宝塔一键迁移”工具将单机版typecho博客系统快速迁移到京东云cvm云主机。 一、单机版typecho博客系统迁移方案分析 Typecho博客系统是一个开源的php应用,部署架构相对简单,具体包括: 1、运行在标准的LNMP环境下。 2、typecho应用作为一个网站,部署在webroot目录下。 3、后端使用mysql等开源数据库作为用户数据库的存储。 其中,应用部分:1、LNMP运行环境 2、typecho应用 3、mysql数据库软件,这些属于标准的软件,可以采用在目标主机重新部署的方式,只需要保证对应组件的版本一致即可。数据部分:mysql中存储的数据,会记录客户的主题分类、博客内容等,需要采用数据库导出/倒入的方式,进行离线迁移(为了保证数据一致性,需要一定时间的业务中断)。 了解到客户目前在腾讯云的主机,内嵌了宝塔linux面板工具,使用面板工...
- 下一篇
ChatGPT/InstructGPT详解
作者:京东零售 刘岩 前言 GPT系列是OpenAI的一系列预训练文章,GPT的全称是Generative Pre-Trained Transformer,顾名思义,GPT的目的就是通过Transformer为基础模型,使用预训练技术得到通用的文本模型。目前已经公布论文的有文本预训练GPT-1,GPT-2,GPT-3,以及图像预训练iGPT。据传还未发布的GPT-4是一个多模态模型。最近非常火的ChatGPT和今年年初公布的[1]是一对姐妹模型,是在GPT-4之前发布的预热模型,有时候也被叫做GPT3.5。ChatGPT和InstructGPT在模型结构,训练方式上都完全一致,即都使用了指示学习(Instruction Learning)和人工反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)来指导模型的训练,它们不同的仅仅是采集数据的方式上有所差异。所以要搞懂ChatGPT,我们必须要先读懂InstructGPT。 1. 背景知识 在介绍ChatGPT/InstructGPT之前,我们先介绍它们依赖的基础算法。 1.1 G...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,8上快速安装Gitea,搭建Git服务器