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); }
private 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)fgeom).CoordinateSequence, pm); segStrings.Add(new NodedSegmentString(roundPts, fgeom)); }); geom.Apply(filter); return(segStrings); }