/// <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; } } } }
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); } } }
/// <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; } } } } }