我可以想到几种方法。双方要充分利用以前的解决方案的找到一套点的能力 是 你的固定位置之一的指定公差范围内。通过扩展,应该为您提供一种找到例外点的方法。
找到该集合后,您可以应用此处概述的“最近邻居”处理。它看起来像这样:
select *from ExceptionalPoints as ecross apply ( select top(1) l.* from Location as l order by l.loc_geo_point.STDistance(e.dev_geo_point)) as nn
从文档中,应该能够利用表上的现有空间索引。
我能想到的另一种方法是使用您的位置创建Voronoi镶嵌。然后,将另一列添加到“位置”表中,以存储与该位置关联的Voronoi单元。那时,就像原始方法一样,将两个表连接在一起是一个问题。哎呀…这甚至可以
代替 原始方法(使用Voronoi Cell代替该位置周围的固定半径缓冲区)。但它附带了警告-
计算镶嵌细分并非易事。当然,您只需要执行一次(或每当位置更改时)。



