一尘不染

将坐标移动以米为单位的设定距离

javascript

在 SQL Server 中,我希望能够采用单个纬度和经度(51.500709,-0.124646)并将这些坐标向北移动 50 米,但我不知道该怎么做。我知道地理空间数据类型,并STDistance在编写其他查询时使用该函数来获取点之间的距离。但我很难看到有关移动坐标固定距离的任何信息。


阅读 99

收藏
2022-07-21

共1个答案

一尘不染

n/111111我对Mitch 提供的链接中的方法感到好奇。

我很高兴地报告它“还不错”。在这个例子中,我们偏离了 0.06 米(2.3 英寸)。

例子

Declare @Lat  float = 51.500709
Declare @Lng  float = -0.124646
Declare @LatM float = -50
Declare @LngM float = 0

;with cte as (
Select OldLat = @Lat
      ,OldLng = @Lng
      ,NewLat = @Lat + @LatM/111111
      ,NewLng = @Lng + @LngM/(111111 * cos(radians(@Lat)) )
)
Select *
      ,DistanceCheck = geography::Point(OldLat, OldLng, 4326).STDistance(geography::Point(NewLat, NewLng, 4326))
 From  cte 

结果

在此处输入图像描述

2022-07-21