Mercurial > dive4elements > river
changeset 6252:38d6ce2c7164
Generate facets for bed diameter measurements and draw them into the generated chart.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 10 Jun 2013 16:28:57 +0200 |
parents | 68071f205c0e |
children | b0d4aeba8e3d |
files | artifacts/doc/conf/artifacts/minfo.xml artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityState.java artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedQualityGenerator.java |
diffstat | 3 files changed, 140 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/doc/conf/artifacts/minfo.xml Mon Jun 10 16:23:39 2013 +0200 +++ b/artifacts/doc/conf/artifacts/minfo.xml Mon Jun 10 16:28:57 2013 +0200 @@ -395,14 +395,16 @@ <outputmodes> <outputmode name="bed_longitudinal_section" description="output.bed_longitudinal_section" mime-type="image/png" type="chart"> <facets> - <facet name="bed_longitudinal_section.porosity_toplayer"/> - <facet name="bed_longitudinal_section.porosity_sublayer"/> - <facet name="bed_longitudinal_section.sediment_density_toplayer"/> - <facet name="bed_longitudinal_section.sediment_density_sublayer"/> - <facet name="bed_longitudinal_section.bed_diameter_toplayer"/> + <facet name="bed_longitudinal_section.porosity_toplayer"/> + <facet name="bed_longitudinal_section.porosity_sublayer"/> + <facet name="bed_longitudinal_section.sediment_density_toplayer"/> + <facet name="bed_longitudinal_section.sediment_density_sublayer"/> + <facet name="bed_longitudinal_section.bed_diameter_toplayer"/> <facet name="bed_longitudinal_section.bed_diameter_sublayer"/> + <facet name="bed_longitudinal_section.bed_diameter_data_top"/> + <facet name="bed_longitudinal_section.bed_diameter_data_sub"/> <facet name="bed_longitudinal_section.manualpoints" /> - <facet name="bed_longitudinal_section.bedload_diameter"/> + <facet name="bed_longitudinal_section.bedload_diameter"/> <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations"/> </facets> </outputmode>
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityState.java Mon Jun 10 16:23:39 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityState.java Mon Jun 10 16:28:57 2013 +0200 @@ -24,6 +24,7 @@ import org.dive4elements.river.artifacts.model.DateRange; import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.artifacts.model.minfo.BedDensityFacet; +import org.dive4elements.river.artifacts.model.minfo.BedDiameterDataFacet; import org.dive4elements.river.artifacts.model.minfo.BedDiameterFacet; import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult; import org.dive4elements.river.artifacts.model.minfo.BedParametersResult; @@ -53,6 +54,9 @@ public static final String I18N_FACET_BED_DENSITY_SUBLAYER = "facet.bedquality.bed.density.sublayer"; public static final String I18N_FACET_BED_DIAMETER_TOPLAYER = "facet.bedquality.bed.diameter.toplayer"; public static final String I18N_FACET_BED_DIAMETER_SUBLAYER = "facet.bedquality.bed.diameter.sublayer"; + public static final String I18N_FACET_BED_DIAMETER_DATA_TOPLAYER = "facet.bedquality.bed.diameter.data.toplayer"; + public static final String I18N_FACET_BED_DIAMETER_DATA_SUBLAYER = "facet.bedquality.bed.diameter.data.sublayer"; + public static final String I18N_FACET_BEDLOAD_DIAMETER_DATA = "facet.bedquality.bedload.diameter.data"; public static final String I18N_FACET_BEDLOAD_DIAMETER = "facet.bedquality.bedload.diameter"; @Override @@ -80,12 +84,120 @@ generateFacets(context, newFacets, results, getID(), hash); logger.debug("Created " + newFacets.size() + " new Facets."); - + generateDataFacets(context, newFacets, access, getID(), hash); facets.addAll(newFacets); return res; } + private void generateDataFacets( + CallContext context, + List<Facet> newFacets, + BedQualityAccess access, + String stateId, + String hash) { + List<String> diameters = access.getBedDiameter(); + List<DateRange> ranges = access.getDateRanges(); + for (int i = 0; i < ranges.size(); i++) { + DateRange range = ranges.get(i); + for (String diameter: diameters) { + int ndxTop = generateIndex(diameter, true); + int ndxSub = generateIndex(diameter, false); + String toplayer = + Resources.getMsg( + context.getMeta(), I18N_TOPLAYER, I18N_TOPLAYER); + String sublayer = + Resources.getMsg( + context.getMeta(), I18N_SUBLAYER, I18N_SUBLAYER); + //toplayer + newFacets.add(new BedDiameterDataFacet( + ndxTop, + BED_DIAMETER_DATA_TOP, + Resources.getMsg( + context.getMeta(), + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + new Object[] { diameter.toUpperCase(), + range.getFrom(), range.getTo(), toplayer}), + ComputeType.ADVANCE, + stateId, + hash)); + //sublayer + newFacets.add(new BedDiameterDataFacet( + ndxSub, + BED_DIAMETER_DATA_SUB, + Resources.getMsg( + context.getMeta(), + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + I18N_FACET_BED_DIAMETER_DATA_TOPLAYER, + new Object[] { diameter.toUpperCase(), + range.getFrom(), range.getTo(), sublayer}), + ComputeType.ADVANCE, + stateId, + hash)); + } + } + } + + private int generateIndex(String diameter, boolean b) { + int d = 0; + if(diameter.equals("d10")) { + d = 1; + } + else if (diameter.equals("d16")) { + d = 2; + } + else if (diameter.equals("d20")) { + d = 3; + } + else if (diameter.equals("d25")) { + d = 4; + } + else if (diameter.equals("d30")) { + d = 5; + } + else if (diameter.equals("d40")) { + d = 6; + } + else if (diameter.equals("d50")) { + d = 7; + } + else if (diameter.equals("d60")) { + d = 8; + } + else if (diameter.equals("d70")) { + d = 9; + } + else if (diameter.equals("d75")) { + d = 10; + } + else if (diameter.equals("d80")) { + d = 11; + } + else if (diameter.equals("d84")) { + d = 12; + } + else if (diameter.equals("d90")) { + d = 13; + } + else if (diameter.equals("dmin")) { + d = 14; + } + else if (diameter.equals("dmax")) { + d = 15; + } + else if (diameter.equals("dm")) { + d = 16; + } + int ndx = d; + ndx = ndx << 1; + if (b) { + ndx += 1; + } + ndx = ndx << 3; + return ndx; + } + protected void generateFacets(CallContext context, List<Facet> newFacets, BedQualityResult[] results, String stateId, String hash) { logger.debug("BedQualityState.generateFacets");
--- a/artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedQualityGenerator.java Mon Jun 10 16:23:39 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedQualityGenerator.java Mon Jun 10 16:28:57 2013 +0200 @@ -15,6 +15,7 @@ import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Facet; import org.dive4elements.river.artifacts.model.FacetTypes; +import org.dive4elements.river.artifacts.model.minfo.BedDiameterData; import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult; import org.dive4elements.river.artifacts.model.minfo.BedParametersResult; import org.dive4elements.river.artifacts.model.minfo.BedloadDiameterResult; @@ -193,6 +194,12 @@ (BedParametersResult) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } + else if (name.equals(BED_DIAMETER_DATA_TOP) || + name.equals(BED_DIAMETER_DATA_SUB)) { + doBedDiameterDataOut( + (BedDiameterData) artifactAndFacet.getData(context), + artifactAndFacet, attr, visible); + } else if (name.equals(LONGITUDINAL_ANNOTATION)) { doAnnotations( (RiverAnnotation) artifactAndFacet.getData(context), @@ -210,6 +217,18 @@ } } + private void doBedDiameterDataOut( + BedDiameterData data, + ArtifactAndFacet aandf, + Document theme, + boolean visible + ) { + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getDiameterData(), true); + + addAxisSeries(series, YAXIS.W.idx, visible); + } + protected void doBedDiameterTopLayerOut(BedDiameterResult data, ArtifactAndFacet aandf, Document theme, boolean visible) { logger.debug("BedQuality.doBedDiameterTopLayerOut");