/** * Calculate median (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the median * @param expression Single Expression argument * @return An object containing the median value of the attributes * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateMedian( FeatureCollection<? extends FeatureType, ? extends Feature> collection, Expression expression) throws IllegalFilterException, IOException { MedianVisitor medianVisitor = new MedianVisitor(expression); collection.accepts(medianVisitor, null); return medianVisitor.getResult(); }
public void setValue(List list) { reset(); this.list = list; }
/** Return the median of all features in the collection */ public Object getMedian() { if (median != null) { // median was overwritten by an optimization return median; } else { // we're got a list of items, determine the median... Object newMedian = findMedian(list); if (newMedian == null) { throw new IllegalStateException("Must visit before median value is ready!"); } return newMedian; } }
public void testMedian() throws IllegalFilterException, IOException { MedianVisitor medianVisitor1 = new MedianVisitor(0, ft); MedianVisitor medianVisitor2 = new MedianVisitor(0, ft2); CalcResult medianResult1 = medianVisitor1.getResult(); CalcResult medianResult2 = medianVisitor2.getResult(); assertEquals(2, medianResult1.toInt()); assertEquals(1.5, medianResult2.toDouble(), 0); assertEquals(3.5, medianResult4.toDouble(), 0); medianVisitor1.setValue(new Double(544)); medianResult1 = medianVisitor1.getResult(); try { medianResult3 = medianResult5.merge(medianResult1); medianVisitor1.reset(); empty.accepts(medianVisitor1, null); assertEquals(CalcResult.NULL_RESULT, medianVisitor1.getResult()); assertSame(medianResult2, medianVisitor1.getResult().merge(medianResult2)); assertSame(medianResult2, medianResult2.merge(medianVisitor1.getResult()));
@Override public FeatureCalc create(Expression aggregateAttribute) { return new MedianVisitor(aggregateAttribute); }
public void visit(SimpleFeature feature) { visit((org.opengis.feature.Feature) feature); }
@Override protected FeatureCalc createVisitor(int attributeTypeIndex, SimpleFeatureType type) { return new MedianVisitor(attributeTypeIndex, type); } }
public void visit(org.opengis.feature.Feature feature) { /** * Visitor function */ Object result = expr.evaluate(feature); if (result instanceof Comparable) { Comparable value = (Comparable) result; list.add(value); } else { throw new IllegalStateException("Expression is not comparable!"); } }
/** * Calculate median (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the median * @param expression Single Expression argument * * @return An object containing the median value of the attributes * * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateMedian(FeatureCollection<? extends FeatureType, ? extends Feature> collection, Expression expression) throws IllegalFilterException, IOException { MedianVisitor medianVisitor = new MedianVisitor(expression); collection.accepts(medianVisitor, null); return medianVisitor.getResult(); }
calc = new MaxVisitor(attIndex, features.getSchema()); } else if (function == AggregationFunction.Median) { calc = new MedianVisitor(attIndex, features.getSchema()); } else if (function == AggregationFunction.Min) { calc = new MinVisitor(attIndex, features.getSchema());
public void setValue(Comparable median) { reset(); this.median = median; }
/** * Return the median of all features in the collection */ public Object getMedian() { if (median != null) { //median was overwritten by an optimization return median; } else { //we're got a list of items, determine the median... Object newMedian = findMedian(list); if (newMedian == null) { throw new IllegalStateException( "Must visit before median value is ready!"); } return newMedian; } }
/** * Calculate median (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the median * @param expression Single Expression argument * * @return An object containing the median value of the attributes * * @throws IllegalFilterException * @throws IOException */ public static CalcResult calculateMedian(FeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { MedianVisitor medianVisitor = new MedianVisitor(expression); collection.accepts(medianVisitor, null); return medianVisitor.getResult(); }
calc = new MaxVisitor(attIndex, features.getSchema()); } else if (function == AggregationFunction.Median) { calc = new MedianVisitor(attIndex, features.getSchema()); } else if (function == AggregationFunction.Min) { calc = new MinVisitor(attIndex, features.getSchema());
public void setValue(Comparable median) { reset(); this.median = median; }
/** * Return the median of all features in the collection */ public Object getMedian() { if (median != null) { //median was overwritten by an optimization return median; } else { //we're got a list of items, determine the median... Object newMedian = findMedian(list); if (newMedian == null) { throw new IllegalStateException( "Must visit before median value is ready!"); } return newMedian; } }
public void setValue(List list) { reset(); this.list = list; }
public void setValue(List list) { reset(); this.list = list; }
public void setValue(Comparable median) { reset(); this.median = median; }