9

次のコードを含むWCF RESTサービスがあります

var geo = DbGeography.PointFromText(string.Format("POINT({0} {1})", longitude, latitude), DbGeography.DefaultCoordinateSystemId);

単体テストは正常に動作しますが、ゼロ以外の緯度と経度の値を指定してクライアントまたは HTTP Debuder からこのコードを呼び出すと、次の例外で失敗します。

"24141: A number is expected at position X of the input. The input has ,XXXXXX."
   at Microsoft.SqlServer.Types.WellKnownTextReader.RecognizeDouble()
   at Microsoft.SqlServer.Types.WellKnownTextReader.ParsePointText(Boolean parseParentheses)
   at Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType type)
   at Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType type, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.ParseText(OpenGisType type, SqlChars taggedText, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.GeographyFromText(OpenGisType type, SqlChars taggedText, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.STPointFromText(SqlChars pointTaggedText, Int32 srid)

緯度と経度
lat:37.58336895 long:-122.40549454
lat:37.38931302 long:-122.16207476

SQLServer インストール ディレクトリから参照される Microsoft.SqlServer.Types と、コード側で空間データを操作するための SqlGeography.Point を使用しました。Microsoft.SqlServer.Types への参照を使用せずに、EF 5 の機能を直接使用したいと考えています。この参照の有無にかかわらず失敗します。

何が間違っているのですか?

.NET 4.5 がインストールされ、SQL Server のバージョンは Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (Intel X86) 2011 年 9 月 22 日 00:28:06 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition on Windows NT 6.1 (Build 7601 : サービスパック 1)

4

1 に答える 1