Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java @ 9537:bf6b63208f34
Work on uinfo inundation duration calculation.
Using proxy-wms to induce additional style information (work in progress).
author | gernotbelger |
---|---|
date | Wed, 17 Oct 2018 11:23:17 +0200 |
parents | 787fc085459b |
children | 709a73badd48 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java Tue Oct 16 16:42:22 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java Wed Oct 17 11:23:17 2018 +0200 @@ -9,12 +9,15 @@ */ package org.dive4elements.river.artifacts.uinfo.inundationduration; +import java.io.IOException; import java.util.List; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.CalculationResult; +import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException; import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; +import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationAccess.WmsClassification; import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer; import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZoneServerClientXChange; @@ -33,35 +36,46 @@ public CalculationResult calculate(final UINFOArtifact uinfo) { final Calculation problems = new Calculation(); - final InundationDurationAccess indurax = new InundationDurationAccess(uinfo); - - final String zonesRaw = indurax.getVegZones(); - final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw); - - final boolean isUseScenario = indurax.getIsUseScenario(); - - final InundationDurationCalculationResult result = new InundationDurationCalculationResult(); - - final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.inundationduration"); - result.addLayer(inundationDurationLayer); + try { + final InundationDurationAccess indurax = new InundationDurationAccess(uinfo); - // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url - final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.vegetation"); - result.addLayer(vegetationLayer); + final String zonesRaw = indurax.getVegZones(); + final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw); + // FIXME: instead find out a-uuid of referenced vegetations + // FIXME: + final String vegZoneId = "unknown"; - if (isUseScenario) { - // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel" - // und "jahre" funktioniert) - // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), - // "uinfo.export.url.inundationduration.scenario"); - // result.addLayer(scenarioInundationDurationLayer); - // - // // TODO: add vegetationzone-values as styles to layer - // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), - // "uinfo.export.url.inundationduration.vegetation_scenario"); - // result.addLayer(scenarioVegetationLayer); + final boolean isUseScenario = indurax.getIsUseScenario(); + + final InundationDurationCalculationResult result = new InundationDurationCalculationResult(); + + final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.inundationduration", + WmsClassification.asIs, vegZoneId); + result.addLayer(inundationDurationLayer); + + final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.vegetation", + WmsClassification.vegetationZone, vegZoneId); + result.addLayer(vegetationLayer); + + if (isUseScenario) { + // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel" + // und "jahre" funktioniert) + // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), + // "uinfo.export.url.inundationduration.scenario"); + // result.addLayer(scenarioInundationDurationLayer); + // + // // TODO: add vegetationzone-values as styles to layer + // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), + // "uinfo.export.url.inundationduration.vegetation_scenario"); + // result.addLayer(scenarioVegetationLayer); + } + + return new CalculationResult(result, problems); } - - return new CalculationResult(result, problems); + catch (IOException | TsvReaderException e) { + e.printStackTrace(); + problems.addProblem("Invalid server configuration: " + e.getLocalizedMessage()); + return new CalculationResult(null, problems); + } } } \ No newline at end of file