diff gnv-artifacts/src/main/java/de/intevation/gnv/utils/WKTUtils.java @ 423:2402173a1490

Moved some methods back to old place. gnv-artifacts/trunk@471 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 21 Dec 2009 17:03:10 +0000
parents c6a287398379
children eb2ac62e853a
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/utils/WKTUtils.java	Mon Dec 21 16:47:45 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/WKTUtils.java	Mon Dec 21 17:03:10 2009 +0000
@@ -6,20 +6,13 @@
 import com.vividsolutions.jts.io.ParseException;
 import com.vividsolutions.jts.io.WKTReader;
 
-import de.intevation.gnv.geobackend.base.DefaultResult;
-import de.intevation.gnv.geobackend.base.DefaultResultDescriptor;
 import de.intevation.gnv.geobackend.base.Result;
-import de.intevation.gnv.geobackend.base.ResultDescriptor;
 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
-import de.intevation.gnv.math.Interpolation2D;
 import de.intevation.gnv.math.LinearFunction;
-import de.intevation.gnv.math.LinearMetrics;
-import de.intevation.gnv.math.Point2d;
 import de.intevation.gnv.state.InputData;
 
-import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -36,135 +29,10 @@
 
     private static Logger log = Logger.getLogger(WKTUtils.class);
 
-    private static final String [] DIFF_COLUMS = {
-        "GROUP1",
-        "GROUP2",
-        "GROUP3"
-    };
-
-    private static final String [] COLUMN_BLACKLIST = {
-        "MEDIAN.MESHPOINT.JPOSITION",
-        "MEDIAN.MESHPOINT.IPOSITION"
-    };
-
     public static final double NAUTICAL_MILE = 1852.216d;
     public static final double KILOMETER     = 1000d;
 
