Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java @ 5083:7bbee0cfc171 slt-simplify-cross-sections
Added experimental Douglas Peuker simplification of cross sections.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 24 Feb 2013 17:29:52 +0100 |
parents | 05ff91146ddd |
children | ca45dd039b54 |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java Sun Feb 24 13:03:44 2013 +0100 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java Sun Feb 24 17:29:52 2013 +0100 @@ -1,23 +1,9 @@ package de.intevation.flys.importer; -import java.io.File; -import java.io.IOException; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.log4j.Logger; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.exception.ConstraintViolationException; +import de.intevation.artifacts.common.utils.FileTools.HashedFile; import de.intevation.artifacts.common.utils.FileTools; -import de.intevation.artifacts.common.utils.FileTools.HashedFile; + import de.intevation.flys.importer.parsers.AnnotationClassifier; import de.intevation.flys.importer.parsers.AnnotationsParser; import de.intevation.flys.importer.parsers.BedHeightEpochParser; @@ -39,9 +25,32 @@ import de.intevation.flys.importer.parsers.WaterlevelDifferencesParser; import de.intevation.flys.importer.parsers.WaterlevelParser; import de.intevation.flys.importer.parsers.WstParser; + import de.intevation.flys.model.River; import de.intevation.flys.model.Unit; +import de.intevation.flys.utils.DouglasPeuker; + +import java.io.File; +import java.io.IOException; + +import java.sql.SQLException; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.log4j.Logger; + +import org.hibernate.Query; +import org.hibernate.Session; + +import org.hibernate.exception.ConstraintViolationException; + /** Import all river-related data (files) that can be found. */ public class ImportRiver @@ -159,9 +168,11 @@ /** Callback-implementation for CrossSectionParsers. */ - class ImportRiverCrossSectionParserCallback implements CrossSectionParser.Callback { - Set<HashedFile> files = new HashSet<HashedFile>(); - String type; + private class ImportRiverCrossSectionParserCallback + implements CrossSectionParser.Callback { + + private Set<HashedFile> files = new HashSet<HashedFile>(); + private String type; /** @@ -185,7 +196,7 @@ /** Add crosssection. */ - public void parsed(CrossSectionParser parser) { + public void parsed(CrossSectionParser parser) { log.debug("callback from " + type + " parser"); addCrossSections(parser); @@ -941,14 +952,20 @@ List<ImportCrossSectionLine> lines = new ArrayList<ImportCrossSectionLine>(data.size()); + Double simplificationEpsilon = + Config.INSTANCE.getCrossSectionSimplificationEpsilon(); + for (Map.Entry<Double, List<XY>> entry: data.entrySet()) { Double km = entry.getKey(); List<XY> points = entry.getValue(); + if (simplificationEpsilon != null) { + points = DouglasPeuker.simplify(points, simplificationEpsilon); + } lines.add(new ImportCrossSectionLine(km, points)); } crossSections.add(new ImportCrossSection( - ImportRiver.this, description, ti, lines)); + this, description, ti, lines)); } /** Create a W80 Parser and parse w80 files found. */ @@ -1080,7 +1097,10 @@ } public void storeCrossSections() { - if (!Config.INSTANCE.skipPRFs() || !Config.INSTANCE.skipDA66s() || !Config.INSTANCE.skipDA50s() || !Config.INSTANCE.skipW80s()) { + if (!Config.INSTANCE.skipPRFs() + || !Config.INSTANCE.skipDA66s() + || !Config.INSTANCE.skipDA50s() + || !Config.INSTANCE.skipW80s()) { log.info("store cross sections"); getPeer(); for (ImportCrossSection crossSection: crossSections) {