protected override void HandleImpl()
        {
            _selectCommand.Execute();

            var geometries = _selectCommand.Result.AsEnumerable().Select(r => new Geometry()
            {
                X           = (double)r["X"],
                Y           = (double)r["Y"],
                OrderNumber = (int)r["OrderNumber"],
                PathId      = Guid.Parse(r["PathId"].ToString()),
                PolygonId   = Guid.Parse(r["PolygonId"].ToString())
            });

            Polygons = new List <Polygon>();

            foreach (var pol in geometries.GroupBy(g => g.PolygonId).ToList())
            {
                var polygon = new Polygon();

                foreach (var pth in pol.GroupBy(g => g.PathId).ToList())
                {
                    var path = new Path(pth.OrderBy(p => p.OrderNumber).Select(p => new Point(p.X, p.Y)
                    {
                        OrderNumber = p.OrderNumber
                    })
                                        .ToArray());

                    polygon.AddPath(path);
                }
                Polygons.Add(polygon);
            }
        }
        public Polygon GetPolygon(List <List <PointD> > paths)
        {
            var result = new Polygon();

            foreach (var path in paths)
            {
                var contour = new Path(path.Select(p => new Point(p.X, p.Y)).ToArray());
                result.AddPath(contour);
            }

            return(result);
        }