Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/utils/GaugeIndex.java @ 8850:6823991e1ed1
Better helper for acessing gauges by station
author | gernotbelger |
---|---|
date | Thu, 18 Jan 2018 18:22:25 +0100 |
parents | |
children | 385b52ccde23 |
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.utils; import java.util.List; import org.dive4elements.river.model.Gauge; /** * Allows performant access to gauges by station. * @author Gernot Belger */ public class GaugeIndex { private List<Gauge> gauges; private Gauge lastGauge = null; public GaugeIndex( List<Gauge> gauges) { this.gauges = gauges; } public Gauge findGauge(double km) { // REMARK: this is code copied from WaterlevelExporter, which is honestly not very fast/good. // Instead we need to index by range with an RTree and directly acccess the right gauge. if( lastGauge != null && lastGauge.getRange().contains(km) ) return lastGauge; final Gauge gauge = findGauge(km, gauges); lastGauge = gauge; return gauge; } private static Gauge findGauge(double km, List<Gauge> gauges) { for (Gauge gauge: gauges) { if (gauge.getRange().contains(km)) { return gauge; } } return null; } }