Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#地理纬度&;意外行为_C#_Sql Server 2012_Sqlgeography - Fatal编程技术网

c#地理纬度&;意外行为

c#地理纬度&;意外行为,c#,sql-server-2012,sqlgeography,C#,Sql Server 2012,Sqlgeography,Microsoft.SqlServer.Types.SqlGeography.ToString具有意外行为 看看我的单元测试: latitude = 40.584474F; longitude = -111.633491F; var location = SqlGeography.Point( latitude, longitude, 4326 ); var point = location.ToString(); 此时,变量点的值为: 点(-111.63349151611328 40

Microsoft.SqlServer.Types.SqlGeography.ToString具有意外行为

看看我的单元测试:

 latitude = 40.584474F;
 longitude = -111.633491F;
 var location = SqlGeography.Point( latitude, longitude, 4326 );
 var point = location.ToString();
此时,变量点的值为: 点(-111.63349151611328 40.58447265625)

正如您所看到的,纬度和经度已从标准值交换

这是今天下载的nuget软件包。(v11.0.2)

澄清:对象值是正确的,但是
ToString()
产生的格式不适合SQL Server本身,尽管我认为这是一个特定于SQL Server的类


更新2:这不是重复的问题,因为它与具有类似标题的问题不同,因为这是关于.NET类(Microsoft.SqlServer.Types.SqlGeography.ToString),而不是SQL Server本身。

纬度和经度尚未交换。只是
Point()
构造函数接受纬度之后的经度,但在
ToString()
中,经度是在纬度之前打印的


打印值
location.Lat
location.Long
以确定。SQL Server 12将接受:geography::Point(47.65100,-122.34904326)。要生成SQL Server可以接受的字符串,请执行以下操作:

var point = ColValue as SqlGeography;
if (point != null)
return "geography::Point(" + point.Lat + ", " + point.Long + ", 4326)";

@Gunnar:这不能称为bug,因为值很好。然而,它是一个设计有点糟糕的API,它交换了变量的顺序,导致了混乱。displayName,这至少是一个设计缺陷。从逻辑上讲,Microsoft.SqlServer.Types中类的ToString应该自然生成SQL Server可以接受的字符串。SQL Server将接受:geography::Point(47.65100,-122.34904326)如果某些边缘情况需要不同的格式,则函数应明确这一点,例如AsWGS84()或PointLongLat()30多年的软件工程经验告诉我,设计可能会有bug,与代码一样。事实上,设计缺陷更为普遍和重要。bug是任何问题。代码错误=“未按设计工作”,而设计错误=“未设计为满足需求”和规范错误=“未指定为满足用户需求”。好的bug跟踪系统支持这些类型的问题。您的定义对于行业最佳实践来说太窄。不是重复的:SQL地理位置点Lat中的一个bug,Long