✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨
这里有:
- 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
- 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
- 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!
👉 点击直达→ 盹猫猫的个人小站 👈
🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~
目录
[🐎 前言](#🐎 前言)
[❓ 什么是postgis扩展?](#❓ 什么是postgis扩展?)
[🌲 环境准备](#🌲 环境准备)
[👤 与KingBase官方客服沟通](#👤 与KingBase官方客服沟通)
[⚙️ 安装步骤](#⚙️ 安装步骤)
[🎁 解压扩展](#🎁 解压扩展)
[🏃 复制扩展](#🏃 复制扩展)
[♻️ 重启容器](#♻️ 重启容器)
[⭕ 总结](#⭕ 总结)
欢迎来到 盹猫(>^ω^<)的博客
本篇文章主要介绍了
**kingbase数据库集成Postgis扩展**
❤博主广交技术好友,喜欢文章的可以关注一下❤
🐎 前言
在postgres数据库中,我们可以为数据库添加postgis扩展来实现来直接使用一些空间计算方法,如一个点或路线附近多少公里内的建筑、水源的查询功能,自己实现起来可能并容易。同样的kingbase数据库有postgres数据库模式,可以支持postgis扩展么?
答案是肯定的,本篇文章就是记录如何在kingbase数据库中集成postgis扩展,当然该集成方法同样适用于其它扩展的集成。
❓ 什么是postgis扩展?
PostGIS 是基于 PostgreSQL 数据库的空间数据扩展 ,简单说就是给普通的 PostgreSQL 数据库 "装上处理地理 / 空间数据的能力"------ 原本 PostgreSQL 只能存文字、数字、时间这类常规数据,装上 PostGIS 后,就能直接存储点、线、面、轨迹、地理边界 等空间数据,还能执行距离计算、区域查询、空间交集、地图图层叠加等专业的地理空间分析操作,是地理信息系统(GIS)开发中最常用的开源空间数据库扩展。
废话不多说,让我们看看如何集成吧!
Let's GO!
🌲 环境准备
👤 与KingBase官方客服沟通
这是很难理解的一点,kingbase官方并没有在说明文档中提供一个可供下载扩展的页面,所以如果需要你需要与官方客服沟通,客服需要提供以下信息:
版本号:根据实际安装版本提供,这里我用的是v008r006c009b0014。
CPU架构:同样根据实际版本提供,这里我用的是X86。

如果是docker安装,可以通过查看docker镜像确认安装的版本。
客服会通过让下载一个压缩包,这是kingbase对应当前版本的postgis扩展文件,如下图所示:

⚙️ 安装步骤
🎁 解压扩展
这里kingbase数据库使用docker安装,所以需要将下载的文件解压到容器的持久化目录下(该目录为使用dokcer run 启动容器时的配置的目录),这里是**/mnt/data/postgis ,** 解压后即可在该目录下获得postgis-3.1.2文件夹 ,该文件夹的内容如下:

🏃 复制扩展
首先需要进入kingbase容器内部,使用docker exec -it命令进行交互式界面(进入容器**/home/kingbase**目录下):
bash
docker exec -it kingbase /bin/bash
容器内kingbase目录下有三个文件,分别是入口文件、安装目录、持久化目录(也就是postgis所在目录,这根据实际启动时配置的目录寻找)

我们需要将前面提到的bin、lib、share三个目录文件进行移动到install目录内,具体路径如下:
bash
#复制bin目录
cp ./userdata/postgis/postgis-3.1.2/bin/* ./install/kingbase/bin/
#复制lib目录
cp ./userdata/postgis/postgis-3.1.2/lib/* ./install/kingbase/lib/
#复制extension目录
cp ./userdata/postgis/postgis-3.1.2/share/extension/* ./install/kingbase/share/extension/
其中如果有需要覆盖的文件,可以进行覆盖或跳过。
♻️ 重启容器
可以将容器重新启动或在容器内重新启动数据库服务,这里使用以下命令对容器进行重启:
bash
docker restart kingbase
然后进入容器后使用ksql -d 数据库名 进入我们需要添加扩展的数据库,使用如下命令添加postgis扩展:
bash
CREATE EXTENSION IF NOT EXISTS postgis;
这里因为已经添加过了,所以显示已经存在,如果没添加过则显示CREATE EXTENSION为添加成功,如下图:

我们可以使用如下SQL测试扩展是否生效:
计算:天安门到上海外滩的经纬度距离
bash
SELECT ST_Distance(
ST_SetSRID(ST_MakePoint(116.403874, 39.914885), 4326)::geography, -- 北京天安门(经纬度+4326坐标系)
ST_SetSRID(ST_MakePoint(121.473701, 31.230416), 4326)::geography -- 上海外滩(经纬度+4326坐标系)
) AS distance_m;
显示如下图,无报错,则postgis已生效:

⭕ 总结
通过解压扩展、复制扩展、重启容器或数据库,kingbase数据库就可以集成Postgis扩展并实现空间函数的调用,极大的方便了地理信息方面软件平台的开发工作。并且kingbase是很多国家级项目推荐的数据库,这种空间类的扩展对以后功能开发还是很有帮助的,赶紧动手去试试吧!
上面就是所有配置信息了,如果内容对你有帮助,麻烦留一个赞👍和收藏⭐支持一下!
如果你对区块链 内容感兴趣可以查看我的专栏:小试牛刀-区块链
感谢您的关注和收藏!!!!!!
