Exemple #1
0
        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;
                    }
                }
            }
        }
Exemple #2
0
        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);
        }