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 float[] _getFloatData(string itemName, int timeStep, double j, double k, double lat0, double lon0, double dx, double dy) { float[] itemFloatData = null; object[] ncVars = _util.GetVariables(); ucar.ma2.Array xData = null; ucar.ma2.Array yData = null; ucar.ma2.Array itemData = null; _settings.TimeLayer = timeStep; foreach (object ncVar in ncVars) { ucar.nc2.Variable var = ((ucar.nc2.Variable)ncVar); string varName = var.getFullName(); if (varName == _settings.YAxisName) { yData = _util.GetAllVariableData(var); } } foreach (object ncVar in ncVars) { ucar.nc2.Variable var = ((ucar.nc2.Variable)ncVar); string varName = var.getFullName(); if (varName == _settings.XAxisName) { xData = _util.GetAllVariableData(var); } } foreach (object ncVar in ncVars) { ucar.nc2.Variable var = ((ucar.nc2.Variable)ncVar); string varName = var.getFullName(); if (varName == itemName) { java.util.List varDims = ((Variable)var).getDimensions(); int xAxisPosition = -1, yAxisPosition = -1; for (int i = 0; i < varDims.size(); i++) { string dimName = ((Dimension)varDims.get(i)).getName(); if (_settings.XAxisDimensionName == dimName) { xAxisPosition = i; } if (_settings.YAxisDimensionName == dimName) { yAxisPosition = i; } } itemData = _util.Get2DVariableData(var, _settings); itemData = _util.ProcessedVariableData(var, itemData); java.util.List ncVarAtt = var.getAttributes(); if (!_customDFSGrid) { if (_invertxData && _invertyData) { //invert xData and yData itemFloatData = _util.GetFloatDataInvertXandY(itemData, xData, yData, ncVarAtt, _fdel); } else if (_invertyData) { //invert yData itemFloatData = _util.GetFloatDataInvertY(itemData, xData, yData, ncVarAtt, _fdel); } else if (_invertxData) { //invert xData itemFloatData = _util.GetFloatDataInvertX(itemData, xData, yData, ncVarAtt, _fdel); } else { itemFloatData = _util.GetFloatData(itemData, xData, yData, ncVarAtt, _fdel, xAxisPosition, yAxisPosition); } } else { //reassign data to grid if (yAxisPosition > xAxisPosition) { itemFloatData = _reassignData(itemData, xData, yData, ncVarAtt, _fdel, j, k, lat0, lon0, dx, dy, 0, 1); } else { itemFloatData = _reassignData(itemData, xData, yData, ncVarAtt, _fdel, j, k, lat0, lon0, dx, dy, 1, 0); } } } } return(itemFloatData); }