c# SqlGeography latitude & longitude 意外行为
c# SqlGeography latitude & longitude unexpected behavior
Microsoft.SqlServer.Types.SqlGeography.ToString 出现意外行为。
看看我的单元测试:
latitude = 40.584474F;
longitude = -111.633491F;
var location = SqlGeography.Point( latitude, longitude, 4326 );
var point = location.ToString();
此时变量point的值为:
点 (-111.63349151611328 40.58447265625)
如您所见,纬度和经度已与标准调换。
这是来自今天下载的 nuget 包。 (v11.0.2)
澄清: Object 值是正确的,但 ToString()
生成的格式不适合 SQL 服务器本身,即使在我看来,这是 SQL 服务器特定 class。
更新 2:这不是重复的,因为它与标题相似的问题不同,因为这是关于 .NET class (Microsoft.SqlServer.Types.SqlGeography.ToString),而不是 SQL 服务器本身。
纬度和经度没有调换。只是 Point()
构造函数在纬度之后接受经度,但是在 ToString()
中经度打印在纬度之前。
打印值 location.Lat
和 location.Long
以确定。
SQL 服务器 12 将接受:geography::Point(47.65100, -122.3490, 4326)。要生成 SQL 服务器可接受的字符串:
var point = ColValue as SqlGeography;
if (point != null)
return "geography::Point(" + point.Lat + ", " + point.Long + ", 4326)";
Microsoft.SqlServer.Types.SqlGeography.ToString 出现意外行为。
看看我的单元测试:
latitude = 40.584474F;
longitude = -111.633491F;
var location = SqlGeography.Point( latitude, longitude, 4326 );
var point = location.ToString();
此时变量point的值为: 点 (-111.63349151611328 40.58447265625)
如您所见,纬度和经度已与标准调换。
这是来自今天下载的 nuget 包。 (v11.0.2)
澄清: Object 值是正确的,但 ToString()
生成的格式不适合 SQL 服务器本身,即使在我看来,这是 SQL 服务器特定 class。
更新 2:这不是重复的,因为它与标题相似的问题不同,因为这是关于 .NET class (Microsoft.SqlServer.Types.SqlGeography.ToString),而不是 SQL 服务器本身。
纬度和经度没有调换。只是 Point()
构造函数在纬度之后接受经度,但是在 ToString()
中经度打印在纬度之前。
打印值 location.Lat
和 location.Long
以确定。
SQL 服务器 12 将接受:geography::Point(47.65100, -122.3490, 4326)。要生成 SQL 服务器可接受的字符串:
var point = ColValue as SqlGeography;
if (point != null)
return "geography::Point(" + point.Lat + ", " + point.Long + ", 4326)";