annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java @ 7659:2e1392067986

issue1020: Do not write Q-Lines with wstwriter from floodmapstate.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 06 Dec 2013 10:52:39 +0100
parents 786ff139de5e
children 894daf8a6fa4
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5913
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5913
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
9 package org.dive4elements.river.artifacts.states;
927
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
11 import com.vividsolutions.jts.geom.Coordinate;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
12 import com.vividsolutions.jts.geom.Geometry;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
13 import com.vividsolutions.jts.geom.LineString;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
14 import com.vividsolutions.jts.geom.Polygon;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
15
5281
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
16 import java.io.File;
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
17 import java.io.FileNotFoundException;
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
18 import java.io.FileOutputStream;
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
19 import java.io.IOException;
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
20 import java.util.ArrayList;
5313
a1cb9a734cc5 Cleaned up imports.#
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5312
diff changeset
21 import java.util.Arrays;
5281
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
22 import java.util.List;
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
23
cf7e0d9022fa Removed bogus imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5181
diff changeset
24 import org.apache.log4j.Logger;
5313
a1cb9a734cc5 Cleaned up imports.#
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5312
diff changeset
25 import org.apache.velocity.Template;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
26 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
27 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
28 import org.dive4elements.artifacts.CallContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
29 import org.dive4elements.artifacts.CallMeta;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
30 import org.dive4elements.artifacts.GlobalContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
31 import org.dive4elements.artifacts.common.utils.FileTools;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
32 import org.dive4elements.river.artifacts.D4EArtifact;
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
33 import org.dive4elements.river.artifacts.StaticWKmsArtifact;
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
34 import org.dive4elements.river.artifacts.access.DGMAccess;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
35 import org.dive4elements.river.artifacts.access.RangeAccess;
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
36 import org.dive4elements.river.artifacts.context.RiverContext;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
37 import org.dive4elements.river.artifacts.model.CalculationMessage;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
38 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
39 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
40 import org.dive4elements.river.artifacts.model.LayerInfo;
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
41 import org.dive4elements.river.artifacts.model.WKms;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
42 import org.dive4elements.river.artifacts.model.WQKms;
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
43 import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
44 import org.dive4elements.river.artifacts.model.map.HWS;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
45 import org.dive4elements.river.artifacts.model.map.HWSContainer;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
46 import org.dive4elements.river.artifacts.model.map.HWSFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
47 import org.dive4elements.river.artifacts.model.map.WMSLayerFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
48 import org.dive4elements.river.artifacts.model.map.WSPLGENCalculation;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
49 import org.dive4elements.river.artifacts.model.map.WSPLGENJob;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
50 import org.dive4elements.river.artifacts.model.map.WSPLGENReportFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
51 import org.dive4elements.river.artifacts.resources.Resources;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
52 import org.dive4elements.river.exports.WstWriter;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
53 import org.dive4elements.river.model.CrossSectionTrack;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
54 import org.dive4elements.river.model.DGM;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
55 import org.dive4elements.river.model.Floodplain;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
56 import org.dive4elements.river.model.RiverAxis;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
57 import org.dive4elements.river.utils.ArtifactMapfileGenerator;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
58 import org.dive4elements.river.utils.GeometryUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
59 import org.dive4elements.river.utils.MapfileGenerator;
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
60 import org.dive4elements.river.utils.RiverUtils;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
61 import org.dive4elements.river.wsplgen.FacetCreator;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
62 import org.dive4elements.river.wsplgen.JobObserver;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5580
diff changeset
63 import org.dive4elements.river.wsplgen.Scheduler;
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
64 import org.geotools.feature.FeatureCollection;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
65 import org.geotools.feature.FeatureCollections;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
66 import org.geotools.feature.simple.SimpleFeatureBuilder;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
67 import org.hibernate.HibernateException;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
68 import org.opengis.feature.simple.SimpleFeature;
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
69 import org.opengis.feature.simple.SimpleFeatureType;
927
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 public class FloodMapState
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 extends DefaultState
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 implements FacetTypes
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 {
1160
efe1b8545f5c Cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1149
diff changeset
75 /** The logger that is used in this state. */
927
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 private static Logger logger = Logger.getLogger(FloodMapState.class);
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
935
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
78
1107
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
79 public static final String KEEP_ARTIFACT_DIR =
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
80 System.getProperty("flys.uesk.keep.artifactsdir", "false");
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
81
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
82
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
83 public static final String OUTPUT_NAME = "floodmap";
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
84
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
85 public static final String WSP_ARTIFACT = "wsp";
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
86
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
87 public static final String WINFO_WSP_STATE_ID = "state.winfo.waterlevel";
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
88
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
89 public static final String WSPLGEN_PARAMETER_FILE = "wsplgen.par";
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
90 public static final String WSPLGEN_BARRIERS_LINES = "barrier_lines.shp";
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
91 public static final String WSPLGEN_BARRIERS_POLY = "barrier_polygons.shp";
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
92 public static final String WSPLGEN_AXIS = "axis.shp";
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
93 public static final String WSPLGEN_QPS = "qps.shp";
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
94 public static final String WSPLGEN_FLOODPLAIN = "talaue.shp";
1120
fb3947027e92 Renamed WSPLGEN required waterlevels file to 'waterlevel.wst'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
95 public static final String WSPLGEN_WSP_FILE = "waterlevel.wst";
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
96 public static final String WSPLGEN_OUTPUT_FILE = "wsplgen.shp";
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
97 public static final String WSPLGEN_USER_RGD_SHAPE = "user-rgd.shp";
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
98 public static final String WSPLGEN_USER_RGD_ZIP = "user-rgd.zip";
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
99 public static final String WSPLGEN_USER_RGD = "user-rgd";
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
100
3070
6875120af2a2 Fetch only 'qps' cross section tracks for WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2639
diff changeset
101 public static final String WSPLGEN_QPS_NAME = "qps";
6875120af2a2 Fetch only 'qps' cross section tracks for WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2639
diff changeset
102
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
103 public static final int WSPLGEN_DEFAULT_OUTPUT = 0;
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
104
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
105 private static final String HWS_LINES_SHAPE = "hws-lines.shp";
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
106
5580
fa5868a52f14 Change HWS Strings in the floodmap for current calculations
Andre Heinecke <aheinecke@intevation.de>
parents: 5349
diff changeset
107 private static final String I18N_HWS_POINTS_OFFICIAL = "floodmap.hws.points.official";
fa5868a52f14 Change HWS Strings in the floodmap for current calculations
Andre Heinecke <aheinecke@intevation.de>
parents: 5349
diff changeset
108 private static final String I18N_HWS_LINES_OFFICIAL = "floodmap.hws.lines.official";
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
109 private static final String HWS_LINES = "hws-lines";
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
110 private static final String HWS_POINT_SHAPE = "hws-points.shp";
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
111 private static final String HWS_POINTS = "hws-points";
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
112
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
113 /**
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
114 * @param orig
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
115 * @param owner
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
116 * @param context
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
117 * @param callMeta
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
118 */
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
119 @Override
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
120 public void initialize(
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
121 Artifact orig,
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
122 Artifact owner,
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
123 Object context,
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
124 CallMeta callMeta
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
125 ) {
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
126 logger.info("Initialize State with Artifact: " + orig.identifier());
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
127
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
128 copyShapeDir(orig, owner);
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
129 modifyFacets(orig, owner, context, callMeta);
4864
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
130
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
131 ArtifactMapfileGenerator amfg = new ArtifactMapfileGenerator();
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
132 try {
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
133 amfg.generate();
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
134 }
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
135 catch (IOException e) {
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
136 logger.error(e.getMessage(), e);
dc0d37715e16 Floodmap uses the static River-WMS instead of User-WMS via RiverAxisArtifact.
Christian Lins <christian.lins@intevation.de>
parents: 4854
diff changeset
137 }
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
138 }
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
139
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
140
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
141 protected void copyShapeDir(Artifact orig, Artifact owner) {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
142 File origDir = getDirectory((D4EArtifact) orig);
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
143 File thisDir = getDirectory((D4EArtifact) owner);
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
144
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
145 FileTools.copyDirectory(origDir, thisDir);
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
146 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
147
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
148
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
149 protected void modifyFacets(
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
150 Artifact orig,
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
151 Artifact owner,
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
152 Object context,
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
153 CallMeta callMeta
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
154 ) {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
155 D4EArtifact flys = (D4EArtifact) owner;
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
156 List<Facet> facets = flys.getFacets();
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3302
diff changeset
157 if (facets == null || facets.isEmpty()) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
158 logger.warn("No facets for '" + OUTPUT_NAME + "' given!");
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
159 return;
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
160 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
161
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
162 for (Facet facet: facets) {
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
163 if (facet instanceof WMSLayerFacet) {
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
164 WMSLayerFacet wms = (WMSLayerFacet) facet;
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
165
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
166 List<String> layers = wms.getLayers();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
167
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
168 for (String layer: layers) {
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
169 if (layer.startsWith(MapfileGenerator.MS_WSPLGEN_PREFIX)) {
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
170 wms.removeLayer(layer);
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
171
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
172 String newLayer = MapfileGenerator.MS_WSPLGEN_PREFIX +
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
173 owner.identifier();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
174
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
175 wms.addLayer(newLayer);
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
176
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
177 logger.debug(
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
178 "Replaced layer: " + layer + " with " + newLayer);
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
179 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
180 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
181 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
182 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
183 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
184
1053
bfc2ed20b87c Prepared the FloodMapState to save geometries.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 935
diff changeset
185
bfc2ed20b87c Prepared the FloodMapState to save geometries.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 935
diff changeset
186 @Override
935
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
187 public Object computeAdvance(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
188 D4EArtifact artifact,
935
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
189 String hash,
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
190 CallContext context,
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
191 List<Facet> facets,
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
192 Object old
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
193 ) {
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
194 logger.debug("FloodMapState.computeAdvance");
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
195
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
196 File artifactDir = getDirectory(artifact);
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
197
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
198 if (artifactDir == null) {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
199 logger.error("Could not create directory for WSPLGEN results!");
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
200 return null;
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
201 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
202
1149
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
203 WSPLGENCalculation calculation = new WSPLGENCalculation();
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
204
1638
f45bbc80bd3d Bugfix: #296 Set i18n titles for WSPLGEN and barriers WMS layers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1186
diff changeset
205 FacetCreator facetCreator = new FacetCreator(
1650
aaf8d32f85bd Improved Facet creation for floodmaps - WSPLGEN and barriers Facets are only created if the calculation was successful.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1649
diff changeset
206 artifact, context, hash, getID(), facets);
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
207
1149
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
208 WSPLGENJob job = prepareWSPLGENJob(
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
209 artifact,
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
210 facetCreator,
1149
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
211 artifactDir,
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
212 context,
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
213 calculation);
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
214
1168
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
215 CalculationResult res = new CalculationResult(null, calculation);
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
216 WSPLGENReportFacet report= new WSPLGENReportFacet(
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
217 ComputeType.ADVANCE, hash, getID(), res);
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
218
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
219 facets.add(report);
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
220
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
221 if (job == null) {
1107
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
222 if (KEEP_ARTIFACT_DIR.equals("false")) {
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
223 removeDirectory(artifact);
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
224 }
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
225
1168
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
226 calculation.addError(-1, Resources.getMsg(
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
227 context.getMeta(),
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
228 "wsplgen.job.error",
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
229 "wsplgen.job.error"));
ace192d3283d Add an error message to the calculation report if an error occured while WSPLGENJob creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1165
diff changeset
230
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
231 logger.error("No WSPLGEN processing has been started!");
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
232
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
233 return null;
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
234 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
235
1128
727c53fd0dc7 Some bugfixes when starting/finishing WSPLGEN jobs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1127
diff changeset
236 context.afterCall(CallContext.BACKGROUND);
1165
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
237 context.addBackgroundMessage(new CalculationMessage(
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
238 JobObserver.STEPS.length,
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
239 0,
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
240 Resources.getMsg(
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
241 context.getMeta(),
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
242 "wsplgen.job.queued",
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
243 "wsplgen.job.queued")
3b034bb5fce7 Add status message for queued WSPLGEN jobs to notify users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
244 ));
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
245
1970
368040e5c400 Improved the Scheduler to be able to cancel running WSPLGEN jobs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1955
diff changeset
246 GlobalContext gc = (GlobalContext) context.globalContext();
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
247 Scheduler scheduler = (Scheduler) gc.get(RiverContext.SCHEDULER);
1649
74142aa5d938 Improved WSPLGEN start to suppress inconsistent Artifact states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
248 scheduler.addJob(job);
74142aa5d938 Improved WSPLGEN start to suppress inconsistent Artifact states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
249
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
250 return null;
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
251 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
252
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
253
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
254 /**
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
255 * Returns (and creates if not existing) the directory for storing WSPLEN
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
256 * data for the owner artifact.
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
257 *
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
258 * @param artifact The owner Artifact.
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
259 *
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
260 * @return the directory for WSPLEN data.
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
261 */
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
262 protected File getDirectory(D4EArtifact artifact) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
263 String shapePath = RiverUtils.getXPathString(
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
264 RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
265
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
266 File artifactDir = FileTools.getDirectory(
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
267 shapePath, artifact.identifier());
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
268
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
269 return artifactDir;
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
270 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
271
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
272
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
273 /**
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
274 * Removes the directory and all its content where the required data and the
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
275 * results of WSPLGEN are stored. Should be called in endOfLife().
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
276 */
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
277 protected void removeDirectory(D4EArtifact artifact) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
278 String shapePath = RiverUtils.getXPathString(
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
279 RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
1129
da3c3e286c88 Introduced a MapfileGenerator that creates Mapserver specific mapfiles based on WSPLGEN results read from filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1128
diff changeset
280
da3c3e286c88 Introduced a MapfileGenerator that creates Mapserver specific mapfiles based on WSPLGEN results read from filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1128
diff changeset
281 File artifactDir = new File(shapePath, artifact.identifier());
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
282
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
283 if (artifactDir.exists()) {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
284 logger.info("Delete directory: " + artifactDir.getAbsolutePath());
4656
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4654
diff changeset
285 if (!FileTools.deleteRecursive(artifactDir)) {
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4654
diff changeset
286 logger.warn("Could not delete directory: "
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4654
diff changeset
287 + artifactDir.getAbsolutePath());
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4654
diff changeset
288 }
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
289 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
290 else {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
291 logger.debug("There is no directory to remove.");
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
292 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
293 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
294
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
295
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
296 @Override
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
297 public void endOfLife(Artifact artifact, Object callContext) {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
298 logger.info("FloodMapState.endOfLife: " + artifact.identifier());
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
299
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
300 D4EArtifact flys = (D4EArtifact) artifact;
1782
93fe7debd687 Re-create FLYS mapfile when FloodMapState.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1707
diff changeset
301
1970
368040e5c400 Improved the Scheduler to be able to cancel running WSPLGEN jobs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1955
diff changeset
302 Scheduler scheduler = Scheduler.getInstance();
368040e5c400 Improved the Scheduler to be able to cancel running WSPLGEN jobs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1955
diff changeset
303 scheduler.cancelJob(flys.identifier());
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
304 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
305
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
306
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
307 protected WSPLGENJob prepareWSPLGENJob(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
308 D4EArtifact artifact,
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
309 FacetCreator facetCreator,
1149
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
310 File artifactDir,
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
311 CallContext context,
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
312 WSPLGENCalculation calculation
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
313 ) {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
314 logger.debug("FloodMapState.prepareWSPLGENJob");
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
315 String scenario = artifact.getDataAsString("scenario");
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
316
1149
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
317 WSPLGENJob job = new WSPLGENJob(
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
318 artifact,
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
319 artifactDir,
1650
aaf8d32f85bd Improved Facet creation for floodmaps - WSPLGEN and barriers Facets are only created if the calculation was successful.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1649
diff changeset
320 facetCreator,
1149
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
321 context,
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
322 calculation);
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
323
64b465699a24 Added an Output target for WSPLGEN reports that will be available when an WSPLGEN calculation is finished.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1144
diff changeset
324 File paraFile = new File(artifactDir, WSPLGEN_PARAMETER_FILE);
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
325
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
326 setOut(artifact, job);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
327 setRange(artifact, job);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
328 setDelta(artifact, job);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
329 setGel(artifact, job);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
330 setDist(artifact, job);
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
331 setAxis(artifact, artifactDir, job);
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
332 setPro(artifact, artifactDir, job);
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
333 setDgm(artifact, job, context);
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
334 setArea(artifact, artifactDir, job);
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
335 setOutFile(artifact, job);
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
336 setWsp(artifact, context, artifactDir, job); // WSP
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
337 if (scenario.equals("scenario.current")) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
338 setOfficialHWS(artifact, facetCreator, artifactDir, job);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
339 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
340 else if (scenario.equals("scenario.scenario")) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
341 setAdditionalHWS(artifact, facetCreator, artifactDir, job);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
342 setLine(artifact, facetCreator, artifactDir, job);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
343 setUserShape(artifact, facetCreator, artifactDir, job);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
344 }
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
345 // TODO
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
346 // setWspTag(artifact, job);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
347
5913
37a0f4f7c54f Added output mode and generator to config and create facet for export.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
348 facetCreator.createExportFacet("zip");
1091
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
349 try {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
350 job.toFile(paraFile);
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
351
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
352 return job;
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
353 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
354 catch (IOException ioe) {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
355 logger.warn("Cannot write PAR file: " + ioe.getMessage());
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
356 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
357 catch (IllegalArgumentException iae) {
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
358 logger.warn("Cannot write PAR file: " + iae.getMessage());
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
359 }
7230e087ef8b Prepare directories for WSPLGEN specific data in FloodMap state and remove those directories when State.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1064
diff changeset
360
935
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
361 return null;
353ddfa231a7 Introduced a new output 'floodmap' for the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 927
diff changeset
362 }
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
363
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
364
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
365 private void setAdditionalHWS(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
366 D4EArtifact artifact,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
367 FacetCreator facetCreator,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
368 File dir,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
369 WSPLGENJob job) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
370 File line = new File(dir, HWS_LINES_SHAPE);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
371 boolean lines = line.exists();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
372 logger.debug("shp file exists: " + lines);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
373 if (lines) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
374 job.addLin(dir + "/" + HWS_LINES_SHAPE);
5580
fa5868a52f14 Change HWS Strings in the floodmap for current calculations
Andre Heinecke <aheinecke@intevation.de>
parents: 5349
diff changeset
375 facetCreator.createShapeFacet(I18N_HWS_LINES_OFFICIAL,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
376 MapfileGenerator.MS_LAYER_PREFIX + HWS_LINES,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
377 FLOODMAP_LINES, 2);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
378 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
379 File point = new File(dir, HWS_POINT_SHAPE);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
380 boolean points = point.exists();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
381 logger.debug("shp file exists: " + points);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
382 if (points) {
5580
fa5868a52f14 Change HWS Strings in the floodmap for current calculations
Andre Heinecke <aheinecke@intevation.de>
parents: 5349
diff changeset
383 facetCreator.createShapeFacet(I18N_HWS_POINTS_OFFICIAL,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
384 MapfileGenerator.MS_LAYER_PREFIX + HWS_POINTS,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
385 FLOODMAP_FIXPOINTS, 3);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
386 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
387 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
388
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
389
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
390 private void setOfficialHWS(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
391 D4EArtifact artifact,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
392 FacetCreator facetCreator,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
393 File artifactDir,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
394 WSPLGENJob job) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
395 String river = artifact.getDataAsString("river");
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
396
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
397 HWSContainer hwsLines = HWSFactory.getHWSLines(river);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
398 List<HWS> selectedLines = hwsLines.getOfficialHWS();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
399
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
400 FeatureCollection collectionLines = FeatureCollections.newCollection();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
401 SimpleFeatureType lineType = null;
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
402 for (HWS h : selectedLines) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
403 lineType = h.getFeatureType();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
404 collectionLines.add(h.getFeature());
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
405 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
406 boolean successLines = false;
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
407 if (lineType != null && collectionLines.size() > 0) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
408 File shapeLines = new File(artifactDir, HWS_LINES_SHAPE);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
409 successLines = GeometryUtils.writeShapefile(
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
410 shapeLines, lineType, collectionLines);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
411 }
7646
f603a53e45dc issue1020: Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7569
diff changeset
412 if (successLines) {
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
413 createMapfile(
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
414 artifact,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
415 artifactDir,
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
416 MapfileGenerator.MS_LAYER_PREFIX + HWS_LINES,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
417 HWS_LINES_SHAPE,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
418 "LINE",
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
419 "31467", // XXX: This should be dynamically fetched from database.
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
420 "hws");
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
421 job.addLin(artifactDir + "/" + HWS_LINES_SHAPE);
5580
fa5868a52f14 Change HWS Strings in the floodmap for current calculations
Andre Heinecke <aheinecke@intevation.de>
parents: 5349
diff changeset
422 facetCreator.createShapeFacet(I18N_HWS_LINES_OFFICIAL,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
423 MapfileGenerator.MS_LAYER_PREFIX + HWS_LINES,
5349
d43ef9f709cd Add HWSLines and HWSPoints to datacage for the map
Andre Heinecke <aheinecke@intevation.de>
parents: 5313
diff changeset
424 FLOODMAP_HWS_LINES,2);
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
425 }
7646
f603a53e45dc issue1020: Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7569
diff changeset
426 else logger.warn("no lines written");
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
427 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
428
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
429
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
430 public static void createMapfile(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
431 D4EArtifact artifact,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
432 File artifactDir,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
433 String name,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
434 String hwsShapefile,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
435 String type,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
436 String srid,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
437 String group
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
438 ) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
439 LayerInfo info = new LayerInfo();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
440 info.setName(name + artifact.identifier());
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
441 info.setType(type);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
442 info.setDirectory(artifact.identifier());
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
443 info.setTitle(name);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
444 info.setData(hwsShapefile);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
445 info.setSrid(srid);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
446 info.setGroupTitle(group);
6330
36dc11244ec3 Group barriers layer and fix polygon layer path to shapefile
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
447 info.setGroup(group + artifact.identifier());
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
448 MapfileGenerator generator = new ArtifactMapfileGenerator();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
449 Template tpl = generator.getTemplateByName(MapfileGenerator.SHP_LAYER_TEMPLATE);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
450 try {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
451 File layer = new File(artifactDir.getCanonicalPath() + "/" + name);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
452 generator.writeLayer(info, layer, tpl);
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
453 List<String> layers = new ArrayList<String>();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
454 layers.add(layer.getAbsolutePath());
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
455 generator.generate();
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
456 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
457 catch(FileNotFoundException fnfe) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
458 logger.warn("Could not find mapfile for hws layer");
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
459 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
460 catch (Exception ioe) {
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
461 logger.warn("Could not create mapfile for hws layer");
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
462 logger.warn(Arrays.toString(ioe.getStackTrace()));
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
463 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
464 }
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
465
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
466
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
467 protected void setOut(D4EArtifact artifact, WSPLGENJob job) {
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
468 job.setOut(WSPLGEN_DEFAULT_OUTPUT);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
469 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
470
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
471
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
472 protected void setRange(D4EArtifact artifact, WSPLGENJob job) {
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
473 RangeAccess rangeAccess = new RangeAccess(artifact);
4854
c53b3fdc9821 FloodMapState: Updated to use RangeAccess instead of FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4656
diff changeset
474 double[] range = rangeAccess.getKmRange();
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
475
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
476 job.setStart(range[0]);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
477 job.setEnd(range[1]);
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
478 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
479
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
480
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
481 protected void setDelta(D4EArtifact artifact, WSPLGENJob job) {
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
482 String from = artifact.getDataAsString("diff_from");
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
483 String to = artifact.getDataAsString("diff_to");
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
484 String diff = artifact.getDataAsString("diff_diff");
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
485
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
486 try {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
487 job.setFrom(Double.parseDouble(from));
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
488 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
489 catch (NumberFormatException nfe) {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
490 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
491
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
492 try {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
493 job.setTo(Double.parseDouble(to));
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
494 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
495 catch (NumberFormatException nfe) {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
496 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
497
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
498 try {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
499 job.setDiff(Double.parseDouble(diff));
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
500 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
501 catch (NumberFormatException nfe) {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
502 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
503 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
504
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
505
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
506 protected void setGel(D4EArtifact artifact, WSPLGENJob job) {
1955
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
507 String gel = artifact.getDataAsString("scenario");
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
508
1955
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
509 logger.debug("Selected gel = '" + gel + "'");
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
510
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
511 if (gel == null || gel.length() == 0) {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
512 job.setGel(WSPLGENJob.GEL_NOSPERRE);
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
513 }
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
514 else if (gel.equals("scenario.current")) {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
515 job.setGel(WSPLGENJob.GEL_SPERRE);
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
516 }
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
517 else if (gel.equals("scenario.scenario")) {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
518 job.setGel(WSPLGENJob.GEL_SPERRE);
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
519 }
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
520 else {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
521 job.setGel(WSPLGENJob.GEL_NOSPERRE);
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
522 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
523 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
524
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
525
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
526 protected void setDist(D4EArtifact artifact, WSPLGENJob job) {
1096
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
527 String dist = artifact.getDataAsString("profile_distance");
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
528
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
529 try {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
530 job.setDist(Double.parseDouble(dist));
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
531 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
532 catch (NumberFormatException nfe) {
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
533 // nothing to do here
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
534 }
9f88cc54570c Set some WSPLGENJob parameters which are stored in FLYSArtifact in the Floodmap state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1091
diff changeset
535 }
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
536
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
537
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
538 protected void setLine(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
539 D4EArtifact artifact,
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
540 FacetCreator facetCreator,
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
541 File dir,
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
542 WSPLGENJob job
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
543 ) {
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
544 DGMAccess access = new DGMAccess(artifact);
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
545 String geoJSON = access.getGeoJSON();
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
546
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
547 if (geoJSON == null || geoJSON.length() == 0) {
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
548 logger.debug("No barrier features in parameterization existing.");
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
549 return;
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
550 }
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
551
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
552 String srid = String.valueOf(access.getDGM().getSrid());
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
553
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
554 String srs = "EPSG:" + srid;
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
555
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
556 SimpleFeatureType ft = getBarriersFeatureType(
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
557 "barriers", srs, Geometry.class);
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
558
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
559 List<SimpleFeature> features = GeometryUtils.parseGeoJSON(geoJSON, ft);
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3302
diff changeset
560 if (features == null || features.isEmpty()) {
1107
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
561 logger.debug("No barrier features extracted.");
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
562 return;
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
563 }
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
564
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
565 FeatureCollection[] fcs = splitLinesAndPolygons(features);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
566
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
567 File shapeLines = new File(dir, WSPLGEN_BARRIERS_LINES);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
568 File shapePolys = new File(dir, WSPLGEN_BARRIERS_POLY);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
569
1124
28a595b32980 Set the 'typ' attribute of lines and polygons in barrier shapefiles while shapefile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1123
diff changeset
570 Object[][] obj = new Object[][] {
28a595b32980 Set the 'typ' attribute of lines and polygons in barrier shapefiles while shapefile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1123
diff changeset
571 new Object[] { "typ", String.class }
28a595b32980 Set the 'typ' attribute of lines and polygons in barrier shapefiles while shapefile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1123
diff changeset
572 };
28a595b32980 Set the 'typ' attribute of lines and polygons in barrier shapefiles while shapefile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1123
diff changeset
573
1955
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
574 String scenario = job.getGel();
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
575
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
576 boolean l = GeometryUtils.writeShapefile(
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
577 shapeLines,
1124
28a595b32980 Set the 'typ' attribute of lines and polygons in barrier shapefiles while shapefile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1123
diff changeset
578 GeometryUtils.buildFeatureType("lines", srs, LineString.class, obj),
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
579 fcs[0]);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
580
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
581 if (l) {
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
582 logger.debug(
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
583 "Successfully created barrier line shapefile. " +
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
584 "Write shapefile path into WSPLGEN job.");
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
585 createMapfile(
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
586 artifact,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
587 dir,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
588 MapfileGenerator.MS_LAYER_PREFIX + "barriers-lines",
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
589 WSPLGEN_BARRIERS_LINES,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
590 "LINE",
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
591 srid,
6330
36dc11244ec3 Group barriers layer and fix polygon layer path to shapefile
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
592 MapfileGenerator.MS_BARRIERS_PREFIX);
1955
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
593
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
594 if (scenario.equals(WSPLGENJob.GEL_NOSPERRE)) {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
595 logger.debug("WSPLGEN will not use barrier features.");
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
596 }
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
597 else {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
598 job.addLin(shapeLines.getAbsolutePath());
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
599 }
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
600 }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
601
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
602 boolean p = GeometryUtils.writeShapefile(
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
603 shapePolys,
1124
28a595b32980 Set the 'typ' attribute of lines and polygons in barrier shapefiles while shapefile creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1123
diff changeset
604 GeometryUtils.buildFeatureType("polygons", srs, Polygon.class, obj),
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
605 fcs[1]);
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
606
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
607
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
608 if (p) {
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
609 logger.debug(
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
610 "Successfully created barrier polygon shapefile. " +
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
611 "Write shapefile path into WSPLGEN job.");
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
612 createMapfile(
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
613 artifact,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
614 dir,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
615 MapfileGenerator.MS_LAYER_PREFIX + "barriers-poly",
6330
36dc11244ec3 Group barriers layer and fix polygon layer path to shapefile
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
616 WSPLGEN_BARRIERS_POLY,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
617 "POLYGON",
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
618 srid,
6330
36dc11244ec3 Group barriers layer and fix polygon layer path to shapefile
Andre Heinecke <aheinecke@intevation.de>
parents: 6101
diff changeset
619 MapfileGenerator.MS_BARRIERS_PREFIX);
1955
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
620
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
621 if (scenario.equals(WSPLGENJob.GEL_NOSPERRE)) {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
622 logger.debug("WSPLGEN will not use barrier features.");
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
623 }
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
624 else {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
625 job.addLin(shapePolys.getAbsolutePath());
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
626 }
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
627 }
1164
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
628
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
629 if (p || l) {
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
630 facetCreator.createBarrierFacet();
0398c2b8dbaf Do only create WSPLGEN and barrier facets if the WSPLGEN job has been added to the Scheduler and if there are digitized geometries existing.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1160
diff changeset
631 }
1107
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
632 }
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
633
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
634
2639
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
635 protected void setUserShape(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
636 D4EArtifact artifact,
2639
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
637 FacetCreator facetCreator,
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
638 File dir,
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
639 WSPLGENJob job
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
640 ) {
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
641 File archive = new File(dir, WSPLGEN_USER_RGD_SHAPE);
2639
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
642 boolean exists = archive.exists();
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
643 logger.debug("shp file exists: " + exists);
2639
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
644 if (exists) {
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
645 job.addLin(dir + "/" + WSPLGEN_USER_RGD_SHAPE);
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
646 facetCreator.createShapeFacet(FacetCreator.I18N_USERSHAPE,
6710
ffc9cb39cea7 Remove duplicate code for mapfile generation. ID problem still not fixed (#657).
Christian Lins <christian.lins@intevation.de>
parents: 6330
diff changeset
647 MapfileGenerator.MS_LAYER_PREFIX + WSPLGEN_USER_RGD,
5312
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
648 FLOODMAP_USERSHAPE,
2c1045a1e3fe Added new states and transitions to UESK calculation and adjusted states and UI.
Raimund Renkert <rrenkert@intevation.de>
parents: 5281
diff changeset
649 4);
2639
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
650 }
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
651 }
a78dafdd8590 Issue 657.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2095
diff changeset
652
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
653 protected SimpleFeatureType getBarriersFeatureType(
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
654 String name,
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
655 String srs,
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
656 Class type
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
657 ) {
1707
3bf464ec436f Added a further attribute to the feature type description for barriers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1650
diff changeset
658 Object[][] attrs = new Object[3][];
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
659 attrs[0] = new Object[] { "typ", String.class };
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
660 attrs[1] = new Object[] { "elevation", Double.class };
1707
3bf464ec436f Added a further attribute to the feature type description for barriers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1650
diff changeset
661 attrs[2] = new Object[] { "mark.selected", Integer.class };
1107
005c2964f9af Use the correct SRID while reading GeoJSON barriers and writing line/polygon shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1106
diff changeset
662
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
663 return GeometryUtils.buildFeatureType(name, srs, type, attrs);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
664 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
665
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
666
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
667 protected FeatureCollection[] splitLinesAndPolygons(List<SimpleFeature> f) {
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
668 FeatureCollection lines = FeatureCollections.newCollection();
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
669 FeatureCollection polygons = FeatureCollections.newCollection();
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
670
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
671 for (SimpleFeature feature: f) {
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
672 Geometry geom = (Geometry) feature.getDefaultGeometry();
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
673
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
674
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
675 if (geom instanceof LineString) {
4569
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
676 geom = applyElevationAttribute(feature, geom);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
677 lines.add(feature);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
678 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
679 else if (geom instanceof Polygon) {
4569
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
680 geom = applyElevationAttribute(feature, geom);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
681 polygons.add(feature);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
682 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
683 else {
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
684 logger.warn("Feature not supported: " + geom.getClass());
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
685 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
686 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
687
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
688 logger.debug("Found " + lines.size() + " barrier lines.");
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
689 logger.debug("Found " + polygons.size() + " barrier polygons.");
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
690
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
691 return new FeatureCollection[] { lines, polygons };
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1096
diff changeset
692 }
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
693
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
694
1123
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
695 protected static Geometry applyElevationAttribute(
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
696 SimpleFeature feature,
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
697 Geometry geom
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
698 ) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
699 logger.debug("Apply elevations for: " + geom.getClass());
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
700
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
701 List<Double> elevations = extractElevations(feature);
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
702 int numPoints = geom.getNumPoints();
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
703 int numElevation = elevations.size();
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
704
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
705 String typ = (String) feature.getAttribute("typ");
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
706
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
707 if (numPoints > numElevation) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
708 logger.warn("More vertices in Geometry than elevations given.");
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
709 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
710
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
711 Coordinate[] c = geom.getCoordinates();
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
712 for (int i = 0; i < numPoints; i++) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
713 if (i < numElevation) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
714 c[i].z = elevations.get(i);
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
715 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
716 else if (typ != null && typ.equals("Graben")) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
717 c[i].z = -9999d;
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
718 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
719 else {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
720 c[i].z = 9999d;
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
721 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
722 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
723
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
724 return geom;
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
725 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
726
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
727
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
728 protected static List<Double> extractElevations(SimpleFeature feature) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
729 String tmp = (String) feature.getAttribute("elevation");
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
730 String typ = (String) feature.getAttribute("typ");
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
731
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
732 String[] elevations = tmp == null ? null : tmp.split(" ");
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
733
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
734 int num = elevations != null ? elevations.length : 0;
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
735
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
736 List<Double> list = new ArrayList<Double>(num);
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
737
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
738 for (int i = 0; i < num; i++) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
739 try {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
740 list.add(Double.parseDouble(elevations[i]));
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
741 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
742 catch (NumberFormatException nfe) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
743 logger.warn("Error while parsing elevation at pos: " + i);
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
744 if (typ != null && typ.equals("Graben")) {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
745 list.add(new Double(-9999.0));
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
746 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
747 else {
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
748 list.add(new Double(9999.0));
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
749 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
750 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
751 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
752
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
753 return list;
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
754 }
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
755
be9bb260b835 Set the Z values of line and polygon barrier geometries used for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
756
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
757 protected void setAxis(D4EArtifact artifact, File dir, WSPLGENJob job) {
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
758 DGMAccess access = new DGMAccess(artifact);
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7055
diff changeset
759 String river = access.getRiverName();
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
760 String srid = String.valueOf(access.getDGM().getSrid());
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
761 String srs = "EPSG:" + srid;
5170
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
762
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
763 List<RiverAxis> axes = null;
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
764 try {
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
765 axes = RiverAxis.getRiverAxis(river);
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
766 }
5181
9d36ddf7dbd3 Change IllegalArgumentException to HibernateException.
Raimund Renkert <rrenkert@intevation.de>
parents: 5173
diff changeset
767 catch (HibernateException iae) {
5173
14d19313268a Catch IllegalArgumentException instead of RuntimeException, added logging.
Raimund Renkert <rrenkert@intevation.de>
parents: 5170
diff changeset
768 logger.warn("No valid river axis found for " + river);
5170
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
769 return;
c1b60f8c3390 Made river mapfile generator more tolerant.
Raimund Renkert <rrenkert@intevation.de>
parents: 5152
diff changeset
770 }
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3302
diff changeset
771 if (axes == null || axes.isEmpty()) {
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
772 logger.warn("Could not find river axis for: '" + river + "'");
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
773 return;
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
774 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
775
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
776 SimpleFeatureType ft = GeometryUtils.buildFeatureType(
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
777 "axis", srs, LineString.class);
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
778
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
779 SimpleFeatureBuilder builder = new SimpleFeatureBuilder(ft);
2078
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
780 FeatureCollection collection = FeatureCollections.newCollection();
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
781
2078
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
782 for (int i = 0, n = axes.size(); i < n; i++) {
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
783 RiverAxis axis = axes.get(i);
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
784
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
785 builder.add(axis.getGeom());
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
786 collection.add(builder.buildFeature(String.valueOf(i)));
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
787
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
788 builder.reset();
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1970
diff changeset
789 }
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
790
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
791 File axisShape = new File(dir, WSPLGEN_AXIS);
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
792
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
793 boolean a = GeometryUtils.writeShapefile(
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
794 axisShape,
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
795 GeometryUtils.buildFeatureType("axis", srs, LineString.class),
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
796 collection);
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
797
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
798 if (a) {
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
799 job.setAxis(axisShape.getAbsolutePath());
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
800 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
801 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
802
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
803
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
804 protected void setPro(D4EArtifact artifact, File dir, WSPLGENJob job) {
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
805 DGMAccess access = new DGMAccess(artifact);
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7055
diff changeset
806 String river = access.getRiverName();
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
807 String srid = String.valueOf(access.getDGM().getSrid());
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
808 String srs = "EPSG:" + srid;
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
809
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
810 List<CrossSectionTrack> cst =
3070
6875120af2a2 Fetch only 'qps' cross section tracks for WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2639
diff changeset
811 CrossSectionTrack.getCrossSectionTrack(river, WSPLGEN_QPS_NAME);
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
812
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
813 logger.debug("Found " + cst.size() + " CrossSectionTracks.");
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
814
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
815 Object[][] attrs = new Object[2][];
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
816 attrs[0] = new Object[] { "ELEVATION", Double.class };
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
817 attrs[1] = new Object[] { "KILOMETER", Double.class };
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
818
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
819 SimpleFeatureType ft = GeometryUtils.buildFeatureType(
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
820 "qps", srs, LineString.class, attrs);
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
821
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
822 SimpleFeatureBuilder builder = new SimpleFeatureBuilder(ft);
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
823 FeatureCollection collection = FeatureCollections.newCollection();
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
824
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
825 int i = 0;
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
826 for (CrossSectionTrack track: cst) {
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
827 builder.reset();
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
828 builder.add(track.getGeom());
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
829 builder.add(track.getZ().doubleValue());
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1118
diff changeset
830 builder.add(track.getKm().doubleValue());
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
831
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
832 collection.add(builder.buildFeature(String.valueOf(i++)));
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
833 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
834
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
835 File qpsShape = new File(dir, WSPLGEN_QPS);
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
836
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
837 boolean q = GeometryUtils.writeShapefile(
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
838 qpsShape,
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
839 GeometryUtils.buildFeatureType("qps", srs, LineString.class, attrs),
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
840 collection);
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
841
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
842 if (q) {
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
843 job.setPro(qpsShape.getAbsolutePath());
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
844 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
845 }
1109
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
846
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
847
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
848 protected void setDgm(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
849 D4EArtifact artifact,
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
850 WSPLGENJob job,
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
851 CallContext context
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
852 ) {
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
853 DGMAccess access = new DGMAccess(artifact);
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
854 DGM dgm = access.getDGM();
1109
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
855
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
856 if (dgm == null) {
1186
be8b5c06a1f8 Use DGM Id in FLYSArtifact's data pool to query DGMs for floodmaps instead of querying DGMs by given range values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
857 logger.warn("Could not find specified DGM.");
1109
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
858 return;
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
859 }
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
860
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
861 File dgmPath = new File(dgm.getPath());
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
862 if (dgmPath.isAbsolute()) {
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
863 job.setDgm(dgm.getPath());
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
864 }
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
865 else {
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
866 RiverContext fc = (RiverContext)context.globalContext();
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
867 File prefix = new File((String)fc.get("dgm-path"));
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
868 job.setDgm(new File(prefix, dgm.getPath()).getAbsolutePath());
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 5031
diff changeset
869 }
1109
ba9fa72dd6f5 Write file path of DMGs into the WSPLGEN job while preparing WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
870 }
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
871
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
872
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
873 protected void setArea(D4EArtifact artifact, File dir, WSPLGENJob job) {
1955
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
874 String useFloodplain = artifact.getDataAsString("use_floodplain");
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
875 if (!Boolean.valueOf(useFloodplain)) {
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
876 logger.debug("WSPLGEN will not use floodplain.");
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
877 return;
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
878 }
ccf2235035d6 Various bugfixes in WSPLGEN parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1845
diff changeset
879
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
880 DGMAccess access = new DGMAccess(artifact);
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7055
diff changeset
881 String river = access.getRiverName();
7055
1f38656b68c4 DGM SRIds are now fetched from database instead of configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6983
diff changeset
882 String srid = String.valueOf(access.getDGM().getSrid());
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
883 String srs = "EPSG:" + srid;
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
884
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
885 Floodplain plain = Floodplain.getFloodplain(river);
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
886
6983
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
887 if (plain == null) {
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
888 logger.debug("No flood plain for river '" + river + "'");
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
889 return;
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
890 }
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
891
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
892 Polygon polygon = plain.getGeom();
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
893 if (polygon == null) {
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
894 logger.warn("Floodplain has no geometry.");
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
895 return;
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
896 }
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
897
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
898 SimpleFeatureType ft = GeometryUtils.buildFeatureType(
1845
06c157848c8f Made the floodmap compatible with an Oracle database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1782
diff changeset
899 "talaue", srs, Polygon.class);
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
900
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
901 SimpleFeatureBuilder builder = new SimpleFeatureBuilder(ft);
6983
93e7f947f6fa flys/issue1417 Be more fault tolerant if a river has no flood plain.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6710
diff changeset
902 builder.add(polygon);
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
903
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
904 FeatureCollection collection = FeatureCollections.newCollection();
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
905 collection.add(builder.buildFeature("0"));
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
906
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
907 File talaueShape = new File(dir, WSPLGEN_FLOODPLAIN);
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
908
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
909 boolean t = GeometryUtils.writeShapefile(
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
910 talaueShape,
1845
06c157848c8f Made the floodmap compatible with an Oracle database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1782
diff changeset
911 GeometryUtils.buildFeatureType("talaue", srs, Polygon.class),
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
912 collection);
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
913
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1120
diff changeset
914 if (t) {
1110
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
915 job.setArea(talaueShape.getAbsolutePath());
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
916 }
563e015f0f22 Export floodplain to shapefile and add its file path to WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1109
diff changeset
917 }
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
918
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
919
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
920 protected void setOutFile(D4EArtifact artifact, WSPLGENJob job) {
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
921 job.setOutFile(WSPLGEN_OUTPUT_FILE);
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
922 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
923
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
924
7646
f603a53e45dc issue1020: Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7569
diff changeset
925 /** Gets the Waterlevel of chosen artifact as base for flooding. */
f603a53e45dc issue1020: Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7569
diff changeset
926 // Challenge equals WaterlevelSelectState#getLabel
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
927 protected WQKms getWQKms(D4EArtifact flys, CallContext cc) {
7646
f603a53e45dc issue1020: Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7569
diff changeset
928 String wspString = flys.getDataAsString(WSP_ARTIFACT);
4569
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
929 if (wspString == null) {
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
930 logger.debug("getWQKms(): wspString == null");
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
931 return null;
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
932 }
276d9bd3c77d Workaround for NPE in FloodMapState.
Christian Lins <christian.lins@intevation.de>
parents: 3555
diff changeset
933 String[] parts = wspString.split(";");
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
934 String otherArtifact = parts[0];
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
935
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
936 int idx = -1;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
937 try {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
938 idx = Integer.parseInt(parts[2]);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
939 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
940 catch (NumberFormatException nfe) { /* do nothing */ }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
941
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
942 D4EArtifact src = otherArtifact != null
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
943 ? RiverUtils.getArtifact(otherArtifact, cc)
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
944 : flys;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
945
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
946 logger.debug("Use waterlevel provided by Artifact: " + src.identifier());
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
947
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
948 // The state actually depends on the kind of artifact. E.g. StaticWQKmsArtifact needs other state
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
949 Object computed = src.compute(
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
950 cc,
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
951 //null,
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
952 //WINFO_WSP_STATE_ID,
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
953 ComputeType.ADVANCE,
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
954 false);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
955
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
956 // Depending on the artifact and calculation we have different results
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
957 // in place. Note that the same conditions exist in
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
958 // WaterlevelSelectState#getLabel .
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
959
7647
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
960 // Regular WSP calculation
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
961 if (computed instanceof CalculationResult) {
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
962 CalculationResult rawData = (CalculationResult) computed;
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
963 WQKms[] wqkms;
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
964 if (rawData.getData() instanceof FixRealizingResult) {
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
965 wqkms = (WQKms[]) ((FixRealizingResult) rawData.getData()).getWQKms();
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
966 }
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
967 else {
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
968 wqkms = (WQKms[]) rawData.getData();
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
969 }
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
970 return wqkms == null || idx == -1 || idx >= wqkms.length
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
971 ? null
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
972 : wqkms[idx];
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
973 }
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
974 else if (computed instanceof WQKms) {
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
975 // e.g. Fixations
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
976 WQKms wqkms = (WQKms) computed;
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
977 return (WQKms) computed;
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
978 }
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
979 else if (computed == null && src instanceof StaticWKmsArtifact) {
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
980 // Floodmarks and protection.
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
981 WQKms wqkms = WQKms.fromWKms(((StaticWKmsArtifact) src).getWKms(0), 1d);
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
982 return wqkms;
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
983 }
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
984
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
985 logger.warn("getWQKms cannot handle " + computed.getClass() + " " + src.getClass());
786ff139de5e issue1020: When preparing wsts for wsplgen handle other than standard wqkms calculations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7646
diff changeset
986 return null;
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
987 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
988
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
989
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
990 protected void setWsp(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
991 D4EArtifact artifact,
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
992 CallContext context,
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
993 File dir,
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
994 WSPLGENJob job)
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
995 {
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
996 logger.debug("FloodMapState.setWsp");
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
997
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
998 WQKms data = getWQKms(artifact, context);
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
999
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1000 if (data == null) {
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1001 logger.warn("No WST data found!");
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1002 return;
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1003 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1004
7659
2e1392067986 issue1020: Do not write Q-Lines with wstwriter from floodmapstate.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7647
diff changeset
1005 WstWriter writer = new WstWriter(0, true);
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1006
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1007 // TODO REMOVE job.setWspTag(...) This is only used until the user is
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1008 // able to select the WSP column himself!
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1009 boolean writeWspTag = true;
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1010
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1011 double[] buf = new double[4];
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1012 logger.debug("Add WST column: " + data.getName());
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1013 writer.addColumn(data.getName());
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1014
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1015 if (writeWspTag) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1016 job.setWspTag(data.getName());
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1017 writeWspTag = false;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1018 }
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1019
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1020 for (int i = 0, num = data.size(); i < num; i++) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1021 data.get(i, buf);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1168
diff changeset
1022 writer.add(buf);
1118
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1023 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1024
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1025 FileOutputStream fout = null;
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1026
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1027 try {
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1028 File wspFile = new File(dir, WSPLGEN_WSP_FILE);
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1029 fout = new FileOutputStream(wspFile);
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1030
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1031 writer.write(fout);
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1032
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1033 job.setWsp(wspFile.getAbsolutePath());
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1034 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1035 catch (FileNotFoundException fnfe) {
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1036 logger.warn("Error while writing wsp file: " + fnfe.getMessage());
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1037 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1038 finally {
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1039 if (fout != null) {
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1040 try {
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1041 fout.close();
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1042 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1043 catch (IOException ioe) { /* do nothing */ }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1044 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1045 }
7398280b11a0 Write WSP file for WSPLGEN and add its filepath to the WSPLGEN job.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1110
diff changeset
1046 }
927
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1047 }
53a2be494765 Enhanced the transition model to continue the parameterization in the waterlevel state to compute flood maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1048 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org