> 文章列表 > postgis 临近搜索的方法和技巧

postgis 临近搜索的方法和技巧

postgis 临近搜索的方法和技巧

1、方法:
SELECT g1.gid g2.gid FROM points as g1, polygons g2
WHERE g1.gid <> g2.gid
ORDER BY g1.gid, ST_Distance(g1.the_geom,g2.the_geom)
LIMIT k;
2、方法:
SELECT DISTINCT ON(“所属NodeB标识”) *
FROM(
SELECT a.“所属NodeB标识”,a.小区网管名称,x.基站名称 ,x.基站标识,a.geom::geography<->x.geom::geography as Distance
FROM “铜陵3G精简拍照明细” a
CROSS JOIN LATERAL (
SELECT b.基站名称,b.基站标识,b.geom
FROM “铜陵4G工参” b
ORDER BY (a.geom<->b.geom) asc
LIMIT 1
) as x
) as tmp

3、技巧:
基于索引的KNN查询的语法在查询的ORDER BY子句中放置了一个特殊的"基于索引的距离运算符",在本例中为"<->"。有两种基于索引的距离运算符:

<-> —— 表示边界框中心之间的距离
<#> —— 表示边界框边界之间的距离