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

WindChaser 2019-06-28

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

标签

PostgreSQL , PostGIS , operator , ops , knn

背景

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

分别表示:

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

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

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

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

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

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

PostGIS 空间排序算法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例子

1、点和线段的实际距离

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

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

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

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

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

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

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

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

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

排序用法

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

参考

http://workshops.boundlessgeo...

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

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

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

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

本文作者:德哥

阅读原文

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

相关推荐