package org.jgrasstools.hortonmachine.models.hm; import java.util.HashMap; import java.util.List; import org.geotools.coverage.grid.GridCoverage2D; import org.jgrasstools.gears.io.eicalculator.EIAltimetry; import org.jgrasstools.gears.io.eicalculator.EIAreas; import org.jgrasstools.gears.io.eicalculator.EIEnergy; import org.jgrasstools.gears.libs.monitor.DummyProgressMonitor; import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; import org.jgrasstools.gears.utils.coverage.CoverageUtilities; import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.energyindexcalculator.OmsEnergyIndexCalculator; import org.jgrasstools.hortonmachine.utils.HMTestCase; import org.jgrasstools.hortonmachine.utils.HMTestMaps; import org.opengis.referencing.crs.CoordinateReferenceSystem; /** * Test {@link OmsEnergyIndexCalculator}. * * @author Andrea Antonello (www.hydrologis.com) */ public class TestEnergyIndexCalculator extends HMTestCase { /** * TODO make this test a bit more serious. * * @throws Exception */ public void testEnergyIndexCalculator() throws Exception { HashMap<String, Double> envelopeParams = HMTestMaps.getEnvelopeparams(); CoordinateReferenceSystem crs = HMTestMaps.getCrs(); // PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.out); double[][] aspectData = HMTestMaps.aspectDataRadiants; GridCoverage2D aspectCoverage = CoverageUtilities.buildCoverage("aspect", aspectData, envelopeParams, crs, true); double[][] nablaData = HMTestMaps.nablaData0; GridCoverage2D nablaCoverage = CoverageUtilities.buildCoverage("nabla", nablaData, envelopeParams, crs, true); double[][] pitData = HMTestMaps.pitData; GridCoverage2D pitCoverage = CoverageUtilities.buildCoverage("pit", pitData, envelopeParams, crs, true); double[][] slopeData = HMTestMaps.slopeData; GridCoverage2D slopeCoverage = CoverageUtilities.buildCoverage("slope", slopeData, envelopeParams, crs, true); double[][] subbasinsData = HMTestMaps.basinDataNN0; GridCoverage2D subbasinsCoverage = CoverageUtilities.buildCoverage("subbasins", subbasinsData, envelopeParams, crs, true); OmsEnergyIndexCalculator eiCalculator = new OmsEnergyIndexCalculator(); eiCalculator.inAspect = aspectCoverage; eiCalculator.inCurvatures = nablaCoverage; eiCalculator.inElev = pitCoverage; eiCalculator.inSlope = slopeCoverage; eiCalculator.inBasins = subbasinsCoverage; eiCalculator.pDt = 1; eiCalculator.pEi = 2; eiCalculator.pEs = 2; eiCalculator.pm = new DummyProgressMonitor(); eiCalculator.process(); List<EIAltimetry> altimetricValues = eiCalculator.outAltimetry; List<EIEnergy> energeticValues = eiCalculator.outEnergy; List<EIAreas> areaValues = eiCalculator.outArea; EIAltimetry eiAltimetry = altimetricValues.get(0); assertEquals(1, eiAltimetry.basinId); assertEquals(0, eiAltimetry.altimetricBandId); assertEquals(737.5, eiAltimetry.elevationValue); assertEquals(75.0, eiAltimetry.bandRange); EIEnergy eiEnergy = energeticValues.get(0); assertEquals(1, eiEnergy.basinId); assertEquals(0, eiEnergy.energeticBandId); assertEquals(0, eiEnergy.virtualMonth); assertEquals(0.09808943859674346, eiEnergy.energyValue, 0.0001); EIAreas eiAreas = areaValues.get(0); assertEquals(1, eiAreas.basinId); assertEquals(0, eiAreas.altimetricBandId); assertEquals(0, eiAreas.energyBandId); assertEquals(0.0, eiAreas.areaValue, 0.0001); } }