private static void AddCropColumn(DataTable Data, string CropName, Soil MySoil, int Row, int NumLayers) { if (MySoil.CropExists(CropName)) { DataTableUtility.AddColumn(Data, "ll(" + CropName + ")", MySoil.LL(CropName), Row, NumLayers); DataTableUtility.AddColumn(Data, "kl(" + CropName + ")", MySoil.KL(CropName), Row, NumLayers); DataTableUtility.AddColumn(Data, "xf(" + CropName + ")", MySoil.XF(CropName), Row, NumLayers); } else { DataTableUtility.AddValue(Data, "ll(" + CropName + ")", MathUtility.MissingValue, Row, NumLayers); DataTableUtility.AddValue(Data, "kl(" + CropName + ")", MathUtility.MissingValue, Row, NumLayers); DataTableUtility.AddValue(Data, "xf(" + CropName + ")", MathUtility.MissingValue, Row, NumLayers); } }
static private void CreateTableFromSoil(Soil MySoil, DataTable Data, string ChildPath, ref int Row) { int NumLayers = MySoil.Thickness.Length; DataTableUtility.AddValue(Data, "Name", ChildPath, Row, NumLayers); DataTableUtility.AddValue(Data, "State", MySoil.State, Row, NumLayers); DataTableUtility.AddValue(Data, "Region", MySoil.Region, Row, NumLayers); DataTableUtility.AddValue(Data, "NearestTown", MySoil.NearestTown, Row, NumLayers); DataTableUtility.AddValue(Data, "Site", MySoil.Site, Row, NumLayers); DataTableUtility.AddValue(Data, "APSoilNumber", MySoil.ApsoilNumber, Row, NumLayers); DataTableUtility.AddValue(Data, "Classification", MySoil.Classification, Row, NumLayers); DataTableUtility.AddValue(Data, "Latitude(WGS84)", MySoil.Latitude, Row, NumLayers); DataTableUtility.AddValue(Data, "Longitude(WGS84)", MySoil.Longitude, Row, NumLayers); DataTableUtility.AddValue(Data, "LocationAccuracy", MySoil.LocationAccuracy, Row, NumLayers); DataTableUtility.AddValue(Data, "DataSource", MySoil.DataSource, Row, NumLayers); DataTableUtility.AddValue(Data, "Comments", MySoil.Comment, Row, NumLayers); DataTableUtility.AddValue(Data, "NaturalVegetation", MySoil.NaturalVegetation, Row, NumLayers); DataTableUtility.AddColumn(Data, "Thickness", MySoil.Thickness, Row, NumLayers); DataTableUtility.AddColumn(Data, "BD", MySoil.BD, Row, NumLayers); DataTableUtility.AddColumn(Data, "Rocks", MySoil.Rocks, Row, NumLayers); DataTableUtility.AddColumn(Data, "Texture", MySoil.Texture, Row, NumLayers); DataTableUtility.AddColumn(Data, "SAT", MySoil.SAT, Row, NumLayers); DataTableUtility.AddColumn(Data, "DUL", MySoil.DUL, Row, NumLayers); DataTableUtility.AddColumn(Data, "LL15", MySoil.LL15, Row, NumLayers); DataTableUtility.AddColumn(Data, "Airdry", MySoil.Airdry, Row, NumLayers); string[] CropOrder = { "wheat", "barley", "oats", "canola", "chickpea", "cotton", "sorghum", "lentil", "lupin", "fieldpea", "mungbean", "sunflower", "fababean", "lucerne", "maize", "perennial grass", "cowpea", "navybean", "peanut", "pigeonpea", "soybean", "stylo", "sugar", "lablab", "millet", "triticale", "weed", "medic" }; for (int i = 0; i != 7; i++) { AddCropColumn(Data, CropOrder[i], MySoil, Row, NumLayers); } DataTableUtility.AddValue(Data, "SummerU", MySoil.SummerU, Row, NumLayers); DataTableUtility.AddValue(Data, "SummerCona", MySoil.SummerCona, Row, NumLayers); DataTableUtility.AddValue(Data, "WinterU", MySoil.WinterU, Row, NumLayers); DataTableUtility.AddValue(Data, "WinterCona", MySoil.WinterCona, Row, NumLayers); DataTableUtility.AddValue(Data, "SummerDate", "=\"" + MySoil.SummerDate + "\"", Row, NumLayers); DataTableUtility.AddValue(Data, "WinterDate", "=\"" + MySoil.WinterDate + "\"", Row, NumLayers); DataTableUtility.AddValue(Data, "U", MySoil.U, Row, NumLayers); DataTableUtility.AddValue(Data, "Cona", MySoil.Cona, Row, NumLayers); DataTableUtility.AddValue(Data, "Salb", MySoil.Salb, Row, NumLayers); DataTableUtility.AddValue(Data, "DiffusConst", MySoil.DiffusConst, Row, NumLayers); DataTableUtility.AddValue(Data, "DiffusSlope", MySoil.DiffusSlope, Row, NumLayers); DataTableUtility.AddValue(Data, "CN2Bare", MySoil.CN2Bare, Row, NumLayers); DataTableUtility.AddValue(Data, "CNRed", MySoil.CNRed, Row, NumLayers); DataTableUtility.AddValue(Data, "CNCov", MySoil.CNCov, Row, NumLayers); DataTableUtility.AddValue(Data, "RootCN", MySoil.RootCN, Row, NumLayers); DataTableUtility.AddValue(Data, "RootWT", MySoil.RootWT, Row, NumLayers); DataTableUtility.AddValue(Data, "SoilCN", MySoil.SoilCN, Row, NumLayers); DataTableUtility.AddValue(Data, "EnrACoeff", MySoil.EnrACoeff, Row, NumLayers); DataTableUtility.AddValue(Data, "EnrBCoeff", MySoil.EnrBCoeff, Row, NumLayers); DataTableUtility.AddColumn(Data, "SWCON", MySoil.SWCON, Row, NumLayers); DataTableUtility.AddColumn(Data, "MWCON", MySoil.MWCON, Row, NumLayers); DataTableUtility.AddColumn(Data, "FBIOM", MySoil.FBIOM, Row, NumLayers); DataTableUtility.AddColumn(Data, "FINERT", MySoil.FINERT, Row, NumLayers); DataTableUtility.AddColumn(Data, "KS", MySoil.KS, Row, NumLayers); DataTableUtility.AddColumn(Data, "OC", MySoil.OC, Row, NumLayers); DataTableUtility.AddColumn(Data, "EC", MySoil.EC, Row, NumLayers); DataTableUtility.AddColumn(Data, "PH", MySoil.PH, Row, NumLayers); DataTableUtility.AddColumn(Data, "CL", MySoil.CL, Row, NumLayers); DataTableUtility.AddColumn(Data, "Boron", MySoil.Boron, Row, NumLayers); DataTableUtility.AddColumn(Data, "CEC", MySoil.CEC, Row, NumLayers); DataTableUtility.AddColumn(Data, "Ca", MySoil.Ca, Row, NumLayers); DataTableUtility.AddColumn(Data, "Mg", MySoil.Mg, Row, NumLayers); DataTableUtility.AddColumn(Data, "Na", MySoil.Na, Row, NumLayers); DataTableUtility.AddColumn(Data, "K", MySoil.K, Row, NumLayers); DataTableUtility.AddColumn(Data, "ESP", MySoil.ESP, Row, NumLayers); DataTableUtility.AddColumn(Data, "Mn", MySoil.Mn, Row, NumLayers); DataTableUtility.AddColumn(Data, "Al", MySoil.Al, Row, NumLayers); DataTableUtility.AddColumn(Data, "ParticleSizeSand", MySoil.ParticleSizeSand, Row, NumLayers); DataTableUtility.AddColumn(Data, "ParticleSizeSilt", MySoil.ParticleSizeSilt, Row, NumLayers); DataTableUtility.AddColumn(Data, "ParticleSizeClay", MySoil.ParticleSizeClay, Row, NumLayers); for (int i = 7; i != CropOrder.Length; i++) { AddCropColumn(Data, CropOrder[i], MySoil, Row, NumLayers); } // Add other crops not in our list above. foreach (string CropName in MySoil.CropsMeasured) { if (Array.IndexOf(CropOrder, CropName.ToLower()) == -1) { AddCropColumn(Data, CropName, MySoil, Row, NumLayers); } } Row += NumLayers; }