Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java @ 1070:7096a2e13676
Added functionality to publish the the mbr of the generated layer to
the client.
gnv-artifacts/trunk@1166 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Mon, 07 Jun 2010 14:42:42 +0000 |
parents | 04967dc9c83f |
children | faae3fc7b792 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java Mon Jun 07 12:22:00 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java Mon Jun 07 14:42:42 2010 +0000 @@ -11,6 +11,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; +import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.io.ParseException; import com.vividsolutions.jts.io.WKTReader; @@ -235,7 +236,7 @@ * * @return the resultdata. */ - protected Collection<Result> fetchData(LayerMetaData layerMetaData){ + protected Collection<Result> fetchData(LayerMetaData layerMetaData, Envelope mbr){ log.debug("LayerOutputState.fetchData"); Collection<Result> data = null; QueryExecutor queryExecutor = QueryExecutorFactory.getInstance() @@ -243,9 +244,12 @@ try { data = queryExecutor.executeQuery(dataQueryID, layerMetaData.getQueryValues()); - if (data != null && layerMetaData.getGeometryWKT() != null){ + if (data != null){ WKTReader wktReader = new WKTReader(); - Geometry border = wktReader.read(layerMetaData.getGeometryWKT()); + Geometry border = null; + if (layerMetaData.getGeometryWKT() != null){ + border = wktReader.read(layerMetaData.getGeometryWKT()); + } Iterator<Result> dataIt = data.iterator(); while (dataIt.hasNext()){ // Trim the Geometries using the @@ -260,8 +264,15 @@ log.error(e,e); } if (currentGeometry != null){ - Geometry newGeometry = currentGeometry.intersection(border); - current.addColumnValue(0, newGeometry.toText()); + if (border != null){ + currentGeometry = currentGeometry.intersection(border); + current.addColumnValue(0, currentGeometry.toText()); + } + if (mbr.isNull()){ + mbr.init(currentGeometry.getEnvelopeInternal()); + }else{ + mbr.expandToInclude(currentGeometry.getEnvelopeInternal()); + } } } } @@ -475,9 +486,10 @@ } Iterator<LayerMetaData> it = layerMetaData.iterator(); int i = 1; + Envelope mbr = new Envelope(); while(it.hasNext()){ LayerMetaData lmd = it.next(); - Collection<Result> data = this.fetchData(lmd); + Collection<Result> data = this.fetchData(lmd, mbr); p = writeToShapeFile(uuid, data, callContext,lmd.getGeometryType(),i++); } if (p != null) { @@ -631,6 +643,7 @@ } int layerNumber = 0; + Envelope mbr = new Envelope(); while (it.hasNext()){ LayerMetaData lmd = it.next(); layerNumber ++; @@ -640,7 +653,7 @@ ExclusiveExec.UniqueKey key = ExclusiveExec.INSTANCE.acquire(uuid); try{ - Collection<Result> results = this.fetchData(lmd); + Collection<Result> results = this.fetchData(lmd,mbr); if (results != null && writeToShapeFile(uuid, results, callContext, geometryType, @@ -663,6 +676,7 @@ success = true; if (meta != null && !it.hasNext()) { + MetaWriter.insertMbr(mbr, "EPSG:4326",meta); MetaWriter.writeMetaFile(path, meta); MapfileGenerator.getInstance().update(); return meta; @@ -671,6 +685,7 @@ ExclusiveExec.INSTANCE.release(key); } } + return document; } finally {