Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/MapPrintServiceImpl.java @ 2510:4861ab2c28d2
map print: add legend
flys-client/trunk@4365 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 09 May 2012 16:13:45 +0000 |
parents | 4aa70825bde1 |
children | 532c590beb3e |
comparison
equal
deleted
inserted
replaced
2509:3952429cc41b | 2510:4861ab2c28d2 |
---|---|
13 import de.intevation.artifacts.httpclient.http.HttpClientImpl; | 13 import de.intevation.artifacts.httpclient.http.HttpClientImpl; |
14 | 14 |
15 import de.intevation.artifacts.httpclient.http.response.DocumentResponseHandler; | 15 import de.intevation.artifacts.httpclient.http.response.DocumentResponseHandler; |
16 | 16 |
17 import de.intevation.flys.client.shared.model.MapConfig; | 17 import de.intevation.flys.client.shared.model.MapConfig; |
18 import de.intevation.flys.client.shared.MapUtils; | |
18 | 19 |
19 import java.io.BufferedInputStream; | 20 import java.io.BufferedInputStream; |
20 import java.io.BufferedOutputStream; | 21 import java.io.BufferedOutputStream; |
21 import java.io.File; | 22 import java.io.File; |
22 import java.io.FileInputStream; | 23 import java.io.FileInputStream; |
129 spec.put("layout", "A4 portrait"); | 130 spec.put("layout", "A4 portrait"); |
130 spec.put("title", "FLYS Druck"); | 131 spec.put("title", "FLYS Druck"); |
131 spec.put("srs", "EPSG:" + mapConfig.getSrid()); | 132 spec.put("srs", "EPSG:" + mapConfig.getSrid()); |
132 spec.put("dpi", Integer.valueOf(254)); | 133 spec.put("dpi", Integer.valueOf(254)); |
133 spec.put("units", "m"); | 134 spec.put("units", "m"); |
135 spec.put("geodaetic", "true"); | |
134 spec.put("outputFormat", "pdf"); | 136 spec.put("outputFormat", "pdf"); |
135 | 137 |
138 String ns = ArtifactNamespaceContext.NAMESPACE_URI; | |
136 | 139 |
137 List<Layer> ls = new ArrayList<Layer>(); | 140 List<Layer> ls = new ArrayList<Layer>(); |
138 Layer l = new Layer(); | 141 { Layer l = new Layer(); |
139 | 142 |
140 String ns = ArtifactNamespaceContext.NAMESPACE_URI; | 143 NodeList facets = descDocument.getElementsByTagNameNS(ns, "facet"); |
141 NodeList facets = descDocument.getElementsByTagNameNS(ns, "facet"); | 144 |
142 | 145 for (int i = 0, N = facets.getLength(); i < N; ++i) { |
143 for (int i = 0, N = facets.getLength(); i < N; ++i) { | 146 Element element = (Element)facets.item(i); |
144 Element element = (Element)facets.item(i); | 147 if (l.setup(element)) { |
145 if (l.setup(element)) { | 148 ls.add(l); |
146 ls.add(l); | 149 l = new Layer(); |
147 l = new Layer(); | 150 } |
148 } | 151 } |
149 } | 152 } |
150 | 153 |
151 // Establish Z order. | 154 // Establish Z order. |
152 Collections.sort(ls); | 155 Collections.sort(ls); |
153 | 156 |
154 List<Object> layers = new ArrayList<Object>(ls.size()); | 157 List<Object> layers = new ArrayList<Object>(ls.size()); |
155 | 158 |
156 for (Layer layer: ls) { | 159 for (int i = ls.size()-1; i >= 0; --i) { |
157 layers.add(layer.toMap()); | 160 layers.add(ls.get(i).toMap()); |
158 } | 161 } |
159 | 162 |
160 spec.put("layers", layers); | 163 spec.put("layers", layers); |
161 spec.put("name", "Name"); | 164 spec.put("name", "Name"); |
162 | 165 |
163 List<Object> pages = new ArrayList<Object>(1); | 166 List<Object> pages = new ArrayList<Object>(1); |
164 | 167 |
165 spec.put("pages", pages); | |
166 | 168 |
167 Map<String, Object> page = new LinkedHashMap<String, Object>(); | 169 Map<String, Object> page = new LinkedHashMap<String, Object>(); |
168 | 170 |
169 List<Object> bounds = new ArrayList<Object>(4); | 171 List<Object> bounds = new ArrayList<Object>(4); |
170 bounds.add(Double.valueOf(minX)); | 172 bounds.add(minX); |
171 bounds.add(Double.valueOf(minY)); | 173 bounds.add(minY); |
172 bounds.add(Double.valueOf(maxX)); | 174 bounds.add(maxX); |
173 bounds.add(Double.valueOf(maxY)); | 175 bounds.add(maxY); |
174 | |
175 page.put("bbox", bounds); | 176 page.put("bbox", bounds); |
177 | |
178 /* | |
179 bounds.add(Double.valueOf((minX+maxX)*0.5)); | |
180 bounds.add(Double.valueOf((minY+maxY)*0.5)); | |
181 | |
182 page.put("center", bounds); | |
183 page.put("scale", Integer.valueOf(50000)); | |
184 */ | |
176 | 185 |
177 page.put("mapTitle", "FLYS Karte"); | 186 page.put("mapTitle", "FLYS Karte"); |
178 page.put("comment", "Eine mit FLYS gedruckte Karte."); | 187 page.put("comment", "Eine mit FLYS gedruckte Karte."); |
179 page.put("rotation", Integer.valueOf(0)); | 188 page.put("rotation", Integer.valueOf(0)); |
180 | 189 |
181 pages.add(page); | 190 pages.add(page); |
191 spec.put("pages", pages); | |
192 | |
193 List<Object> legends = new ArrayList<Object>(layers.size()); | |
194 | |
195 for (Layer layer: ls) { | |
196 Map<String, Object> legend = new LinkedHashMap<String, Object>(); | |
197 List<Object> classes = new ArrayList<Object>(1); | |
198 Map<String, Object> clazz = new LinkedHashMap<String, Object>(); | |
199 String lgu = MapUtils.getLegendGraphicUrl(layer.url, layer.layers); | |
200 clazz.put("icon", lgu); | |
201 clazz.put("name", layer.description); | |
202 classes.add(clazz); | |
203 legend.put("classes", classes); | |
204 legend.put("name", layer.description); | |
205 legends.add(legend); | |
206 } | |
207 | |
208 spec.put("legends", legends); | |
182 | 209 |
183 return JSON.toJSONString(spec); | 210 return JSON.toJSONString(spec); |
184 } | 211 } |
185 | 212 |
186 | 213 |
275 } | 302 } |
276 catch (NumberFormatException nfe) { | 303 catch (NumberFormatException nfe) { |
277 throw new ServletException(nfe); | 304 throw new ServletException(nfe); |
278 } | 305 } |
279 } | 306 } |
307 if (log.isDebugEnabled()) { | |
308 log.debug("minX: " + minX); | |
309 log.debug("maxX: " + maxX); | |
310 log.debug("minY: " + minY); | |
311 log.debug("maxY: " + maxY); | |
312 } | |
280 | 313 |
281 String spec = generateSpec( | 314 String spec = generateSpec( |
282 descDocument, | 315 descDocument, |
283 mapConfig, | 316 mapConfig, |
284 minX, minY, | 317 minX, minY, |
285 maxX, maxY); | 318 maxX, maxY); |
286 | 319 |
287 if (log.isDebugEnabled()) { | 320 if (log.isDebugEnabled()) { |
321 log.debug("Generated spec:"); | |
288 log.debug(spec); | 322 log.debug(spec); |
289 //System.err.println(spec); | 323 //System.err.println(spec); |
290 } | 324 } |
291 | 325 |
292 producePDF(spec, resp); | 326 producePDF(spec, resp); |