protected QuantileListVisitor getListVisitor() { // use a visitor to find the values in each bin return new QuantileListVisitor(getParameters().get(0), getClasses()); } }
public void visit(SimpleFeature feature) { visit((org.opengis.feature.Feature) feature); }
public void testQuantileList() throws Exception { FilterFactory factory = CommonFactoryFinder.getFilterFactory(null); Expression expr = factory.property(ft.getDescriptor(0).getLocalName()); QuantileListVisitor visitor = new QuantileListVisitor(expr, 2); fc.accepts(visitor, null); CalcResult result = visitor.getResult(); List[] qResult = (List[]) result.getValue(); assertEquals(2, qResult.length); assertEquals(2, qResult[0].size()); assertEquals(1, qResult[1].size()); // test empty collection QuantileListVisitor emptyVisitor = new QuantileListVisitor(expr, 2); empty.accepts(emptyVisitor, null); assertEquals(CalcResult.NULL_RESULT, emptyVisitor.getResult()); // test merge assertSame(result, emptyVisitor.getResult().merge(result)); assertSame(result, result.merge(emptyVisitor.getResult())); }
private Object calculate(SimpleFeatureCollection featureCollection) { // use a visitor to find the values in each bin QuantileListVisitor quantileVisit = new QuantileListVisitor(getExpression(), getClasses()); if (progress == null) progress = new NullProgressListener(); try { featureCollection.accepts(quantileVisit, progress); } catch (IOException e) { LOGGER.log(Level.SEVERE, "QuantileFunction calculate(SimpleFeatureCollection) failed" , e); return null; } if (progress.isCanceled()) return null; CalcResult calcResult = quantileVisit.getResult(); if (calcResult == null) return null; List[] bin = (List[]) calcResult.getValue(); //generate the min and max values, and round off if applicable/necessary Comparable globalMin = (Comparable) bin[0].toArray()[0]; Object lastBin[] = bin[bin.length-1].toArray(); if (lastBin.length == 0) { return null; } Comparable globalMax = (Comparable) lastBin[lastBin.length-1]; if ((globalMin instanceof Number) && (globalMax instanceof Number)) { return calculateNumerical(bin, globalMin, globalMax); } else { return calculateNonNumerical(bin); } }
private Object calculate(FeatureCollection featureCollection) { // use a visitor to find the values in each bin QuantileListVisitor quantileVisit = new QuantileListVisitor(getExpression(), getClasses()); if (progress == null) progress = new NullProgressListener(); try { featureCollection.accepts(quantileVisit, progress); } catch (IOException e) { LOGGER.log(Level.SEVERE, "QuantileFunction calculate(FeatureCollection) failed" , e); return null; } if (progress.isCanceled()) return null; CalcResult calcResult = quantileVisit.getResult(); if (calcResult == null) return null; List[] bin = (List[]) calcResult.getValue(); //generate the min and max values, and round off if applicable/necessary Comparable globalMin = (Comparable) bin[0].toArray()[0]; Object lastBin[] = bin[bin.length-1].toArray(); if (lastBin.length == 0) { return null; } Comparable globalMax = (Comparable) lastBin[lastBin.length-1]; if ((globalMin instanceof Number) && (globalMax instanceof Number)) { return calculateNumerical(bin, globalMin, globalMax); } else { return calculateNonNumerical(bin); } }
public void visit(SimpleFeature feature) { visit((org.opengis.feature.Feature)feature); } public void visit(org.opengis.feature.Feature feature) {