0

次の空間的制約があります。

ALTER TABLE [dbo].[TRANS_TRAILS_LN]  WITH CHECK ADD  CONSTRAINT [g10_ck] CHECK  (([SHAPE].[STSrid]=(4269)))
GO

ALTER TABLE [dbo].[TRANS_TRAILS_LN] CHECK CONSTRAINT [g10_ck]
GO

およびインデックス:

CREATE SPATIAL INDEX [S10_idx] ON [dbo].[TRANS_TRAILS_LN] 
(
    [SHAPE]
)USING  GEOGRAPHY_GRID 
WITH (
GRIDS =(LEVEL_1 = MEDIUM,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM), 
CELLS_PER_OBJECT = 16, PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

地理列のあるテーブル

[SHAPE] [geography] NOT NULL,

米国東部全体に機能を追加できます。-90 度に達してさらに西に進むとすぐに、次のエラーが表示されます。

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.
System.FormatException: 
   at Microsoft.SqlServer.Types.GeographyValidator.ValidatePoint(Double x, Double y, Nullable`1 z, Nullable`1 m)
   at Microsoft.SqlServer.Types.Validator.AddLine(Double x, Double y, Nullable`1 z, Nullable`1 m)
   at Microsoft.SqlServer.Types.F]

私は単一の半球全体の制限を取得しますが、これは問題ではありません: 私は単一の半球にいます. SRID(GCS NAD83)ですか?この SRID を SQL Geography データ型で使用できないでしょうか?

SQL 2008 R2

更新: 以下は、緯度の値が -90 から 90 の範囲内にあることを示しています。

SELECT a.OBJECTID, b.n, 
    a.SHAPE.STPointN(b.n).Lat AS Lattitude,
    a.SHAPE.STPointN(b.n).Long AS Longitude
FROM dbo.TRANS_TRAILS_LN_2 AS a, num_seq AS b
WHERE b.n <= a.SHAPE.STNumPoints() 
ORDER BY a.SHAPE.STPointN(b.n).Lat, b.n;

下限:

OBJECTID    n   Lattitude   Longitude
9033    983 33.466981284    -119.038116174
9033    1000    33.4669817430001    -119.037982757
9033    982 33.4669820330001    -119.038128214
9033    984 33.4669823350001    -119.038103865

トップレンジ:

OBJECTID    n   Lattitude   Longitude
19  180 63.751484675    -149.291076228
19  177 63.7515265970001    -149.291518977
19  178 63.7515650700001    -149.291457788
19  179 63.751576146    -149.291381612
4

0 に答える 0