Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }