private void _getMinAndInterval(ucar.nc2.Variable var, string minMaxStr, out double interval, out double minVal, out double count) { ucar.ma2.Array dataArr = _util.GetAllVariableData(var); bool stepExists = false; interval = 1.0; minVal = double.MaxValue; count = 0; java.util.List ncVarAtt = var.getAttributes(); for (int attCount = 0; attCount < ncVarAtt.size(); attCount++) { ucar.nc2.Attribute varAtt = (ucar.nc2.Attribute)ncVarAtt.get(attCount); string attName = varAtt.getName(); if (attName == "step") { java.lang.Number attVal = (java.lang.Number)varAtt.getValue(0); interval = attVal.doubleValue(); stepExists = true; } } double prevVal = 0.0; int minCount = 0, maxCount = (int)dataArr.getSize() - 1; count = 0; if (!string.IsNullOrEmpty(minMaxStr)) { minCount = Convert.ToInt32(minMaxStr.Split(':')[0]); maxCount = Convert.ToInt32(minMaxStr.Split(':')[1]); count = maxCount - minCount + 1; } else { count = maxCount + 1; } for (int dCount = minCount; dCount <= maxCount; dCount++) { ucar.ma2.Index dIndex = dataArr.getIndex(); double data = dataArr.getDouble(dIndex.set(dCount)); if (minVal >= data) { minVal = data; } if (!stepExists) { if (dCount > 0) { prevVal = dataArr.getDouble(dIndex.set(dCount - 1)); interval = data - prevVal; } } } }
private void _getMinAndInterval(ucar.nc2.Variable ncDim, string minMaxStr, out double interval, out double minVal, out List <double> interpolatedVal, out List <double> originalVal, bool useDefinedDZ) { ucar.ma2.Array dataArr = _util.GetAllVariableData(ncDim); int minCount = 0, maxCount = (int)dataArr.getSize() - 1; minVal = double.MaxValue; double maxVal = double.MinValue; double prevVal = 0.0; List <double> intervals = new List <double>(); interpolatedVal = new List <double>(); originalVal = new List <double>(); interval = 0.0; if (!string.IsNullOrEmpty(minMaxStr)) { minCount = Convert.ToInt32(minMaxStr.Split(':')[0]); maxCount = Convert.ToInt32(minMaxStr.Split(':')[1]); } java.util.List ncVarAtt = ncDim.getAttributes(); bool stepExists = false; for (int attCount = 0; attCount < ncVarAtt.size(); attCount++) { ucar.nc2.Attribute varAtt = (ucar.nc2.Attribute)ncVarAtt.get(attCount); string attName = varAtt.getName(); if (attName == "step") { java.lang.Number attVal = (java.lang.Number)varAtt.getValue(0); interval = attVal.doubleValue(); stepExists = true; } } for (int dCount = minCount; dCount <= maxCount; dCount++) { ucar.ma2.Index dIndex = dataArr.getIndex(); double data = dataArr.getDouble(dIndex.set(dCount)); originalVal.Add(data); if (minVal >= data) { minVal = data; } if (maxVal <= data) { maxVal = data; } if (!stepExists) { if (dCount > 0) { prevVal = dataArr.getDouble(dIndex.set(dCount - 1)); interval = data - prevVal; intervals.Add(interval); } } } if (!stepExists) { if (intervals.Average() != interval) { if (useDefinedDZ) { for (double min = minVal; min <= maxVal; min += Convert.ToDouble(_settings.DZ)) { interpolatedVal.Add(min); } interval = Convert.ToDouble(_settings.DZ); } else { //generate a list of interpolatedVal for (double min = minVal; min <= maxVal; min += intervals.Min()) { interpolatedVal.Add(min); } interval = intervals.Min(); } } } }
private void _getMinAndInterval(ucar.nc2.Variable ncDim, out double interval, out double minVal, out List <double> interpolatedVal, out List <double> originalVal) { ucar.ma2.Array dataArr = _util.GetAllVariableData(ncDim); minVal = double.MaxValue; double maxVal = double.MinValue; double prevVal = 0.0; List <double> intervals = new List <double>(); interpolatedVal = new List <double>(); originalVal = new List <double>(); interval = 0.0; for (int dCount = 0; dCount < dataArr.getSize(); dCount++) { ucar.ma2.Index dIndex = dataArr.getIndex(); double data = dataArr.getDouble(dIndex.set(dCount)); originalVal.Add(data); if (minVal >= data) { minVal = data; } if (maxVal <= data) { maxVal = data; } if (dCount > 0) { prevVal = dataArr.getDouble(dIndex.set(dCount - 1)); interval = data - prevVal; intervals.Add(interval); } } double dz; if (_settings.DZ > 0) { dz = _settings.DZ; if (intervals.Average() != interval) { //generate a list of interpolatedVal for (double min = minVal; min <= maxVal; min += dz) { interpolatedVal.Add(min); } interval = dz; } } else { if (intervals.Average() != interval) { //generate a list of interpolatedVal for (double min = minVal; min <= maxVal; min += intervals.Min()) { interpolatedVal.Add(min); } interval = intervals.Min(); } } }