16

What is the C# equivalent of this geospatial T-SQL code?

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)

I am trying to find a point in a polygon using the SqlGeometry data type -- and can with the above T-SQL; but I do not understand how to achieve equivalent C# code.

J0e3gan
8,96810 gold badges58 silver badges81 bronze badges
asked May 9, 2013 at 7:10
1

1 Answer 1

14

Try this:

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's SqlGeography Methods page links to info on each of the C# equivalents to the critical calls in your T-SQL - e.g. STIntersects.

answered May 9, 2013 at 7:29
Sign up to request clarification or add additional context in comments.

2 Comments

// rough equivalent to SELECT :-)
@Tim: Funny, last night this just came out the way I thought it not knowing the OP's general level of C# knowledge or context to use the translated code; but today this strikes me as pretty funny too. :) Thanks for pointing it out.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.