Esempio n. 1
0
        public void BeginPaint(Framework.Carto.IDisplay display, Framework.system.ICancelTracker cancelTracker)
        {
            if (!cancelTracker.Continue)
            {
                return;
            }

            //if (_thread.IsAlive)
            //    _thread.Join();
            GetImage();
        }
Esempio n. 2
0
        public IRasterLayerCursor ChildLayers(Framework.Carto.IDisplay display, string filterClause)
        {
            if (_dataset == null || _dataset.Extent == null || _dataset.Scales == null)
            {
                return(null);
            }

            // !!!! Only correct, if diplay unit is meter !!!!
            double displayResolution = display.mapScale / (display.dpi / 0.0254);

            Grid grid = new Grid(new Point(_dataset.Extent.minx, _dataset.Extent.maxx), _dataset.TileWidth, _dataset.TileHeight, display.dpi, _dataset.Origin);

            for (int i = 0, to = _dataset.Scales.Length; i < to; i++)
            {
                grid.AddLevel(i, _dataset.Scales[i] / (display.dpi / 0.0254));
            }

            IEnvelope dispEnvelope = display.DisplayTransformation.TransformedBounds(display); //display.Envelope;

            if (display.GeometricTransformer != null)
            {
                dispEnvelope = (IEnvelope)((IGeometry)display.GeometricTransformer.InvTransform2D(dispEnvelope)).Envelope;
            }

            int    level = grid.GetBestLevel(displayResolution, 90D);
            double res   = grid.GetLevelResolution(level);
            int    col0  = grid.TileColumn(dispEnvelope.minx, res);
            int    row0  = grid.TileRow(dispEnvelope.maxy, res);

            int col1 = grid.TileColumn(dispEnvelope.maxx, res);
            int row1 = grid.TileRow(dispEnvelope.miny, res);

            int col_from = Math.Max(0, Math.Min(col0, col1)), col_to = Math.Min((int)Math.Round(_dataset.Extent.Width / (_dataset.TileWidth * res), 0) - 1, Math.Max(col0, col1));
            int row_from = Math.Max(0, Math.Min(row0, row1)), row_to = Math.Min((int)Math.Round(_dataset.Extent.Height / (_dataset.TileHeight * res), 0) - 1, Math.Max(row0, row1));

            LayerCursor cursor = new LayerCursor();

            for (int r = row_from; r <= row_to; r++)
            {
                for (int c = col_from; c <= col_to; c++)
                {
                    cursor.Layers.Add(
                        new RasterTile(_dataset, grid, level, r, c, res));
                }
            }
            cursor.Layers.Sort(new TileSorter(dispEnvelope.Center));

            return(cursor);
        }
Esempio n. 3
0
 public Task <IRasterPaintContext> BeginPaint(Framework.Carto.IDisplay display, Framework.system.ICancelTracker cancelTracker)
 {
     return(Task.FromResult <IRasterPaintContext>(new RasterPaintContext(null)));
 }
Esempio n. 4
0
 public void BeginPaint(Framework.Carto.IDisplay display, Framework.system.ICancelTracker cancelTracker)
 {
 }