diff gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java @ 255:5403452c06fc

Added proper values for calculating the Statistics of VerticalProfiles and HorizontalProfiles issue86 gnv-artifacts/trunk@330 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Thu, 12 Nov 2009 14:47:20 +0000
parents 07650fc6014c
children e964a3d8f7bc
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java	Thu Nov 12 11:40:32 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java	Thu Nov 12 14:47:20 2009 +0000
@@ -6,15 +6,30 @@
 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.transition.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
      */
@@ -22,11 +37,29 @@
         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 row) throws SQLException {
-        return 0; // TODO FIXME
+    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,
@@ -39,5 +72,15 @@
                 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;
+    }
 
 }

http://dive4elements.wald.intevation.org