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
Unforgiven
2,0595 gold badges20 silver badges18 bronze badges
-
possible duplicate of Geo functions from SQL Server 2008 to C# (latitude and longitude points inside or outside polygon/map area)Damith– Damith2013年05月09日 07:22:05 +00:00Commented May 9, 2013 at 7:22
1 Answer 1
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
J0e3gan
8,96810 gold badges58 silver badges81 bronze badges
Sign up to request clarification or add additional context in comments.
2 Comments
default