南大通用GBase 8a之基于散列点集合获取最小覆盖圆的方法

原文链接:www.gbase.cn/community/p...

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

主要解决问题

(1)针对给定的散列点集合,获取能覆盖该集合的,面积最小的圆(圆心坐标和半径)

(2)在地理信息领域,通信领域,交通信息领域,消防、机器人技术, 体育竞技,流行病医学,气象检测等众多领域,可广泛应用。

部署方式

(1) 创建函数

sql 复制代码
新建create.sql文件,如下:

use gclusterdb;
drop function if exists f_mincir;
create function f_mincir(point_str varchar(1000))
returns varchar
$$

import subprocess

result = subprocess.check_output(["python", "/home/gbase/tmp/mincir.pyo", point_str]).strip()

return result

$$ language plpythonu;

注: 下载mincir.pyo文件,将其部署在/home/gbase/tmp/mincir.pyo(可以自行指定存放位置),前提是每个coordinator节点都需要部署相同的位置。
执行 gccli -uroot -vvv -f < create.sql 即可创建该函数

使用方式

(1) 新建包含散列点集合的表,其中x,y代表点的坐标

sql 复制代码
 gbase> select * from zhao;
+---------+------+------+
| pointid | x    | y    |
+---------+------+------+
|       1 |   23 |   62 |
|       2 |   54 |   29 |
|       3 |   38 |   74 |
|       4 |   85 |   36 |
|       5 |   42 |   63 |
|       6 |   -5 |   18 |
|       7 |  -13 |   31 |
|       8 |   19 |  -41 |
|       9 |   28 |   62 |
|      10 |   54 |   49 |
+---------+------+------+
10 rows in set (Elapsed: 00:00:00.01)

(2) 将点集坐标数据打包成元组后,直接调用函数

sql 复制代码
gbase> select gclusterdb.f_mincir(  group_concat( concat('(',x,',',y,')') )  )   from zhao;
+------------------------------------------------------------------+
| gclusterdb.f_mincir(  group_concat( concat('(',x,',',y,')') )  ) |
+------------------------------------------------------------------+
| (30.1517, 16.2271, 58.3035)                                      |
+------------------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.07)

注意:返回结果是一个包含3个元素的元组,元素1和2是面积最小的圆的圆心坐标,元素3是该圆的半径。

验证是否真的覆盖

(1) 将点集和所求的圆在画布上画出来, 可见该圆满足条件

参考文件

(1) 注: 该版本为centos8环境下编译。

(2) 文件下载:mincir.pyo

链接: pan.baidu.com/s/1LES7f39P... 提取码: ud1u

原文链接:www.gbase.cn/community/p...

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

相关推荐
CS创新实验室1 分钟前
数据库突然断电,凭什么没丢数据?——WAL 日志与崩溃恢复
数据库·mysql
Warolitbos9 分钟前
【数据库】SQL面试基础15题,测试/开发必背速查
数据库
ly76891 小时前
PostgreSQL 执行计划深读:从 EXPLAIN 输出到代价模型驱动的 SQL 改写
数据库·sql·postgresql·explain·执行计划·代价模型
Python自动化直播1 小时前
自动化笔记:素材管理、命名、轮换的几条土办法
linux·运维·数据库
xiaomuzuirenzhen1 小时前
2027校招ERP实施顾问:大数据管理与应用专业如何用SQL、BI证明业务能力
大数据·数据库
底层玩家老张2 小时前
从副本集到分片:百亿级文档数据的KES架构边界
数据库·分布式架构·分片·架构选型·文档数据库
ss2732 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 16 PostgreSQL子查询与嵌套查询(下)
数据库·笔记·postgresql
川石课堂软件测试2 小时前
涨薪技术|0到1学会性能测试第8课-Analysis分析图
服务器·数据库·python·sql·jmeter·mysql·容器
SelectDB技术团队2 小时前
云数仓成本结构拆解:五层计费模型与 Apache Doris 托管形态对照
大数据·数据库·elk·全文检索·snowflake
我命由我123452 小时前
SQL 检测脚本
java·数据库·sql·功能测试·单元测试·压力测试·可用性测试