2012-01-13 24 views
1

問題:私はexecption取得STWithinは地理学のために働いていない

@somegeog.STWithin(@othergeog)を実行:

Msg 6506, Level 16, State 10, Line 5 
Could not find method 'STWithin' for type 'Microsoft.SqlServer.Types.SqlGeography' in assembly 'Microsoft.SqlServer.Types' 

背景:私は、SQL Serverと働いています

(2008 R2)地理最初のデータです。私はテーブルにポイントのリストを持っており、特定のエリアのポイントを取得したい。私はその地域の緯度と経度の境界を受け入れるストアドプロシージャを書くつもりです。

私はこの手順を、保存された地理的なポイントから緯度と経度を抽出することによって簡単に書くことができますが、私は組み込みの機能性が働くことを望んでいました。しばらくトピックをグーグルで調べたところ、STWithin methodが見つかりましたが、Microsoftの例を使用しても、メソッドが存在しないと主張するエラーが発生します。リンクから

MS例:

DECLARE @g geography; 
DECLARE @h geography; 
SET @g = geography::Parse('POLYGON ((-120.533 46.566, -118.283 46.1, -122.3 47.45, -120.533 46.566))'); 
SET @h = geography::Parse('CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-122.200928 47.454094, -122.810669 47.00648, -122.942505 46.687131, -121.14624 45.786679, -119.119263 46.183634), (-119.119263 46.183634, -119.273071 47.107523), CIRCULARSTRING (-119.273071 47.107523, -120.640869 47.569114, -122.200928 47.454094)))'); 
SELECT @g.STWithin(@h); 

は、誰かが私が間違ってやっているか説明していただけますか?

ありがとうございました!

答えて

1

私はここに例を試してみてください、あなたが見ている例では、SQL Server 2012に適用されると思う:http://technet.microsoft.com/en-us/library/bb933991.aspx

+0

ありがとうございました。私はトップの "2012"を逃した!私はジオメトリを見つけましたが、STWithinを使用するためにジオメトリポイントにジオメトリポイントを変換したくありません。私が.Latと.Longを使って計算をしているように見えます – Mark

1

あなたはこれが.Latを使用するよりもはるかに高速であるSQL Server 2008の地理データ型でSTIntersects()を使用することができます空間インデックスが設定されている場合は、長くてもかまいません。

関連する問題