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

Wal*_*ler 2 sql sql-server sqlgeography

我正在使用SQL Server.

我有两个这样的表:

表1:

Column1, Column2, Column3, GeoLoc
-----------------------------------
a        b        c        0xE61...
Run Code Online (Sandbox Code Playgroud)

表2:

Column1, Column2, Column3, GeoLoc 
-----------------------------------
a        b        c        0xE62...
Run Code Online (Sandbox Code Playgroud)

我希望得到一个输出表,它将比较两个表中的所有点,并告诉我哪里table1有一个GeoLoc在X距离内GeoLoc的位置table2.

有谁知道如何去做?一个表有大约800行,另一个表有大约300,000行.我甚至难以开始......

Cha*_*nga 6

假设您的GeoLoc列是SQL Server中的"Geography"数据类型,您应该可以使用以下内容:

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

'DistanceApart'和'distanceX'值以米为单位

  • 所花费的时间/结果数据集关注都是正确的,但除非你可以应用额外的过滤条件,否则它最终将成为其中的一些变体 - 可能有一点点杂耍更优化的查询计划,但仍然主要是这种事情 (2认同)