Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java @ 498:4080b57dcb52
Upgraded to Geotools 2.5.8. Write polygons and line strings to
shape files.
gnv-artifacts/trunk@578 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 19 Jan 2010 21:23:28 +0000 |
parents | 6e8364e766fa |
children | e065a72f6b62 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java Tue Jan 19 17:55:08 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java Tue Jan 19 21:23:28 2010 +0000 @@ -45,22 +45,21 @@ import de.intevation.gnv.state.exception.StateException; -import de.intevation.gnv.state.timeseries.TimeSeriesOutputState; - import de.intevation.gnv.utils.FileUtils; import de.intevation.gnv.utils.Pair; +import de.intevation.gnv.utils.ShapeFileWriter; import de.intevation.gnv.utils.StringUtils; import de.intevation.gnv.utils.WKTUtils; import java.awt.Dimension; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -250,25 +249,66 @@ File shapeDir = new File(baseDir, uuid); - int count = 0; + boolean success = false; + boolean createdDir = false; - synchronized (shapeFileLock) { - while (shapeDir.exists()) { - shapeDir = new File(baseDir, uuid + "-" + count); - ++count; + try { + synchronized (shapeFileLock) { + int count = 0; + while (shapeDir.exists()) { + shapeDir = new File(baseDir, uuid + "-" + count); + ++count; + } + + if (!shapeDir.mkdirs()) { + log.error("cannot create directory '" + + shapeDir.getAbsolutePath() + "'"); + return null; + } + createdDir = true; } - if (!shapeDir.mkdirs()) { - log.error("cannot create directory '" - + shapeDir.getAbsolutePath() + "'"); + Map<Integer, MultiPolygon> polygons = result.getPolygons(); + + List<Pair<Object, MultiLineString>> isolines = + result.getLineStrings(); + + File polygonsFile = new File(shapeDir, "polygons.shp"); + File isolinesFile = new File(shapeDir, "isolines.shp"); + + if (!ShapeFileWriter.writeMultiPolygonsToFile( + polygonsFile, + (Integer)result.getAttribute("parameter"), + (Integer)result.getAttribute("layer"), + (Date) result.getAttribute("date"), + polygons) + ) { + log.error("writing polygons failed"); return null; } - shapeFilePath = shapeDir.getAbsolutePath(); + + if (!ShapeFileWriter.writeMultiLineStringsToFile( + isolinesFile, + (Integer)result.getAttribute("parameter"), + (Integer)result.getAttribute("layer"), + (Date) result.getAttribute("date"), + isolines) + ) { + log.error("writing isolines failed"); + return null; + } + + + success = true; + } + finally { + if (!success && createdDir) { + FileUtils.deleteRecursive(shapeDir); + + } } - // TODO: Do the writing - - return shapeFilePath; + return shapeFilePath = shapeDir.getAbsolutePath(); } protected AttributedPoint2ds getResult(String uuid, CallContext callContext) @@ -371,7 +411,6 @@ int iIdx = -1; int jIdx = -1; int vIdx = -1; - int kIdx = -1; boolean firstWarn = true; @@ -382,8 +421,8 @@ sIdx = rd.getColumnIndex("SHAPE"); iIdx = rd.getColumnIndex("IPOSITION"); jIdx = rd.getColumnIndex("JPOSITION"); - kIdx = rd.getColumnIndex("KPOSITION"); vIdx = rd.getColumnIndex("YORDINATE"); + int kIdx = rd.getColumnIndex("KPOSITION"); int tIdx = rd.getColumnIndex("TIMEVALUE"); int pIdx = rd.getColumnIndex("PARAMETERID"); @@ -398,6 +437,7 @@ ap2ds.setAttribute("date", result.getDate(tIdx)); ap2ds.setAttribute("parameter", result.getInteger(pIdx)); + ap2ds.setAttribute("layer", result.getInteger(kIdx)); } Coordinate coord = WKTUtils.toCoordinate(result.getString(sIdx)); if (coord == null) {