Beispiel #1
0
        /// <summary>
        /// Returns the data that should be placed in the JTable at the given row and column. </summary>
        /// <param name="row"> the row for which to return data. </param>
        /// <param name="col"> the column for which to return data. </param>
        /// <returns> the data that should be placed in the JTable at the given row and col. </returns>
        public virtual object getValueAt(int row, int col)
        {
            if (_sortOrder != null)
            {
                row = _sortOrder[row];
            }

            StateCU_ClimateStation station = (StateCU_ClimateStation)_data.get(row);

            switch (col)
            {
            case __COL_ID:
                return(station.getID());

            case __COL_NAME:
                return(station.getName());

            case __COL_ELEVATION:
                return(new double?(station.getElevation()));

            case __COL_LATITUDE:
                return(new double?(station.getLatitude()));

            case __COL_REGION1:
                return(station.getRegion1());

            case __COL_REGION2:
                return(station.getRegion2());

            case __COL_ZH:
                if (StateCU_Util.isMissing(station.getZh()))
                {
                    return(null);
                }
                else
                {
                    return(new double?(station.getZh()));
                }

            case __COL_ZM:
                if (StateCU_Util.isMissing(station.getZm()))
                {
                    return(null);
                }
                else
                {
                    return(new double?(station.getZm()));
                }
            }

            return("");
        }
