Я знаю, как составить SqlGeometry
с помощью SqlGeometryBuilder
, например:
// using Microsoft.SqlServer.Types;
SqlGeometryBuilder geometryBuilder = new SqlGeometryBuilder();
geometryBuilder.SetSrid(…);
geometryBuilder.BeginGeometry(OpenGisGeometryType.Polygon);
geometryBuilder.BeginFigure(0, 0);
geometryBuilder.AddLine(…);
…
geometryBuilder.EndFigure();
geometryBuilder.EndGeometry();
SqlGeometry geometry = geometryBuilder.ConstructedGeometry;
После того, как SqlGeometry
построен, он становится в значительной степени непрозрачным объектом, и проверка его составных частей (например, сегментов линий, из которых состоит его граница, и конечные точки этих линий) с использованием методов ST…
(STNumPoints
, STPointN
, STNumCurves
, STCurveN
, STBoundary
и т. д.) кажется мне немного громоздким.
Есть ли что-то в Microsoft.SqlServer.Types
или библиотеке классов .NET Framework, что является логической противоположностью SqlGeometryBuilder
, то есть что-то, что я мог бы использовать для разложения SqlGeometry
на составные части? Я предполагаю, что то, что я ищу, может использовать шаблон посетителя.