簡體   English   中英

C#SqlGeography緯度和經度意外行為

[英]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)

澄清:對象值正確,但是ToString()生成的格式不適用於SQL Server本身,即使我認為這是特定於SQLServer的類。

更新2:這不是重復項,因為它與具有類似標題的問題有所不同,因為它是關於.NET類(Microsoft.SqlServer.Types.SqlGeography.ToString),而不是SQL Server本身。

緯度和經度尚未交換。 只是Point()構造函數在緯度之后接受經度,但是在ToString()經度在緯度之前打印。

打印值location.Latlocation.Long肯定知道。

SQL Server 12將接受:geography :: Point(47.65100,-122.3490,4326)。 要產生SQL Server可接受的字符串:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM