Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java @ 465:f7038820df2e
Added support to trace rasters to JTS multi polygons and multi line strings.
Write them to shape files with GeoTools.
gnv-artifacts/trunk@526 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 11 Jan 2010 00:29:45 +0000 |
parents | e964a3d8f7bc |
children | 9a828e5a2390 |
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; /** * @author Tim Englich <tim.englich@intevation.de> * */ 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(); } /** * @see de.intevation.gnv.statistics.TimeseriesStatistics#calculateXOrdinateValue(de.intevation.gnv.geobackend.base.Result, de.intevation.gnv.geobackend.base.Result) */ @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 = this.dc.calculateDistance(start, current); if (!Double.isNaN(delta)){ this.distance = this.distance + delta; } } catch (ParseException e) { log.error(e,e); } return this.distance; } /** * @see de.intevation.gnv.statistics.TimeseriesStatistics#generateStatisticsName(java.lang.String, java.lang.String, java.lang.String, java.util.Collection, java.util.Collection, java.util.Collection) */ @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); } /** * @see de.intevation.gnv.statistics.TimeseriesStatistics#clearStatistics() */ @Override protected void clearStatistics() { log.debug("HorizontalProfileStatistics.clearStatistics"); super.clearStatistics(); this.distance = 0; } }