使用下面的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/zh-cn/sql/t-sql/spatial-geography/spatial-types-geography?view= sql- server -ver15
因此,您交换了经/纬度订单,请'POINT(-121.3897 42.3629)'
改用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句