两个坐标之间的距离

Distance Between 2 Coordinates

使用下面 SQL 中的查询,我试图获取源坐标和目标坐标之间的距离:

DECLARE @source geography = 'POINT(42.3629 -121.3897)'
DECLARE @target geography = 'POINT(47.2921 -111.469)'
SELECT @source.STDistance(@target)

但是,我收到以下错误:

> Msg 6522, Level 16, State 1, Line 55 A .NET Framework error occurred
> during execution of user-defined routine or aggregate "geography": 
> System.FormatException: 24201: 
> Latitude values must be between -90 and 90 degrees.

错误表明我的纬度值超出范围,但 42 和 47 值在范围内。只要经度减少到指定纬度范围内的某个值,此代码就会起作用。

错误的转换发生在哪里?

用于表示地理值的

WKT 格式使用 (X Y) 坐标顺序,通常映射到 (longitude latitude)。 MS SQL 也使用此命令,请在此处查看此格式用法的示例: https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/spatial-types-geography?view=sql-server-ver15

所以你有 lat/lng 顺序交换,请改用 'POINT(-121.3897 42.3629)'