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子句中放置了一个特殊的"基于索引的距离运算符",在本例中为"<->"。有两种基于索引的距离运算符:

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值