annotate flys-artifacts/src/main/java/de/intevation/flys/utils/GeometryUtils.java @ 4269:0c766c475805

Add Panel and Tree UI classes for dispayling the measurement station info The new ui classes are using the new extracted base class InfoPanel and InfoTree which are in common with the gauge info.
author Björn Ricks <bjoern.ricks@intevation.de>
date Fri, 26 Oct 2012 12:22:06 +0200
parents 1b41dc00b1f7
children c1b60f8c3390
rev   line source
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.utils;
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
3286
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
3 import com.vividsolutions.jts.geom.Coordinate;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
4 import com.vividsolutions.jts.geom.Envelope;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
5 import com.vividsolutions.jts.geom.Geometry;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
6
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
7 import de.intevation.flys.model.RiverAxis;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
8
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
9 import java.io.File;
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
10 import java.io.IOException;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
11 import java.io.Serializable;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
12 import java.net.MalformedURLException;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
13 import java.util.ArrayList;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
14 import java.util.HashMap;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
15 import java.util.List;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
16 import java.util.Map;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
17
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
18 import org.apache.log4j.Logger;
3286
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
19 import org.geotools.data.DataStoreFactorySpi;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
20 import org.geotools.data.DefaultTransaction;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
21 import org.geotools.data.FeatureWriter;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
22 import org.geotools.data.Transaction;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
23 import org.geotools.data.shapefile.ShapefileDataStore;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
24 import org.geotools.data.shapefile.ShapefileDataStoreFactory;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
25 import org.geotools.data.simple.SimpleFeatureIterator;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
26 import org.geotools.feature.FeatureCollection;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
27 import org.geotools.feature.FeatureIterator;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
28 import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
29 import org.geotools.geojson.feature.FeatureJSON;
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
30 import org.geotools.geometry.jts.JTS;
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
31 import org.geotools.geometry.jts.ReferencedEnvelope;
3286
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
32 import org.geotools.referencing.CRS;
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
33 import org.opengis.feature.simple.SimpleFeature;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
34 import org.opengis.feature.simple.SimpleFeatureType;
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
35 import org.opengis.referencing.FactoryException;
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
36 import org.opengis.referencing.NoSuchAuthorityCodeException;
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
37 import org.opengis.referencing.crs.CoordinateReferenceSystem;
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
38 import org.opengis.referencing.operation.MathTransform;
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
39 import org.opengis.referencing.operation.TransformException;
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
40
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 public class GeometryUtils {
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
43 private static final Logger logger = Logger.getLogger(GeometryUtils.class);
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
44
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
45 public static final String PREFIX_EPSG = "EPSG:";
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
46
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
47 public static final String DEFAULT_EPSG = "EPSG:31467";
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
48
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 private GeometryUtils() {
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 }
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
1774
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
52 public static Envelope getRiverBoundary(String rivername) {
2078
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
53 List<RiverAxis> axes = RiverAxis.getRiverAxis(rivername);
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
54 if (axes != null && axes.size() > 0) {
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
55 Envelope max = null;
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
56
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
57 for (RiverAxis axis: axes) {
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
58 // TODO Take the correct EPSG into account. Maybe, we need to
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
59 // reproject the geometry.
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
60 Envelope env = axis.getGeom().getEnvelopeInternal();
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
61
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
62 if (max == null) {
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
63 max = env;
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
64 }
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
65 else {
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
66 max.expandToInclude(env);
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
67 }
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
68 }
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
69
cbeeaaad1056 #440 Support river axes that consist of more than a single geometry.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1774
diff changeset
70 return max;
1774
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
71 }
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
72
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
73 return null;
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
74 }
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
75
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
76 public static String getRiverBounds(String rivername) {
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
77 Envelope env = getRiverBoundary(rivername);
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
78
3303
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
79 if (env != null) {
1774
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
80 return jtsBoundsToOLBounds(env);
1144
c07e9e9c7482 Set the river extent for WMSLayers in the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
81 }
c07e9e9c7482 Set the river extent for WMSLayers in the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
82
c07e9e9c7482 Set the river extent for WMSLayers in the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
83 return null;
c07e9e9c7482 Set the river extent for WMSLayers in the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
84 }
c07e9e9c7482 Set the river extent for WMSLayers in the FloodMapState.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1121
diff changeset
85
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 /**
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
87 * Returns the boundary of Envelope <i>env</i> in OpenLayers representation.
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 *
1774
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
89 * @param env The envelope of a geometry.
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 *
1774
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
91 * @return the OpenLayers boundary of <i>env</i>.
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 */
1774
092e1e5020bc Added a new MapGenerator which only returns a map configuration document at the moment (work still in progress).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1641
diff changeset
93 public static String jtsBoundsToOLBounds(Envelope env) {
3303
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
94 StringBuilder buf = new StringBuilder();
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
95 buf.append(env.getMinX()); buf.append(' ');
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
96 buf.append(env.getMinY()); buf.append(' ');
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
97 buf.append(env.getMaxX()); buf.append(' ');
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
98 buf.append(env.getMaxY());
96daa8a4c48f Fix and workaround NullPointerExceptions
Christian Lins <christian.lins@intevation.de>
parents: 3301
diff changeset
99 return buf.toString();
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 }
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
101
1641
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
102 public static String createOLBounds(Geometry a, Geometry b) {
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
103 Coordinate[] ca = a.getCoordinates();
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
104 Coordinate[] cb = b.getCoordinates();
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
105
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
106 double lowerX = Double.MAX_VALUE;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
107 double lowerY = Double.MAX_VALUE;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
108 double upperX = -Double.MAX_VALUE;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
109 double upperY = -Double.MAX_VALUE;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
110
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
111 for (Coordinate c: ca) {
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
112 lowerX = lowerX < c.x ? lowerX : c.x;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
113 lowerY = lowerY < c.y ? lowerY : c.y;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
114
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
115 upperX = upperX > c.x ? upperX : c.x;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
116 upperY = upperY > c.y ? upperY : c.y;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
117 }
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
118
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
119 for (Coordinate c: cb) {
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
120 lowerX = lowerX < c.x ? lowerX : c.x;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
121 lowerY = lowerY < c.y ? lowerY : c.y;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
122
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
123 upperX = upperX > c.x ? upperX : c.x;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
124 upperY = upperY > c.y ? upperY : c.y;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
125 }
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
126
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
127 return "" + lowerX + " " + lowerY + " " + upperX + " " + upperY;
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
128 }
eb3ab28d1c21 The extent of the WSPLGEN facets are now determined by the extent of the start and end CrossSectionTrack of the WSPLGEN calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1164
diff changeset
129
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
130 public static SimpleFeatureType buildFeatureType(
3286
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
131 String name, String srs, Class<?> geometryType)
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
132 {
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
133 return buildFeatureType(name, srs, geometryType, null);
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
134 }
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
135
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
136 /**
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
137 * Creates a new SimpleFeatureType using a SimpleFeatureTypeBuilder.
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
138 *
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
139 * @param name The name of the FeatureType.
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
140 * @param srs The SRS (e.g. "EPSG:31466").
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
141 * @param geometryType The geometry type's class (e.g. Polygon.class).
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
142 * @param attrs Optional. An object with attribute-name/attribute-class pairs
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
143 * where index 0 specifies the name as string and index 1 the
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
144 * ype as class.
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
145 *
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
146 * @return a new SimpleFeatureType.
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
147 */
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
148 public static SimpleFeatureType buildFeatureType(String name, String srs,
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
149 Class<?> geometryType, Object[][] attrs) {
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
150 try {
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
151 SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
152 CoordinateReferenceSystem crs = CRS.decode(srs);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
153
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
154 builder.setName("flys");
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
155 builder.setNamespaceURI("http://www.intevation.de/");
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
156 builder.setCRS(crs);
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
157 builder.setSRS(srs);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
158
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
159 builder.add("geometry", geometryType, crs);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
160
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
161 if (attrs != null) {
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
162 for (Object[] attr: attrs) {
3286
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 2762
diff changeset
163 builder.add((String) attr[0], (Class<?>) attr[1]);
1119
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
164 }
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
165 }
faca1825818e Write additional attributes ELEVATION and KILOMETER into crosssection track shapefiles.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1108
diff changeset
166
1108
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
167 return builder.buildFeatureType();
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
168 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
169 catch (NoSuchAuthorityCodeException nsae) {
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
170 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
171 catch (FactoryException fe) {
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
172 }
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
173
5b1198c27d43 Export riveraxis and crosssections to shapefiles for WSPLGEN.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1107
diff changeset
174 return null;
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
175 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
176
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
177 public static List<SimpleFeature> parseGeoJSON(
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
178 String geojson, SimpleFeatureType ft
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
179 ) {
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
180 List<SimpleFeature> collection = new ArrayList<SimpleFeature>();
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
181
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
182 try {
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
183 FeatureJSON fjson = new FeatureJSON();
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
184 fjson.setFeatureType(ft);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
185
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
186 FeatureIterator<SimpleFeature> iterator =
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
187 fjson.streamFeatureCollection(geojson);
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
188
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
189 while (iterator.hasNext()) {
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
190 collection.add(iterator.next());
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
191 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
192 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
193 catch (IOException ioe) {
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
194 // TODO handle exception
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
195 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
196
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
197 return collection;
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
198 }
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
199
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
200
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
201 /**
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
202 * This method returns the {@link CoordinateReferenceSystem} by the
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
203 * {@link String} <i>epsg</i>.
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
204 *
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
205 * @param epsg An EPSG code like <b>EPSG:31466</b>
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
206 *
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
207 * @return the {@link CoordinateReferenceSystem} specified by <i>epsg</i>.
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
208 */
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
209 public static CoordinateReferenceSystem getCoordinateReferenceSystem(
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
210 String epsg
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
211 ) {
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
212 if (epsg == null) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
213 logger.warn("cannot create CoordinateReferenceSystem with null");
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
214 return null;
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
215 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
216
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
217 if (!epsg.startsWith(PREFIX_EPSG)) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
218 epsg = PREFIX_EPSG + epsg;
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
219 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
220
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
221 try {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
222 return CRS.decode(epsg);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
223 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
224 catch (FactoryException fe) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
225 logger.error(
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
226 "unable to get CoordinateReferenceSystem for: " + epsg,
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
227 fe);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
228 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
229
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
230 return null;
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
231 }
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
232
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
233
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
234 public static Envelope transform(Envelope orig, String targetSrs) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
235 return transform(orig, targetSrs, DEFAULT_EPSG);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
236 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
237
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
238
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
239 public static Envelope transform(
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
240 Envelope orig,
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
241 String targetSrs,
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
242 String origSrs
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
243 ) {
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
244 if (targetSrs == null || orig == null || origSrs == null) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
245 logger.warn("unable to transform envelope: empty parameters");
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
246 return orig;
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
247 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
248
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
249 logger.debug("Transform envlope to '" + targetSrs + "'");
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
250 try {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
251 CoordinateReferenceSystem sourceCRS =
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
252 getCoordinateReferenceSystem(origSrs);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
253
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
254 CoordinateReferenceSystem targetCRS =
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
255 getCoordinateReferenceSystem(targetSrs);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
256
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
257 if (sourceCRS != null && targetCRS != null) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
258 ReferencedEnvelope tmpEnv =
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
259 new ReferencedEnvelope(orig, CRS.decode(origSrs));
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
260
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
261 Envelope target = tmpEnv.transform(targetCRS, false);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
262
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
263 if (logger.isDebugEnabled()) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
264 logger.debug(" orig envelope : " + orig);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
265 logger.debug(" transformed envelope: " + target);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
266 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
267
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
268 return target;
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
269 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
270 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
271 catch (NoSuchAuthorityCodeException nsae) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
272 logger.error("Cannot get CoordinateReferenceSystem!", nsae);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
273 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
274 catch (FactoryException fe) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
275 logger.error("Cannot get CoordinateReferenceSystem!", fe);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
276 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
277 catch (TransformException te) {
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
278 logger.error("Cannot transform envelope from source "
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
279 + origSrs + " to target srs " + targetSrs);
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
280 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
281
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
282 return null;
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
283 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
284
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
285
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
286 public static boolean writeShapefile(File shape,
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3303
diff changeset
287 SimpleFeatureType featureType, FeatureCollection<?, ?> collection) {
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
288 return writeShapefile(shape, featureType, collection,
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
289 featureType.getCoordinateReferenceSystem());
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
290 }
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
291
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
292
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
293 public static boolean writeShapefile(File shape,
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3303
diff changeset
294 SimpleFeatureType featureType, FeatureCollection<?, ?> collection,
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3286
diff changeset
295 CoordinateReferenceSystem crs) {
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: 1144
diff changeset
296 if (collection.isEmpty()) {
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: 1144
diff changeset
297 logger.warn("Shapefile is not written - no features given!");
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: 1144
diff changeset
298 return false;
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: 1144
diff changeset
299 }
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: 1144
diff changeset
300
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
301 Transaction transaction = null;
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
302
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
303 try {
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
304 MathTransform transform = CRS.findMathTransform(
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
305 CRS.decode(DEFAULT_EPSG), crs);
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
306
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
307 Map<String, Serializable> params =
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
308 new HashMap<String, Serializable>();
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
309
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
310 params.put("url", shape.toURI().toURL());
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
311 params.put("create spatial index", Boolean.TRUE);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
312
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
313 DataStoreFactorySpi dataStoreFactory =
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
314 new ShapefileDataStoreFactory();
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
315
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
316 ShapefileDataStore newDataStore =
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
317 (ShapefileDataStore)dataStoreFactory.createNewDataStore(params);
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
318 newDataStore.createSchema(featureType);
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
319
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
320 transaction = new DefaultTransaction("create");
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
321
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
322 String typeName = newDataStore.getTypeNames()[0];
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
323
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
324 FeatureWriter<SimpleFeatureType, SimpleFeature> writer =
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
325 newDataStore.getFeatureWriter(typeName, transaction);
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
326
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
327 SimpleFeatureIterator iterator = (SimpleFeatureIterator) collection.features();
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
328
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
329 while (iterator.hasNext()){
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
330 SimpleFeature feature = iterator.next();
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
331 SimpleFeature copy = writer.next();
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
332
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
333 copy.setAttributes(feature.getAttributes());
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
334
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
335 Geometry orig = (Geometry) feature.getDefaultGeometry();
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
336 Geometry reprojected = JTS.transform(orig, transform);
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
337
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
338 copy.setDefaultGeometry(reprojected);
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
339 writer.write();
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
340 }
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
341
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
342 transaction.commit();
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
343
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
344 return true;
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
345 }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
346 catch (MalformedURLException mue) {
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
347 logger.error("Unable to prepare shapefile: " + mue.getMessage());
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
348 }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
349 catch (IOException ioe) {
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
350 logger.error("Unable to write shapefile: " + ioe.getMessage());
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
351 }
2762
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
352 catch (NoSuchAuthorityCodeException nsae) {
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
353 logger.error("Cannot get CoordinateReferenceSystem for '"
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
354 + DEFAULT_EPSG + "'");
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
355 }
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
356 catch (FactoryException fe) {
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
357 logger.error("Cannot get CoordinateReferenceSystem for '"
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
358 + DEFAULT_EPSG + "'");
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
359 }
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
360 catch (TransformException te) {
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
361 logger.error("Was not able to transform geometry!", te);
33aa37e6d98f Reproject geometries before exporting them as shapefiles to filesystem.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2078
diff changeset
362 }
1121
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
363 finally {
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
364 if (transaction != null) {
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
365 try {
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
366 transaction.close();
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
367 }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
368 catch (IOException ioe) { /* do nothing */ }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
369 }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
370 }
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
371
66783d957201 Close open shapefile transactions properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1119
diff changeset
372 return false;
1106
e9f66d63bdd0 Write user defined barriers into a shapefile that is placed in the Artifact's directory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1052
diff changeset
373 }
1052
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
374 }
eeebf8514c7f The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
375 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org