Exemplo n.º 1
0
        private ElevationCell GetCell(double x, double y, bool isCreateIfMissing)
        {
            int ix = 0;

            if (_numCellX > 1)
            {
                ix = (int)((x - _extent.MinX) / _cellSizeX);
                ix = MathUtil.Clamp(ix, 0, _numCellX - 1);
            }

            int iy = 0;

            if (_numCellY > 1)
            {
                iy = (int)((y - _extent.MinY) / _cellSizeY);
                iy = MathUtil.Clamp(iy, 0, _numCellY - 1);
            }

            var cell = _cells[iy][ix];

            if (isCreateIfMissing && cell == null)
            {
                cell           = new ElevationCell();
                _cells[iy][ix] = cell;
            }

            return(cell);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a new elevation model covering an extent by a grid of given dimensions.
        /// </summary>
        /// <param name="extent">The XY extent to cover</param>
        /// <param name="numCellX">The number of grid cells in the X dimension</param>
        /// <param name="numCellY">The number of grid cells in the Y dimension</param>
        public ElevationModel(Envelope extent, int numCellX, int numCellY)
        {
            _extent   = extent;
            _numCellX = numCellX;
            _numCellY = numCellY;

            _cellSizeX = extent.Width / numCellX;
            _cellSizeY = extent.Height / numCellY;
            if (_cellSizeX <= 0.0)
            {
                _numCellX = 1;
            }

            if (_cellSizeY <= 0.0)
            {
                _numCellY = 1;
            }

            _cells = new ElevationCell[numCellY][];
            for (int i = 0; i < numCellY; i++)
            {
                _cells[i] = new ElevationCell[numCellX];
            }
        }