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

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

标签

PostgreSQL , PostGIS , operator , ops , knn

背景

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

分别表示:

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

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

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

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

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第1张图片

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

PostGIS 空间排序算法

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

clipboard.png

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第2张图片

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第3张图片

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

clipboard.png

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第4张图片

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第5张图片

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

clipboard.png

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第6张图片

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第7张图片

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

clipboard.png

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

clipboard.png

例子

1、点和线段的实际距离

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第8张图片

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

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第9张图片

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

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第10张图片

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

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第11张图片

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

PostgreSQL PostGIS 的5种空间距离排序(knn)算法_第12张图片

排序用法

clipboard.png

参考

http://workshops.boundlessgeo...

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

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

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

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

本文作者:德哥

阅读原文

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

你可能感兴趣的:(数据库,数据结构与算法)