private ErosionParameters GetErosionParameters( WepsResponseV5_2 wepsResponse, WeppResponseV3_1 weppResponse, Rusle2ResponseV5_0 rusle2Response) { double null_flag = -9999.99; ErosionParameters result = new ErosionParameters() { Latitude = wepsResponse.Latitude, Longitude = wepsResponse.Longitude, RotationName = wepsResponse.RotationName, WepsOM = wepsResponse.OM, WeppOM = weppResponse?.OM ?? null_flag, Rusle2OM = rusle2Response?.OM ?? null_flag, WepsFO = wepsResponse.FO, WeppFO = weppResponse?.FO ?? null_flag, Rusle2FO = rusle2Response?.FO ?? null_flag, WepsER = wepsResponse.ER, WeppER = weppResponse?.ER ?? null_flag, Rusle2ER = rusle2Response?.ER ?? null_flag, WepsStir = wepsResponse.Stir, WeppStir = weppResponse?.Stir ?? null_flag, Rusle2Stir = rusle2Response?.Stir ?? null_flag, WepsWindErosion = wepsResponse.WindErosion, WeppSoilLoss = weppResponse?.SoilLoss ?? null_flag, Rusle2SoilLoss = rusle2Response?.SoilLoss ?? null_flag, Rusle2Sci = rusle2Response?.SCI ?? null_flag, WepsAverageBiomass = wepsResponse?.AverageBiomass ?? null_flag }; return(result); }
public bool Run( string inputWeppPath, string inputWepsPath, string inputRusle2Path, string outputFilePath) { // Read json files with simulation results List <WeppResponseV3_1> weppResponses = jsonHandler.ReadWeppResponseV3_1Files( inputWeppPath, weppV3_1Service); List <WepsResponseV5_2> wepsResponses = jsonHandler.ReadWepsResponseV5_2Files( inputWepsPath, wepsV5_2Service); List <Rusle2ResponseV5_0> rusle2Responses = jsonHandler.ReadRusle2ResponseV5_0Files( inputRusle2Path, rusle2V5_0Service); /* I should allow for failed runs - SciBuilder should check for missing values and skip those * if ((weppResponses.Count != wepsResponses.Count) || * (weppResponses.Count != rusle2Responses.Count)) * throw new ArgumentException("Input paths do not contain the same number of files"); */ // Merge simulation results into erosion parameters // Using WEPS results to merge because when calc "SCI" both "old" and "new" versions require WEPS List <ErosionParameters> erosionParametersList = new List <ErosionParameters>(); foreach (WepsResponseV5_2 wepsResponse in wepsResponses) { WeppResponseV3_1 weppResponse = weppResponses.First( x => x.Latitude == wepsResponse.Latitude && x.Longitude == wepsResponse.Longitude && x.RotationName == wepsResponse.RotationName); Rusle2ResponseV5_0 rusle2Response = rusle2Responses.First( x => x.Latitude == wepsResponse.Latitude && x.Longitude == wepsResponse.Longitude && x.RotationName == wepsResponse.RotationName); ErosionParameters erosionParameters = GetErosionParameters( wepsResponse, weppResponse, rusle2Response); erosionParametersList.Add(erosionParameters); } // Write file csvHandler.WriteErosionParameters( outputFilePath, erosionParametersList); return(true); }
public void ParseResults_ValidJson_ExpectedResults() { // Arrange var sut = new Rusle2V5_0(); string json = File.ReadAllText( @"Assets\exampleRusle2ResponseV5_0.json"); // Act Rusle2ResponseV5_0 actual = sut.ParseResultsJson(json); // Assert Assert.Equal(0.188843446136428, actual.SCI); Assert.Equal("R2_GrainFallow_HeavyTillage", actual.RotationName); Assert.Equal("69abba4e-85b8-11ea-9468-2d456bab2f27", actual.Suid); Assert.Equal(0.680779736533603, actual.ER); Assert.Equal(0.011386138613861, actual.FO); Assert.Equal(0.120332608460407, actual.OM); }
public List <Rusle2ResponseV5_0> ReadRusle2ResponseV5_0Files( string filePath, Rusle2V5_0 service) { string[] files = Directory.GetFiles(filePath, "*.json"); List <Rusle2ResponseV5_0> results = new List <Rusle2ResponseV5_0>(); foreach (var file in files) { string json = File.ReadAllText(file); Rusle2ResponseV5_0 result = service.ParseResultsJson(json); results.Add(result); } return(results); }