Пример #1
0
        private void _writeDimensionData(DfsUtilities df_in, ucar.nc2.NetcdfFileWriteable newNetcdfFile)
        {
            //time
            ucar.ma2.ArrayDouble timeDataArr = new ucar.ma2.ArrayDouble.D1(df_in.tAxis_nTSteps);
            int dtStep = (int)df_in.tAxis_dTStep;

            for (int i = 0; i < df_in.tAxis_nTSteps; i++)
            {
                double timeStepValue;
                if (df_in.tAxis_nTSteps == 1)
                {
                    timeStepValue = dtStep / dtStep;
                }
                else
                {
                    timeStepValue = (df_in.tAxis_dTStep / dtStep) * i; //convert to hours or days or whatever
                }
                timeDataArr.setDouble(i, timeStepValue);
            }
            newNetcdfFile.write(_settings.TimeAxisName, timeDataArr);

            //lon
            ucar.ma2.ArrayDouble xDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsX);
            for (int i = 0; i < df_in.Items[0].nPointsX; i++)
            {
                double xValue = df_in.Items[0].XMinLimit + df_in.Items[0].DX * i;
                xDataArr.setDouble(i, xValue);
            }
            newNetcdfFile.write(_settings.XAxisName, xDataArr);
        }
Пример #2
0
        private void _writeDimensionData(DfsUtilities df_in, ucar.nc2.NetcdfFileWriteable newNetcdfFile)
        {
            //time
            ucar.ma2.ArrayDouble timeDataArr = new ucar.ma2.ArrayDouble.D1(df_in.tAxis_nTSteps);
            int dtStep = (int)df_in.tAxis_dTStep;

            for (int i = 0; i < df_in.tAxis_nTSteps; i++)
            {
                double timeStepValue;
                if (df_in.tAxis_nTSteps == 1)
                {
                    timeStepValue = dtStep / dtStep;
                }
                else
                {
                    timeStepValue = (df_in.tAxis_dTStep / dtStep) * i; //convert to hours or days or whatever
                }
                timeDataArr.setDouble(i, timeStepValue);
            }
            newNetcdfFile.write("time", timeDataArr);

            //lon
            ucar.ma2.ArrayDouble xDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsX);
            for (int i = 0; i < df_in.Items[0].nPointsX; i++)
            {
                double xValue = df_in.Items[0].XMinLimit + df_in.Items[0].DX * i;
                xDataArr.setDouble(i, xValue);
            }
            newNetcdfFile.write("lon", xDataArr);

            //lat
            ucar.ma2.ArrayDouble yDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsY);
            for (int i = 0; i < df_in.Items[0].nPointsY; i++)
            {
                double yValue = df_in.Items[0].YMinLimit + df_in.Items[0].DY * i;
                yDataArr.setDouble(i, yValue);
            }
            newNetcdfFile.write("lat", yDataArr);

            //depth
            ucar.ma2.ArrayDouble zDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsZ);
            for (int i = 0; i < df_in.Items[0].nPointsZ; i++)
            {
                double zValue = df_in.Items[0].ZMinLimit + df_in.Items[0].DZ * i;
                zDataArr.setDouble(i, zValue);
            }
            newNetcdfFile.write("depth", zDataArr);
        }
Пример #3
0
        private void _writeItemData(DfsUtilities df_in, ucar.nc2.NetcdfFileWriteable newNetcdfFile)
        {
            for (int itemCount = 0; itemCount < _settings.Variables.Count; itemCount++)
            {
                if (_settings.IsVariablesSelected[itemCount])
                {
                    ucar.ma2.ArrayDouble dataArr   = new ucar.ma2.ArrayDouble.D1(df_in.tAxis_nTSteps);
                    ucar.ma2.Index       dataIndex = dataArr.getIndex();
                    for (int i = 0; i < df_in.tAxis_nTSteps; i++)
                    {
                        float[] dfsData = null;
                        df_in.ReadDynData(i, itemCount + 1, out dfsData);

                        dataArr.setDouble(dataIndex.set(i), dfsData[0]);
                    }
                    newNetcdfFile.write(df_in.Items[itemCount].Name.Replace(' ', '_'), dataArr);
                }
            }
        }
Пример #4
0
        private void _writeDimensionData(DfsUtilities df_in, ucar.nc2.NetcdfFileWriteable newNetcdfFile)
        {
            //time
            ucar.ma2.ArrayDouble timeDataArr = new ucar.ma2.ArrayDouble.D1(df_in.tAxis_nTSteps);

            int dtStep    = (int)df_in.tAxis_dTStep;
            int multiples = 1;

            switch (dtStep) //todo: to add multiples of other time units. now only seconds is supported
            {
            case 31556926:
                break;

            case 2629743:
                break;

            case 604800:
                break;

            case 86400:
                break;

            case 3600:
                break;

            case 60:
                break;

            case 1:
                break;

            default:
                multiples = dtStep / 1;
                break;
            }

            for (int i = 0; i < df_in.tAxis_nTSteps; i++)
            {
                double timeStepValue;
                if (df_in.tAxis_nTSteps == 1)
                {
                    timeStepValue = dtStep / dtStep * multiples;
                }
                else
                {
                    timeStepValue = (df_in.tAxis_dTStep / dtStep) * i * multiples; //convert to hours or days or whatever
                }
                timeDataArr.setDouble(i, timeStepValue);
            }
            newNetcdfFile.write(_settings.TimeAxisName, timeDataArr);

            //lon
            ucar.ma2.ArrayDouble xDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsX);
            for (int i = 0; i < df_in.Items[0].nPointsX; i++)
            {
                double xValue = df_in.Longitude + df_in.Items[0].DX * i;
                xDataArr.setDouble(i, xValue);
            }
            newNetcdfFile.write(_settings.XAxisName, xDataArr);

            //lat
            ucar.ma2.ArrayDouble yDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsY);
            for (int i = 0; i < df_in.Items[0].nPointsY; i++)
            {
                double yValue = df_in.Latitude + df_in.Items[0].DY * i;
                yDataArr.setDouble(i, yValue);
            }
            newNetcdfFile.write(_settings.YAxisName, yDataArr);
        }