comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesCrossSectionProcessor.java @ 9527:7c8d62867876

Cleanup of MainWstValue code. Cache qPositions once determined.
author gernotbelger
date Tue, 02 Oct 2018 13:25:52 +0200
parents ee6508687e3f
children d9fda7af24ca
comparison
equal deleted inserted replaced
9526:51212d40ff56 9527:7c8d62867876
21 import org.dive4elements.artifacts.CallMeta; 21 import org.dive4elements.artifacts.CallMeta;
22 import org.dive4elements.artifacts.DataProvider; 22 import org.dive4elements.artifacts.DataProvider;
23 import org.dive4elements.river.artifacts.D4EArtifact; 23 import org.dive4elements.river.artifacts.D4EArtifact;
24 import org.dive4elements.river.artifacts.access.RiverAccess; 24 import org.dive4elements.river.artifacts.access.RiverAccess;
25 import org.dive4elements.river.artifacts.model.CrossSectionFacetUtils; 25 import org.dive4elements.river.artifacts.model.CrossSectionFacetUtils;
26 import org.dive4elements.river.artifacts.model.river.MainWstValuesCalculator; 26 import org.dive4elements.river.artifacts.model.river.MainWstValues;
27 import org.dive4elements.river.artifacts.resources.Resources; 27 import org.dive4elements.river.artifacts.resources.Resources;
28 import org.dive4elements.river.exports.CrossSectionGenerator; 28 import org.dive4elements.river.exports.CrossSectionGenerator;
29 import org.dive4elements.river.jfree.StripedAreaDataset; 29 import org.dive4elements.river.jfree.StripedAreaDataset;
30 import org.dive4elements.river.jfree.StripedAreaDataset.Stripe; 30 import org.dive4elements.river.jfree.StripedAreaDataset.Stripe;
31 import org.dive4elements.river.model.FastCrossSectionLine; 31 import org.dive4elements.river.model.FastCrossSectionLine;
85 85
86 final StripedAreaDataset dataset = new StripedAreaDataset(theme); 86 final StripedAreaDataset dataset = new StripedAreaDataset(theme);
87 87
88 for (final VegetationZoneServerClientXChange zone : zones) { 88 for (final VegetationZoneServerClientXChange zone : zones) {
89 89
90 final double lower = uefdToHeight(context, river, currentStation, zone.getLowerFromTo()); 90 final double lower = uefdToHeight(river, currentStation, zone.getLowerFromTo());
91 final double upper = uefdToHeight(context, river, currentStation, zone.getUpperFromTo()); 91 final double upper = uefdToHeight(river, currentStation, zone.getUpperFromTo());
92 92
93 final Color color = Color.decode(zone.getHexColor()); 93 final Color color = Color.decode(zone.getHexColor());
94 final String label = String.format("%s (%dd-%dd)", zone.getZoneName(), zone.getLowerFromTo(), zone.getUpperFromTo()); 94 final String label = String.format("%s (%dd-%dd)", zone.getZoneName(), zone.getLowerFromTo(), zone.getUpperFromTo());
95 dataset.addStripe(new Stripe(label, color, lower, upper)); 95 dataset.addStripe(new Stripe(label, color, lower, upper));
96 } 96 }
114 } 114 }
115 115
116 throw new UnsupportedOperationException(); 116 throw new UnsupportedOperationException();
117 } 117 }
118 118
119 private static double uefdToHeight(final CallContext context, final River river, final double station, final int uefd) { 119 private static double uefdToHeight(final River river, final double station, final int uefd) {
120 120
121 // FIXME: cache me 121 final MainWstValues mainWstValues = MainWstValues.forRiver(river);
122 final MainWstValuesCalculator mainWstValues = MainWstValuesCalculator.forRiver(context, river, null, MAIN_VALUE_MQ); 122 final double mw = mainWstValues.getW(river, MAIN_VALUE_MQ, station);
123
124 final double mw = mainWstValues.interpolateW(station, MAIN_VALUE_MQ);
125 123
126 // Üfd = -70,559 ∗ ln((DGM - MW) + 0,5) + 80,711 124 // Üfd = -70,559 ∗ ln((DGM - MW) + 0,5) + 80,711
127 final double f1 = -70.559; 125 final double f1 = -70.559;
128 final double f2 = 88.711; 126 final double f2 = 88.711;
129 127

http://dive4elements.wald.intevation.org