It’s quite simple to get hold of the points in a SQL Server geometry polygon using the STNumPoints and STPointN SQL functions, but this requires quite a few queries (or some kind of stored procedure). I tend not to like running lots of queries, even if that does smell like premature optimisation, and for my little project I don’t want to be adding stored procedures but then I realised the SqlGeometry type is implemented as a .NET type, so all its properties and methods are available from .NET code, so here’s a little extension method to get all the points for a polygon
public static class GeometryHelper { public static SqlGeometry[] Points(this SqlGeometry geometry) { List<SqlGeometry> points = new List<SqlGeometry>(); for (int i = 1; i <= geometry.STNumPoints(); i++) { points.Add(geometry.STPointN(i)); } return points.ToArray(); } }
No comments:
Post a Comment