Example #1
0
        /// <summary>
        /// This method calculate the distances between all points
        /// </summary>
        private void calculateDistances()
        {
            double[] mdisv;
            double   mdis;
            double   msem;

            for (int i = 0; i < _npoints; i++)
            {
                for (int j = i; j < _npoints; j++)
                {
                    mdisv = mdistancesXy(i, j);
                    msem  = msemiVarEmp(i, j);
                    mdis  = mdistances(i, j);

                    if (!mdisv[0].Equals(0) &&
                        !mdisv[1].Equals(0))
                    {
                        Stat       semi = new Stat(msem);
                        Covariance cov  = new Covariance(_gridPoints[j].Z.GetValueOrDefault(),
                                                         _gridPoints[i].Z.GetValueOrDefault());
                        Stat dist = new Stat(mdis);

                        _distance     += dist;
                        _semivariance += semi;
                    }
                }
            }
        }
Example #2
0
        private void grid()
        {
            if (_lag == null)
            {
                return;
            }

            _spatConti    = new Stat[_lag.numLags * 2, _lag.numLags *2];
            _spatContiCov = new Covariance[_lag.numLags * 2, _lag.numLags *2];
            _spatDist     = new Stat[_lag.numLags * 2, _lag.numLags *2];
            for (int row = 0; row < _lag.numLags * 2; row++)
            {
                for (int col = 0; col < _lag.numLags * 2; col++)
                {
                    _spatConti[row, col]    = new Stat(true);
                    _spatContiCov[row, col] = new Covariance(true);
                    _spatDist[row, col]     = new Stat(true);
                }
            }
        }
Example #3
0
        /// <summary>
        /// This method calculate the distances between all points
        /// </summary>
        private void calculateDistancesLag(CancellationToken cancellationToken)
        {
            for (int i = 0; i < _npoints; i++)
            {
                for (int j = i; j < _npoints; j++)
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    var mdisv = mdistancesXy(i, j);
                    var msem  = msemiVarEmp(i, j);
                    var mdis  = mdistances(i, j);

                    if (!mdisv[0].Equals(0) &&
                        !mdisv[1].Equals(0))
                    {
                        int[] cells = _lag.cells(i, j, mdisv[0], mdisv[1], getAzimuth(i, j));

                        var semi = new Stat(msem);
                        var cov  = new Covariance(_gridPoints[j].Z.GetValueOrDefault(),
                                                  _gridPoints[i].Z.GetValueOrDefault());
                        var dist = new Stat(mdis);

                        var checkBorder0 = checkBorder(cells[0]);
                        var checkBorder1 = checkBorder(cells[1]);
                        var checkBorder2 = checkBorder(cells[2]);
                        var checkBorder3 = checkBorder(cells[3]);

                        int v = (NumberOfLags * 2) - 1;
                        if (checkBorder2 && checkBorder0)
                        {
                            _spatConti[cells[2], cells[0]]    += semi;
                            _spatContiCov[cells[2], cells[0]] += cov;
                            _spatDist[cells[2], cells[0]]     += dist;

                            _spatConti[v - cells[2], v - cells[0]]    += semi;
                            _spatContiCov[v - cells[2], v - cells[0]] += cov;
                            _spatDist[v - cells[2], v - cells[0]]     += dist;
                        }

                        if (checkBorder3 && checkBorder0)
                        {
                            _spatConti[cells[3], cells[0]]    += semi;
                            _spatContiCov[cells[3], cells[0]] += cov;
                            _spatDist[cells[3], cells[0]]     += dist;

                            _spatConti[v - cells[3], v - cells[0]]    += semi;
                            _spatContiCov[v - cells[3], v - cells[0]] += cov;
                            _spatDist[v - cells[3], v - cells[0]]     += dist;
                        }
                        if (checkBorder2 && checkBorder1)
                        {
                            _spatConti[cells[2], cells[1]]    += semi;
                            _spatContiCov[cells[2], cells[1]] += cov;
                            _spatDist[cells[2], cells[1]]     += dist;

                            _spatConti[v - cells[2], v - cells[1]]    += semi;
                            _spatContiCov[v - cells[2], v - cells[1]] += cov;
                            _spatDist[v - cells[2], v - cells[1]]     += dist;
                        }
                        if (checkBorder3 && checkBorder1)
                        {
                            _spatConti[cells[3], cells[1]]    += semi;
                            _spatContiCov[cells[3], cells[1]] += cov;
                            _spatDist[cells[3], cells[1]]     += dist;

                            _spatConti[v - cells[3], v - cells[1]]    += semi;
                            _spatContiCov[v - cells[3], v - cells[1]] += cov;
                            _spatDist[v - cells[3], v - cells[1]]     += dist;
                        }
                    }
                }
            }
        }