PostgreSQL PostGIS 的5种空间距离排序(knn)算法

摘要: 标签 PostgreSQL , PostGIS , operator , ops , knn 背景 PostgreSQL GiST索引支持排序接口,可以支撑空间、标准、数组、文本向量、文本等类型的排序。

标签

PostgreSQL , PostGIS , operator , ops , knn

背景

PostgreSQL GiST索引支持排序接口,可以支撑空间、标准、数组、文本向量、文本等类型的排序。

分别表示:

1、给定一空间位置,按空间距离排序输出

2、给定一数组、全文检索值、字符串,按数组、全文检索、字符串相似度排序输出

3、给定一标准类型的值,按标准类型的距离排序

数据库目前支持哪些排序操作符,可以参考:《PostgreSQL 如何确定某个opclass支持哪些操作符(支持索引),JOIN方法,排序》

clipboard.png

安装了PostGIS后,对于空间排序,目前支持5种算法

PostGIS 空间排序算法

1、2D平面,两个对象实际距离

clipboard.png

clipboard.png

clipboard.png

2、计算两条有效轨迹类型的距离(如果两个轨迹没有交集, 返回空)

clipboard.png

clipboard.png

clipboard.png

3、2D平面,两个对象bound box实面的距离(所以如果BOUND BOX与另一对象 相交,包含,说明距离为0)

clipboard.png

clipboard.png

clipboard.png

4、与1类似,多维对象,返回两个bound box 中心点的距离

clipboard.png

5、与3类似,多维对象,返回两个bound box 实体的距离

clipboard.png

例子

1、点和线段的实际距离

clipboard.png

2、点和线段(BOUND BOX实体)的距离

clipboard.png

3、两个不相交轨迹(范围没有相交)的距离

clipboard.png

4、两个有相交(范围有交集)的距离 (lower1upper1 与 lower2upper2 有相交)

clipboard.png

5、两个有相交(范围有交集)的距离

clipboard.png

排序用法

clipboard.png

参考

http://workshops.boundlessgeo...

http://postgis.net/docs/manua...

http://postgis.net/docs/manua...

http://postgis.net/docs/manua...

《PostgreSQL 如何确定某个opclass支持哪些操作符(支持索引),JOIN方法,排序》

本文作者:德哥

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值