-    public static final double EPSILON = 1e-5d;
-    public static final int    INTERPOLATION_STEPS =
-        Integer.getInteger("interpolation.steps", 500).intValue();
-
-
-    public static final class SectionHandler
-    implements                Interpolation2D.Consumer
-    {
-        private ArrayList<Point2d> points;
-        private List<Coordinate>   path;
-        private Collection<Result> output;
-        private Result             prototyp;
-        private ResultDescriptor   descriptor;
-        private boolean            lastWasSuccess;
-
-        public SectionHandler() {
-        }
-
-        public SectionHandler(
-            List<Coordinate>   path,
-            Collection<Result> output,
-            ResultDescriptor   descriptor
-        ) {
-            this.path       = path;
-            this.output     = output;
-            this.descriptor = descriptor;
-            points          = new ArrayList<Point2d>();
-            lastWasSuccess  = true;
-        }
-
-        public void finish() {
-            if (!points.isEmpty()) {
-                double distance = toKM(
-                    DistanceCalculator.calculateDistance(path));
-
-                if (distance > EPSILON) {
-
-                    Interpolation2D.interpolate(
-                        path,
-                        points,
-                        0d,
-                        distance,
-                        INTERPOLATION_STEPS,
-                        LinearMetrics.INSTANCE,
-                        this);
-                }
-
-                points.clear();
-            }
-            lastWasSuccess = true;
-        }
-
-        public void setPrototyp(Result prototyp) {
-            this.prototyp = prototyp;
-        }
-
-        public void handle(Result result) {
-            Coordinate coordinate = 
-                toCoordinate(result.getString("SHAPE"));
-            double value = result.getDouble("YORDINATE");
-            int iPos     = result.getInteger("MEDIAN.MESHPOINT.JPOSITION");
-            int jPos     = result.getInteger("MEDIAN.MESHPOINT.JPOSITION");
-            Point2d p = new Point2d(
-                coordinate.x,
-                coordinate.y,
-                value,
-                iPos, jPos);
-            points.add(p);
-        }
-
-        public void interpolated(Coordinate coordinate, boolean success) {
-            DefaultResult result = new DefaultResult(descriptor);
-            ResultDescriptor pd = prototyp.getResultDescriptor();
-
-            int pcolums = pd.getColumnCount();
-            for (int i = 0, j = 0; i < pcolums; ++i) {
-                String colname = pd.getColumnName(i);
-                if (blacklisted(colname)) {
-                    continue;
-                }
-                if (colname.equals("SHAPE")) {
-                    result.addColumnValue(j, OutputUtils.toWKT(coordinate));
-                }
-                else if (colname.equals("YORDINATE")) {
-                    if (success) {
-                        result.addColumnValue(j, Double.valueOf(coordinate.z));
-                    }
-                    else if (lastWasSuccess) {
-                        // only insert null if last was valid.
-                        // This prevents flooding the result set with nulls
-                        // if interpolating over a large gap.
-                        result.addColumnValue(j, null);
-                    }
-                }
-                else {
-                    result.addColumnValue(j, prototyp.getObject(i));
-                }
-                ++j;
-            }
-            output.add(result);
-            lastWasSuccess = success;
-        }
-    }
-
-
-    private static final boolean blacklisted(String column) {
-        for (int i = 0; i < COLUMN_BLACKLIST.length; ++i) {
-            if (COLUMN_BLACKLIST.equals(column)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private static boolean different(Result a, Result b, int [] indices) {
+    public static boolean different(Result a, Result b, int [] indices) {
         for (int i = 0; i < indices.length; ++i) {
             String oa = a.getString(indices[i]);
             String ob = b.getString(indices[i]);
@@ -188,66 +56,6 @@
         return false;
     }
 
-    public static Collection<Result> process(
-        List<Coordinate>   path,
-        Collection<Result> input
-    ) {
-        log.debug("------  number of points before processing: " + input.size());
-        ArrayList<Result> output = new ArrayList<Result>();
-
-        Result last = null;
-
-        int [] diffColums = null;
-
-        SectionHandler sectionHandler = null;
-
-        for (Result result: input) {
-
-            if (sectionHandler == null) {
-
-                ResultDescriptor rd = result.getResultDescriptor();
-                diffColums = rd.getColumnIndices(DIFF_COLUMS);
-                int columns = rd.getColumnCount();
-
-                DefaultResultDescriptor resultDescriptor =
-                    new DefaultResultDescriptor();
-
-                for (int j = 0; j < columns; ++j) {
-                    String columnName = rd.getColumnName(j);
-                    if (!blacklisted(columnName)) {
-                        resultDescriptor.addColumn(
-                            columnName,
-                            rd.getColumnClassName(j));
-                    }
-                }
-
-                sectionHandler = new SectionHandler(
-                    path,
-                    output,
-                    resultDescriptor);
-
-                sectionHandler.setPrototyp(result);
-            }
-
-            if (last != null && different(last, result, diffColums)) {
-                sectionHandler.finish();
-                sectionHandler.setPrototyp(result);
-            }
-
-            sectionHandler.handle(result);
-
-            last = result;
-        }
-
-        if (sectionHandler != null) {
-            sectionHandler.finish();
-        }
-
-        log.debug("------  number of points after processing: " + output.size());
-
-        return output;
-    }
-
 
     public static Coordinate toCoordinate(String shape) {
         try {
@@ -275,12 +83,10 @@
     }
 
 
-    public static Collection<Result> worldCoordinatesToIndex(
+    public static String worldCoordinatesToIndex(
         Collection<Result>     result,
         Map<String, InputData> inputData,
-        String                 ijkQueryID,
-        String                 queryID,
-        String[]               filterValues
+        String                 ijkQueryID
     ) throws ParseException, QueryException
     {
         // 1. IJK Anfragen für Stuetzpunkte im Netz ausführen.
@@ -381,16 +187,6 @@
             }
         } // if generate index filter
 
-        String[] addedFilterValues = new String[filterValues.length+1];
-        System.arraycopy(filterValues, 0, addedFilterValues, 0, filterValues.length);
-        addedFilterValues[filterValues.length] = additionWhere;
-
-        result = process(
-            Arrays.asList(coords),
-            queryExecutor.executeQuery(
-                queryID,
-                addedFilterValues));
-
-        return result;
+        return additionWhere;
     }
 }

http://dive4elements.wald.intevation.org