/** * Calculate average (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the average * @param expression Single Expression argument * @return An object containing the average value of the attributes * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateAverage( FeatureCollection<? extends FeatureType, ? extends Feature> collection, Expression expression) throws IllegalFilterException, IOException { AverageVisitor averageVisitor = new AverageVisitor(expression); collection.accepts(averageVisitor, null); return averageVisitor.getResult(); }
int value1 = averageVisitor.getResult().toInt(); assertEquals(2, value1); double value2 = averageVisitor2.getResult().toDouble(); assertEquals((double) 3.75, value2, 0); CalcResult averageResult1 = averageVisitor.getResult(); CalcResult averageResult2 = averageVisitor2.getResult(); CalcResult averageResult3 = averageResult1.merge(averageResult2); assertEquals((double) 2.7, averageResult3.toDouble(), 0); averageResult2 = averageVisitor2.getResult(); assertEquals(20, averageResult2.toInt()); averageResult3 = averageResult1.merge(averageResult2); assertEquals((double) 13.25, averageResult3.toDouble(), 0); averageVisitor2.setValue(new Double(15.4)); // un-mergeable optimization averageResult2 = averageVisitor2.getResult(); assertEquals((double) 15.4, averageResult2.toDouble(), 0); try { averageResult1 = averageVisitor.getResult(); averageVisitor2.setValue(5, new Double(33.3)); averageResult2 = averageVisitor2.getResult(); assertEquals(CalcResult.NULL_RESULT, averageVisitor.getResult()); assertSame(averageResult2, averageVisitor.getResult().merge(averageResult2)); assertSame(averageResult2, averageResult2.merge(averageVisitor.getResult()));
/** * Calculate average (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the average * @param expression Single Expression argument * * @return An object containing the average value of the attributes * * @throws IllegalFilterException * @throws IOException */ public static CalcResult calculateAverage(FeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { AverageVisitor averageVisitor = new AverageVisitor(expression); collection.accepts(averageVisitor, null); return averageVisitor.getResult(); }
/** * Calculate average (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the average * @param expression Single Expression argument * * @return An object containing the average value of the attributes * * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateAverage(FeatureCollection<? extends FeatureType, ? extends Feature> collection, Expression expression) throws IllegalFilterException, IOException { AverageVisitor averageVisitor = new AverageVisitor(expression); collection.accepts(averageVisitor, null); return averageVisitor.getResult(); }
public void testStandardDeviation() throws Exception { FilterFactory factory = CommonFactoryFinder.getFilterFactory(null); Expression expr = factory.property(ft3.getDescriptor(0).getLocalName()); // first do it the old fashioned way to ensure backwards compatibility AverageVisitor visit1 = new AverageVisitor(expr); fc3.accepts(visit1, null); CalcResult result = visit1.getResult(); double average = result.toDouble(); StandardDeviationVisitor visit2 = new StandardDeviationVisitor(expr, average); fc3.accepts(visit2, null); assertEquals(28.86, visit2.getResult().toDouble(), 0.01); // then do it single pass StandardDeviationVisitor visit3 = new StandardDeviationVisitor(expr); fc3.accepts(visit3, null); assertEquals(28.86, visit3.getResult().toDouble(), 0.01); // test empty collection StandardDeviationVisitor emptyVisitor = new StandardDeviationVisitor(expr, average); empty.accepts(emptyVisitor, null); assertEquals(CalcResult.NULL_RESULT, emptyVisitor.getResult()); // test merge assertSame(result, emptyVisitor.getResult().merge(result)); assertSame(result, result.merge(emptyVisitor.getResult())); }
featureCollection.accepts(averageVisit, progress); if (progress.isCanceled()) return null; CalcResult calcResult = averageVisit.getResult(); if (calcResult == null) return null; double average = calcResult.toDouble();