Mercurial > dive4elements > gnv-client
comparison 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 |
comparison
equal
deleted
inserted
replaced
497:75306d856004 | 498:4080b57dcb52 |
---|---|
43 import de.intevation.gnv.state.InputData; | 43 import de.intevation.gnv.state.InputData; |
44 import de.intevation.gnv.state.OutputStateBase; | 44 import de.intevation.gnv.state.OutputStateBase; |
45 | 45 |
46 import de.intevation.gnv.state.exception.StateException; | 46 import de.intevation.gnv.state.exception.StateException; |
47 | 47 |
48 import de.intevation.gnv.state.timeseries.TimeSeriesOutputState; | |
49 | |
50 import de.intevation.gnv.utils.FileUtils; | 48 import de.intevation.gnv.utils.FileUtils; |
51 import de.intevation.gnv.utils.Pair; | 49 import de.intevation.gnv.utils.Pair; |
50 import de.intevation.gnv.utils.ShapeFileWriter; | |
52 import de.intevation.gnv.utils.StringUtils; | 51 import de.intevation.gnv.utils.StringUtils; |
53 import de.intevation.gnv.utils.WKTUtils; | 52 import de.intevation.gnv.utils.WKTUtils; |
54 | 53 |
55 import java.awt.Dimension; | 54 import java.awt.Dimension; |
56 | 55 |
57 import java.io.File; | 56 import java.io.File; |
58 import java.io.FileOutputStream; | |
59 import java.io.IOException; | 57 import java.io.IOException; |
60 import java.io.OutputStream; | 58 import java.io.OutputStream; |
61 | 59 |
62 import java.util.ArrayList; | 60 import java.util.ArrayList; |
63 import java.util.Collection; | 61 import java.util.Collection; |
62 import java.util.Date; | |
64 import java.util.HashMap; | 63 import java.util.HashMap; |
65 import java.util.List; | 64 import java.util.List; |
66 import java.util.Map; | 65 import java.util.Map; |
67 | 66 |
68 import org.apache.log4j.Logger; | 67 import org.apache.log4j.Logger; |
248 ) { | 247 ) { |
249 File baseDir = shapefileDirectory(callContext); | 248 File baseDir = shapefileDirectory(callContext); |
250 | 249 |
251 File shapeDir = new File(baseDir, uuid); | 250 File shapeDir = new File(baseDir, uuid); |
252 | 251 |
253 int count = 0; | 252 boolean success = false; |
254 | 253 boolean createdDir = false; |
255 synchronized (shapeFileLock) { | 254 |
256 while (shapeDir.exists()) { | 255 try { |
257 shapeDir = new File(baseDir, uuid + "-" + count); | 256 synchronized (shapeFileLock) { |
258 ++count; | 257 int count = 0; |
259 } | 258 while (shapeDir.exists()) { |
260 | 259 shapeDir = new File(baseDir, uuid + "-" + count); |
261 if (!shapeDir.mkdirs()) { | 260 ++count; |
262 log.error("cannot create directory '" | 261 } |
263 + shapeDir.getAbsolutePath() + "'"); | 262 |
263 if (!shapeDir.mkdirs()) { | |
264 log.error("cannot create directory '" | |
265 + shapeDir.getAbsolutePath() + "'"); | |
266 return null; | |
267 } | |
268 createdDir = true; | |
269 } | |
270 | |
271 Map<Integer, MultiPolygon> polygons = result.getPolygons(); | |
272 | |
273 List<Pair<Object, MultiLineString>> isolines = | |
274 result.getLineStrings(); | |
275 | |
276 File polygonsFile = new File(shapeDir, "polygons.shp"); | |
277 File isolinesFile = new File(shapeDir, "isolines.shp"); | |
278 | |
279 if (!ShapeFileWriter.writeMultiPolygonsToFile( | |
280 polygonsFile, | |
281 (Integer)result.getAttribute("parameter"), | |
282 (Integer)result.getAttribute("layer"), | |
283 (Date) result.getAttribute("date"), | |
284 polygons) | |
285 ) { | |
286 log.error("writing polygons failed"); | |
264 return null; | 287 return null; |
265 } | 288 } |
266 shapeFilePath = shapeDir.getAbsolutePath(); | 289 |
267 } | 290 if (!ShapeFileWriter.writeMultiLineStringsToFile( |
268 | 291 isolinesFile, |
269 // TODO: Do the writing | 292 (Integer)result.getAttribute("parameter"), |
270 | 293 (Integer)result.getAttribute("layer"), |
271 return shapeFilePath; | 294 (Date) result.getAttribute("date"), |
295 isolines) | |
296 ) { | |
297 log.error("writing isolines failed"); | |
298 return null; | |
299 } | |
300 | |
301 | |
302 success = true; | |
303 } | |
304 finally { | |
305 if (!success && createdDir) { | |
306 FileUtils.deleteRecursive(shapeDir); | |
307 | |
308 } | |
309 } | |
310 | |
311 return shapeFilePath = shapeDir.getAbsolutePath(); | |
272 } | 312 } |
273 | 313 |
274 protected AttributedPoint2ds getResult(String uuid, CallContext callContext) | 314 protected AttributedPoint2ds getResult(String uuid, CallContext callContext) |
275 throws StateException | 315 throws StateException |
276 { | 316 { |
369 | 409 |
370 int sIdx = -1; | 410 int sIdx = -1; |
371 int iIdx = -1; | 411 int iIdx = -1; |
372 int jIdx = -1; | 412 int jIdx = -1; |
373 int vIdx = -1; | 413 int vIdx = -1; |
374 int kIdx = -1; | |
375 | 414 |
376 boolean firstWarn = true; | 415 boolean firstWarn = true; |
377 | 416 |
378 for (Result result: results) { | 417 for (Result result: results) { |
379 | 418 |
380 if (sIdx == -1) { | 419 if (sIdx == -1) { |
381 ResultDescriptor rd = result.getResultDescriptor(); | 420 ResultDescriptor rd = result.getResultDescriptor(); |
382 sIdx = rd.getColumnIndex("SHAPE"); | 421 sIdx = rd.getColumnIndex("SHAPE"); |
383 iIdx = rd.getColumnIndex("IPOSITION"); | 422 iIdx = rd.getColumnIndex("IPOSITION"); |
384 jIdx = rd.getColumnIndex("JPOSITION"); | 423 jIdx = rd.getColumnIndex("JPOSITION"); |
385 kIdx = rd.getColumnIndex("KPOSITION"); | |
386 vIdx = rd.getColumnIndex("YORDINATE"); | 424 vIdx = rd.getColumnIndex("YORDINATE"); |
425 int kIdx = rd.getColumnIndex("KPOSITION"); | |
387 int tIdx = rd.getColumnIndex("TIMEVALUE"); | 426 int tIdx = rd.getColumnIndex("TIMEVALUE"); |
388 int pIdx = rd.getColumnIndex("PARAMETERID"); | 427 int pIdx = rd.getColumnIndex("PARAMETERID"); |
389 | 428 |
390 if (sIdx == -1 || iIdx == -1 | 429 if (sIdx == -1 || iIdx == -1 |
391 || jIdx == -1 || kIdx == -1 | 430 || jIdx == -1 || kIdx == -1 |
396 return null; | 435 return null; |
397 } | 436 } |
398 | 437 |
399 ap2ds.setAttribute("date", result.getDate(tIdx)); | 438 ap2ds.setAttribute("date", result.getDate(tIdx)); |
400 ap2ds.setAttribute("parameter", result.getInteger(pIdx)); | 439 ap2ds.setAttribute("parameter", result.getInteger(pIdx)); |
440 ap2ds.setAttribute("layer", result.getInteger(kIdx)); | |
401 } | 441 } |
402 Coordinate coord = WKTUtils.toCoordinate(result.getString(sIdx)); | 442 Coordinate coord = WKTUtils.toCoordinate(result.getString(sIdx)); |
403 if (coord == null) { | 443 if (coord == null) { |
404 if (firstWarn) { | 444 if (firstWarn) { |
405 firstWarn = false; | 445 firstWarn = false; |