Mercurial > dive4elements > river
view 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 source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ 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; /** * @author Domenico Nardi Tironi * */ final class InundationDurationCalculation { private final CallContext context; public InundationDurationCalculation(final CallContext context) { this.context = context; } public CalculationResult calculate(final UINFOArtifact uinfo) { final Calculation problems = new Calculation(); try { final InundationDurationAccess indurax = new InundationDurationAccess(uinfo); 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"; 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); } catch (IOException | TsvReaderException e) { e.printStackTrace(); problems.addProblem("Invalid server configuration: " + e.getLocalizedMessage()); return new CalculationResult(null, problems); } } }