private static IList<ISegmentString> ExtractSegmentStrings(IEnumerable<IGeometry> geoms) { var segStrings = new List<ISegmentString>(); var filter = new GeometryComponentFilter( g => { if (g is ILineString) segStrings.Add(new NodedSegmentString(g.Coordinates, g)); }); foreach (var geom in geoms) geom.Apply(filter); return segStrings; }
static IList<ISegmentString> ExtractTaggedSegmentStrings(IGeometry geom, IPrecisionModel pm) { var segStrings = new List<ISegmentString>(); var filter = new GeometryComponentFilter( delegate (IGeometry fgeom) { // Extract linework for lineal components only if (!(fgeom is ILineString)) return; // skip empty lines if (geom.NumPoints <= 0) return; var roundPts = Round(((ILineString)geom).CoordinateSequence, pm); segStrings.Add(new NodedSegmentString(roundPts, geom)); }); geom.Apply(filter); return segStrings; }