コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }