2013-05-09 5 views
12
に変換する

この地理空間T-SQLコードに相当するC#とは何ですか?SQL地理をC#

DECLARE @g geography; 
DECLARE @h geography; 
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326); 
SET @h = geography::Point(47.653, -122.358, 4326) 

SELECT @g.STIntersects(@h) 

私はSqlGeometryデータ型を使用してポリゴン内のポイントを見つけようとしています - 上記のT-SQLでとすることができます。同等のC#コードをどのように達成するのか分かりません。

+0

[ジオファンクションSQL Server 2008からC#(ポリゴン/マップエリアの内側または外側の緯度および経度ポイント)]の重複可能性があります](http://stackoverflow.com/questions/9448054/geo-functions-from-sql-サーバー-2000-C-シャープ - 緯度経度ポイントイン) – Damith

答えて

9

この試してみてください:あなたのT-SQLの重要な通話にC#の同等物のそれぞれについての情報へ

public bool OneOffSTIntersect() 
{ 
    var g = 
     Microsoft.SqlServer.Types.SqlGeography.STGeomFromText(
      new System.Data.SqlTypes.SqlChars(
       "POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))"), 4326); 
    // suffix "d" on literals below optional but explicit 
    var h = Microsoft.SqlServer.Types.SqlGeography.Point(47.653d, -122.358d, 4326); 

    // rough equivalent to SELECT 
    System.Console.WriteLine(g.STIntersects(h)); 

    // Alternatively return from a C# method or property (get). 
    return g.STIntersects(h); 
} 

MSDNのSqlGeography Methodsページへのリンクを - 例えばSTIntersects

+3

'//大体同等のSELECT' :-) – Tim

+0

@Tim:面白い、昨夜これはちょうど私が思っていたように出てきた翻訳されたコードを使用するためのOPの一般的なC#の知識またはコンテキストを知ること。しかし、今日はこれもかなり面白いと私を殴る。 :)それを指摘してくれてありがとう。 – J0e3gan