【问题标题】:Compute Distance Using Absolute Positions (X,Y)使用绝对位置 (X,Y) 计算距离
【发布时间】:2018-04-02 09:37:09
【问题描述】:

我已在我的表 (MICROSOFT SQL SERVER) 中添加了一个地理列,并在其中插入了地理点数据 (4326)。 现在我可以使用以下查询计算所有点到特定点的距离:

DECLARE @X geography = geography::Point(0, 0 , 4326);
SELECT TOP(4) *, LOCATION.STDistance(@
FROM [ADDRESS] A
WHERE A.LOCATION IS NOT NULL 
ORDER BY LOCATION.STDistance(@X) ASC

它有效。但是,我想使用欧几里德距离公式计算距离:sqrt((y1-y2)^2 + (x1-x2)^2)) 并且如果可能的话,希望有两个单独的列用于 x 和 y 位置。

【问题讨论】:

  • 绝对职位 - 那个法国人?
  • 是的,SQL Server 有一个SQRT function,所以您可以自己使用两列来实现它,不是吗?但是有 geometry type 表示欧几里得距离,它会为您完成这一切,尽管它存储在单个列中。
  • 你遇到了什么困难?

标签: sql sql-server spatial spatial-query


【解决方案1】:

谢谢鲁普 :) 我使用 SRID 0 将类型从地理更改为几何!

UPDATE [ADDRESS]
SET LOCATION = geometry::Point(1, 1, 0)
WHERE ADDRESSCODE = 4


DECLARE @X geometry = geometry::Point(0, 0 , 0)
SELECT TOP(4) *, LOCATION.STDistance(@X)
FROM [ADDRESS] A
WHERE LOCATION IS NOT NULL 
ORDER BY LOCATION.STDistance(@X) ASC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 2021-07-07
    • 2018-12-04
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多