Beispiel #2
0
        /// <summary>
        /// Write a list of StateCU_BlaneyCriddle to an opened file. </summary>
        /// <param name="data_Vector"> A Vector of StateCU_BlaneyCriddle to write. </param>
        /// <param name="out"> output PrintWriter. </param>
        /// <param name="props"> Properties to control the output.  Currently only the
        /// optional Precision property can be set, indicating how many digits after the
        /// decimal should be printed (default is 3). </param>
        /// <exception cref="IOException"> if an error occurs. </exception>
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: private static void writeVector(java.util.List<StateCU_BlaneyCriddle> data_Vector, java.io.PrintWriter out, RTi.Util.IO.PropList props) throws java.io.IOException
        private static void writeVector(IList <StateCU_BlaneyCriddle> data_Vector, PrintWriter @out, PropList props)
        {
            int    i, j;
            string cmnt = "#>";
            // Missing data are handled by formatting all as strings (blank if necessary).
            bool version10 = false;     // Indicate if old Version 10 format is written

            if (props == null)
            {
                props = new PropList("StateCU_BlaneyCriddle");
            }
            string Precision = props.getValue("Precision");
            string Version   = props.getValue("Version");

            if (!string.ReferenceEquals(Version, null) && Version.Equals("10"))
            {
                // Version 10 is an older version.
                version10 = true;
            }

            int Precision_int = 3;

            if ((!string.ReferenceEquals(Precision, null)) && StringUtil.isInteger(Precision))
            {
                Precision_int = StringUtil.atoi(Precision);
            }

            @out.println(cmnt);
            @out.println(cmnt + "  StateCU Blaney-Criddle Crop Coefficient (KBC) File");
            @out.println(cmnt);
            @out.println(cmnt + "  Record 1 format (a80)");
            @out.println(cmnt);
            @out.println(cmnt + "  Title     remark:  Title");
            @out.println(cmnt);
            @out.println(cmnt + "  Record 2 format (free format)");
            @out.println(cmnt);
            @out.println(cmnt + "  NumCurves     nc:  Number of crop coefficient curves");
            @out.println(cmnt);
            @out.println(cmnt + "  Record 3 format (free format)");
            @out.println(cmnt);
            @out.println(cmnt + "  ID            id:  Crop number (not used by StateCU)");
            @out.println(cmnt + "  CropName   cropn:  Crop name (e.g., ALFALFA)");
            @out.println(cmnt + "  CurveType   flag:  Growth curve type");
            @out.println(cmnt + "                     Day = perennial; specify 25 values");
            @out.println(cmnt + "                           for start, middle, end of month");
            @out.println(cmnt + "                     Percent = annual; specify 21 values");
            @out.println(cmnt + "                           for 0, 5, ..., 100% of season");
            @out.println(cmnt);
            if (!version10)
            {
                // Include newer format information...
                @out.println(cmnt + "  BCMethod    ktsw:  Blaney-Criddle Method");
                @out.println(cmnt + "                     0 = SCS Modified Blaney-Criddle");
                @out.println(cmnt + "                     1 = Original Blaney-Criddle");
                @out.println(cmnt + "                     2 = Modifed Blaney-Criddle w/ Elev. Adj.");
                @out.println(cmnt + "                     3 = Original Blaney-Criddle w/ Elev. Adj.");
                @out.println(cmnt + "                     4 = Pochop");
                @out.println(cmnt);
            }
            @out.println(cmnt + "  Record 4 format (free format)");
            @out.println(cmnt);
            @out.println(cmnt + "Position     nckca:  Percent (0 to 100) of growing season for annual crop");
            @out.println(cmnt + "             nckcp:  Day of year (1 to 366) for perennial crop");
            @out.println(cmnt + "Coeff         ckca:  Crop coefficient for annual crop");
            @out.println(cmnt + "         OR   ckcp:  Crop coefficient for perennial crop");
            @out.println(cmnt);
            @out.println(cmnt + "Title...");
            @out.println(cmnt + "NumCurves");
            @out.println(cmnt + "ID CropName CurveType");
            @out.println(cmnt + "Position Coeff");
            @out.println(cmnt + "----------------------------");
            @out.println(cmnt + "EndHeader");
            @out.println("Crop Coefficient Curves for Blaney-Criddle");

            int num = 0;

            if (data_Vector != null)
            {
                num = data_Vector.Count;
            }
            @out.println(num);
            StateCU_BlaneyCriddle kbc = null;

            int[]    nckca        = null;
            int[]    nckcp        = null;
            double[] ckca         = null;
            double[] ckcp         = null;
            int      size         = 0;
            string   value_format = "%9." + Precision_int + "f";

            for (i = 0; i < num; i++)
            {
                kbc = (StateCU_BlaneyCriddle)data_Vector[i];
                if (kbc == null)
                {
                    continue;
                }

                // Just get all the data.  Null arrays are used as a check
                // below to know what data to output...
                nckca = kbc.getNckca();
                nckcp = kbc.getNckcp();
                ckca  = kbc.getCkca();
                ckcp  = kbc.getCkcp();

                // Do not truncate the name to 20 characters if version 10 because
                // doing so may result in arbitrary cut of the current crop names and
                // result in different output from old anyhow.
                string name = kbc.getName();
                // Since free format, the ID must always have something.  If
                // we don't know, put -999...
                string id = "" + (i + 1);         // Default to sequential number
                if (version10)
                {
                    // Previously used -999
                    id = "-999";
                }
                if (!StateCU_Util.isMissing(kbc.getID()))
                {
                    // Changes elsewhere impact this so also use -999 unless it is a number
                    if (StringUtil.isInteger(kbc.getID()))
                    {
                        id = "" + kbc.getID();
                    }
                    else
                    {
                        id = "-999";
                    }
                    // Can't use the crop name because StateCU expects a number (?)
                    //id = kbc.getID();
                }
                // Output based on the version because file comparisons may be done when verifying files.
                if (version10)
                {
                    // No ktsw...
                    @out.println(id + " " + name + " " + kbc.getFlag());
                }
                else
                {
                    // With ktsw, but OK if blank.
                    @out.println(id + " " + name + " " + kbc.getFlag() + " " + kbc.getKtsw());
                }

                if (nckca != null)
                {
                    size = nckca.Length;
                }
                else
                {
                    size = nckcp.Length;
                }
                for (j = 0; j < size; j++)
                {
                    if (nckca != null)
                    {
                        // Print annual curve (Percent)...
                        @out.println(StringUtil.formatString(nckca[j], "%-3d") + StringUtil.formatString(ckca[j], value_format));
                    }
                    else
                    {
                        // Print perennial curve (Day)...
                        @out.println(StringUtil.formatString((int)nckcp[j], "%-3d") + StringUtil.formatString(ckcp[j], value_format));
                    }
                }
            }
        }
        /// <summary>
        /// Write a list of StateCU_ClimateStation to an opened file. </summary>
        /// <param name="dataList"> A list of StateCU_ClimateStation to write. </param>
        /// <param name="out"> output PrintWriter. </param>
        /// <exception cref="IOException"> if an error occurs. </exception>
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: private static void writeStateCUFile(java.util.List<StateCU_ClimateStation> dataList, java.io.PrintWriter out) throws java.io.IOException
        private static void writeStateCUFile(IList <StateCU_ClimateStation> dataList, PrintWriter @out)
        {
            int    i;
            string iline;
            string cmnt = "#>";
            // Missing data handled by formatting all as strings...
            string         format = "%-12.12s%6.6s%9.9s  %-20.20s%-8.8s  %-24.24s%8.8s%8.8s";
            IList <object> v      = new List <object>(8); // Reuse for all output lines.

            @out.println(cmnt);
            @out.println(cmnt + "  StateCU Climate Stations File");
            @out.println(cmnt);
            @out.println(cmnt + "  Record format (a12,f6.2,f9.2,2x,a20,a8,2x,a24,8.2f,2.2f)");
            @out.println(cmnt);
            @out.println(cmnt + "  StationID:  Station identifier (e.g., 3951)");
            @out.println(cmnt + "        Lat:  Latitude (decimal degrees)");
            @out.println(cmnt + "       Elev:  Elevation (feet)");
            @out.println(cmnt + "    Region1:  Region1 (e.g., County)");
            @out.println(cmnt + "    Region2:  Region2 (e.g., Hydrologic Unit Code, HUC)");
            @out.println(cmnt + "StationName:  Station name");
            @out.println(cmnt + "     zHumid:  Height of humidity and temperature measurements (feet, daily analysis only)");
            @out.println(cmnt + "      zWind:  Height of wind speed measurement (feet, daily analysis only)");
            @out.println(cmnt);
            @out.println(cmnt + " StationID  Lat   Elev            Region1      Region2        StationName         zHumid  zWind");
            @out.println(cmnt + "---------eb----eb-------exxb------------------eb------exxb----------------------eb------eb------e");
            @out.println(cmnt + "EndHeader");

            int num = 0;

            if (dataList != null)
            {
                num = dataList.Count;
            }
            StateCU_ClimateStation sta = null;

            for (i = 0; i < num; i++)
            {
                sta = dataList[i];
                if (sta == null)
                {
                    continue;
                }

                v.Clear();
                v.Add(sta._id);
                // Latitude...
                if (StateCU_Util.isMissing(sta.__latitude))
                {
                    v.Add("");
                }
                else
                {
                    v.Add(StringUtil.formatString(sta.__latitude, "%6.2f"));
                }
                // Elevation...
                if (StateCU_Util.isMissing(sta.__elevation))
                {
                    v.Add("");
                }
                else
                {
                    v.Add(StringUtil.formatString(sta.__elevation, "%9.2f"));
                }
                v.Add(sta.__region1);
                v.Add(sta.__region2);
                v.Add(sta._name);
                // zh...
                if (StateCU_Util.isMissing(sta.__zh))
                {
                    v.Add("");
                }
                else
                {
                    v.Add(StringUtil.formatString(sta.__zh, "%8.2f"));
                }
                // zm...
                if (StateCU_Util.isMissing(sta.__zm))
                {
                    v.Add("");
                }
                else
                {
                    v.Add(StringUtil.formatString(sta.__zm, "%8.2f"));
                }

                iline = StringUtil.formatString(v, format);
                @out.println(iline);
            }
        }