SQL Server查询空间数据,用于最近邻居不同的顶部N顺序按距离



我想知道是否有一种方法可以从空间数据列中查询最近的n个邻居,丢弃重复。

例如,我的查询看起来像这样:

SELECT TOP (@N) Point.STDistance(@Point) AS Distance
FROM MyTable
WHERE Point.STDistance(@Point) IS NOT NULL --For Spatial Index usage
ORDER BY Distance;

这几乎是有效的,但我的结果是:

Distance
3906,81969203873
3906,81969203873
5321,62614141754
5756,28719382942

我试图放置一个不同的子句,但是它不使用空间索引。

有什么想法?

谢谢

根据最近的邻居查询和空间索引,您需要在ORDER BY子句中使用STDistance()

  1. 顺序中的第一个表达式必须使用stdistance()方法。

  2. 按顺序中的第一个stdistance()表达式按子句中的顺序必须为ASC。

您可能需要使用GROUP BYCTEsubquery来避免任何潜在的重复。

由于您的表设计或数据库设计,有递归记录。如果您共享数据库或表格架构可以更精确。使用内部选择的干净递归记录,然后应用距离功能以获得距离。它将使用空间索引。

相关内容

最新更新