Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java @ 1091:fb2d07f7a5ae
Added configuration and sql statements for a new product named 'Achsenparalleler Vertikalschnitt.
gnv-artifacts/trunk@1205 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Sat, 12 Jun 2010 13:06:40 +0000 |
parents | 2423cefe7d39 |
children | f953c9a559d8 |
line wrap: on
line source
package de.intevation.gnv.statistics; import java.sql.SQLException; import java.util.Collection; import org.apache.log4j.Logger; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.io.ParseException; import com.vividsolutions.jts.io.WKTReader; import de.intevation.gnv.geobackend.base.Result; import de.intevation.gnv.state.describedata.KeyValueDescibeData; import de.intevation.gnv.utils.DistanceCalculator; /** * This class is used to create a statistic for 'Horizontalprofil' products. * * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a> * */ public class HorizontalProfileStatistics extends TimeseriesStatistics { private static Logger log = Logger.getLogger(HorizontalProfileStatistics.class); private WKTReader wktReader = new WKTReader(); private DistanceCalculator dc = new DistanceCalculator(); private double distance = 0; /** * Constructor */ public HorizontalProfileStatistics() { super(); } @Override protected double calculateXOrdinateValue(Result previousRow,Result row) throws SQLException { try { Point start = (Point)this.wktReader.read(previousRow.getString("SHAPE")); Point current = (Point)this.wktReader.read(row.getString("SHAPE")); double delta = DistanceCalculator.calculateDistance(start, current); if (!Double.isNaN(delta)){ this.distance = this.distance + delta; } } catch (ParseException e) { log.error(e,e); } return this.distance; } @Override protected String generateStatisticsName( String break1, String break2, String break3, Collection<KeyValueDescibeData> parameters, Collection<KeyValueDescibeData> measurements, Collection<KeyValueDescibeData> dates) { return (this.findValueTitle(parameters, break1)+ " "+ this.findValueTitle(measurements,break2)).trim()+" "+ this.findValueTitle(dates,break3); } @Override protected void clearStatistics() { log.debug("HorizontalProfileStatistics.clearStatistics"); super.clearStatistics(); this.distance = 0; } }