一尘不染

计算两个充满GEOGRAPHY点的表格之间的距离

sql

我正在使用SQL Server。

我有两个这样的表:

表1

Column1, Column2, Column3, GeoLoc
-----------------------------------
a        b        c        0xE61...

表2

Column1, Column2, Column3, GeoLoc 
-----------------------------------
a        b        c        0xE62...

我希望得到一个输出表,该表将比较两个表中所有的点,并告诉我在哪里table1有一个GeoLoc是的X距离之内GeoLoctable2

有人知道该怎么做吗?一个表大约有800行,另一个表大约有300,000行。我很困惑,甚至从哪里开始…


阅读 150

收藏
2021-03-08

共1个答案

一尘不染

假设您的GeoLoc列在SQL Server中为“地理位置”数据类型,则您应该可以使用以下内容:

select
  t1.*,
  t2.*,
  t1.GeoLoc.STDistance(t2.GeoLoc) as DistanceApart
from table1 t1
join table2 t2
on (t1.GeoLoc.STDistance(t2.GeoLoc) <= @distanceX)

“ DistanceApart”和“ distanceX”值以米为单位

2021-03-08