annotate flys-artifacts/src/main/java/de/intevation/flys/utils/GeometryUtils.java @ 1106:e9f66d63bdd0

Write user defined barriers into a shapefile that is placed in the Artifact's directory. flys-artifacts/trunk@2609 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 30 Aug 2011 11:09:54 +0000
parents eeebf8514c7f
children 005c2964f9af
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
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
3 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
4 import java.io.File;
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
5 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
6 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
7 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
8 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
9 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
10 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
11
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
12 import com.vividsolutions.jts.geom.Coordinate;
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
13 import com.vividsolutions.jts.geom.Geometry;
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
14
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
15 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
16 import org.opengis.feature.simple.SimpleFeatureType;
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
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
18 import org.geotools.data.DataStoreFactorySpi;
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
19 import org.geotools.data.DataUtilities;
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
20 import org.geotools.data.FeatureStore;
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
21 import org.geotools.data.DefaultTransaction;
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
22 import org.geotools.data.Transaction;
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
23 import org.geotools.data.shapefile.ShapefileDataStore;
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
24 import org.geotools.data.shapefile.ShapefileDataStoreFactory;
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
25 import org.geotools.feature.FeatureIterator;
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
26 import org.geotools.feature.FeatureCollection;
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
27 import org.geotools.feature.SchemaException;
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
28 import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
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
29 import org.geotools.geojson.feature.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
30 import org.geotools.referencing.crs.DefaultGeographicCRS;
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
31
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
32
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
33 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
34
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
35 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
36 }
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
37
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
38
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
39 /**
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
40 * Returns the boundary of Geometry <i>geom</i> in OpenLayers
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 * representation.
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 *
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
43 * @param geom The geometry.
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
44 *
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
45 * @return the OpenLayers boundary of <i>geom</i>.
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
46 */
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
47 public static String jtsBoundsToOLBounds(Geometry geom) {
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
48 Coordinate[] c = geom != null ? geom.getCoordinates() : null;
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
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 if (c == null || c.length < 2) {
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 return null;
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
52 }
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
53
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
54 return "" + c[0].x + " " + c[1].y + " " + c[1].x + " " + c[0].y;
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
55 }
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
56
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
57
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
58 /**
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
59 * Returns a SimpleFeatureType used while parsing the GeoJSON string that
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
60 * represents the barriers entered by the user.
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
61 *
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
62 * @param srs The SRS that is used by the GeoJSON string.
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
63 *
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
64 * @return a SimpleFeatureType.
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
65 */
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
66 public static SimpleFeatureType buildBarriersFeatureType(String srs) {
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
67 SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
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
68
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
69 builder.setName("flys");
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
70 builder.setNamespaceURI("http://www.intevation.de/");
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
71 builder.setSRS(srs);
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
72 builder.setDefaultGeometry("geometry");
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
73
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
74 builder.add("geometry", org.opengis.geometry.Geometry.class);
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
75
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
76 return builder.buildFeatureType();
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
77 }
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
78
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
79
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
80 public static SimpleFeatureType buildFeatureType(
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
81 String name, String srid, String geometryType)
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
82 throws SchemaException
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
83 {
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
84 String schema = "geom:" + geometryType + ":srid=" + srid;
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
85
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
86 return DataUtilities.createType(name, schema);
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
87 }
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
88
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
89
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
90 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
91 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
92 ) {
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
93 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
94
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
95 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
96 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
97 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
98
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
99 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
100 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
101
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
102 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
103 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
104 }
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
105 }
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
106 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
107 // 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
108 }
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
109
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
110 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
111 }
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
112
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
113
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
114 public static boolean writeShapefile(
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
115 File shape,
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
116 SimpleFeatureType featureType,
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
117 FeatureCollection 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
118 throws MalformedURLException, 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
119 {
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
120 Map<String, Serializable> params = new HashMap<String, 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
121 params.put("url", shape.toURI().toURL());
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
122 params.put("create spatial index", Boolean.TRUE);
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
123
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
124 DataStoreFactorySpi dataStoreFactory = new ShapefileDataStoreFactory();
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
125
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
126 ShapefileDataStore newDataStore =
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
127 (ShapefileDataStore)dataStoreFactory.createNewDataStore(params);
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
128
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
129 newDataStore.createSchema(featureType);
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
130 newDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
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
131
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
132 Transaction transaction = new DefaultTransaction("create");
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
133
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
134 String typeName = newDataStore.getTypeNames()[0];
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
135
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
136 FeatureStore<SimpleFeatureType, SimpleFeature> featureStore =
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
137 (FeatureStore<SimpleFeatureType, 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
138 newDataStore.getFeatureSource(typeName);
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
139
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
140 featureStore.setTransaction(transaction);
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
141
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
142 featureStore.addFeatures(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
143 transaction.commit();
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
144
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
145 return true;
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
146 }
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
147 }
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
148 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org