Mercurial > mxd2map
annotate src/java/de/intevation/mxd/writer/MapScriptWriter.java @ 352:a42923463527
Tagged as release 'release-1.2'
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 16 Nov 2012 18:28:58 +0100 |
parents | dbfcb0b69a63 |
children |
rev | line source |
---|---|
243
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
1 /* |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
2 * Copyright (c) 2011 by Intevation GmbH, Germany <info@intevation.de> |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
3 * |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
4 * This file is part of MXD2map. |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
5 * |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
6 * This program is free software under the LGPL (>=v2.1) |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
7 * Read the file LICENCE.txt coming with the software for details |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
8 * or visit http://www.gnu.org/licenses/ if it does not exist. |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
9 * |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
10 * MXD2map has been developed on behalf of the |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
11 * Bundesamt fuer Seeschifffahrt und Hydrographie (BSH) in Hamburg |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
12 * by Intevation GmbH. |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
13 * |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
14 * Authors: |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
15 * Raimund Renkert <raimund.renkert@intevation.de> |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
16 * Bjoern Schilberg <bjoern.schilberg@intevation.de> |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
17 * Stephan Holl <stephan.holl@intevation.de> |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
18 */ |
df4e0946ef02
Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents:
239
diff
changeset
|
19 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 package de.intevation.mxd.writer; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 import org.apache.log4j.Logger; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
24 import java.awt.Color; |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
25 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 import org.w3c.dom.Document; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 import org.w3c.dom.Element; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 import org.w3c.dom.NodeList; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
29 |
98
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
30 import java.io.File; |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
31 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 import javax.xml.xpath.XPathConstants; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 import edu.umn.gis.mapscript.mapObj; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 import edu.umn.gis.mapscript.layerObj; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
36 import edu.umn.gis.mapscript.classObj; |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
37 import edu.umn.gis.mapscript.labelObj; |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
38 import edu.umn.gis.mapscript.colorObj; |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
39 import edu.umn.gis.mapscript.fontSetObj; |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
40 import edu.umn.gis.mapscript.hashTableObj; |
315
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
41 import edu.umn.gis.mapscript.shapeObj; |
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
42 import edu.umn.gis.mapscript.pointObj; |
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
43 import edu.umn.gis.mapscript.lineObj; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
44 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 import edu.umn.gis.mapscript.MS_UNITS; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
46 import edu.umn.gis.mapscript.MS_LAYER_TYPE; |
130
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
47 import edu.umn.gis.mapscript.MS_CONNECTION_TYPE; |
315
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
48 import edu.umn.gis.mapscript.MS_SHAPE_TYPE; |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
49 import edu.umn.gis.mapscript.MS_FONT_TYPE; |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
50 import edu.umn.gis.mapscript.MS_POSITIONS_ENUM; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 import de.intevation.mxd.utils.XMLUtils; |
259
8fe9ccc77962
Introduced a MapScript helper class and improved metadata handling.
raimund renkert <raimund.renkert@intevation.de>
parents:
258
diff
changeset
|
53 import de.intevation.mxd.utils.MapScriptUtils; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 /** |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
56 * The Mapfile Writer. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
57 * This Writer uses the MapScript Java API to create Mapfiles from a DOM. |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 * |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 */ |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 public class MapScriptWriter |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 implements IWriter |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 { |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
64 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
65 * The Logger. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
66 */ |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
67 private static final Logger logger = Logger.getLogger(MapScriptWriter.class); |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
68 |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
69 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
70 * Private member. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
71 */ |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 private Document root; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 private mapObj map; |
259
8fe9ccc77962
Introduced a MapScript helper class and improved metadata handling.
raimund renkert <raimund.renkert@intevation.de>
parents:
258
diff
changeset
|
74 private MapScriptUtils msutils; |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
75 private String mapFilename; |
324
5e7e6d99f997
Make mapserver install location version independent
Andre Heinecke <aheinecke@intevation.de>
parents:
322
diff
changeset
|
76 private String MS_BINDIR = "c:/mapserver/bin"; |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
77 private String prefix = ""; |
339
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
78 private boolean useRelativePaths = true; |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
79 private MS_UNITS units = MS_UNITS.MS_METERS; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 |
181 | 81 /** |
82 * Default constructor. | |
83 * Creates a mapscript writer object with an empty map. | |
84 */ | |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 public MapScriptWriter() { |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
86 map = new mapObj(""); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
87 msutils = new MapScriptUtils(); |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
88 mapFilename = ""; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 |
181 | 91 /** |
92 * Contructor with template and output filename. | |
93 * Creates a mapscript writer object with the given template that saves the | |
94 * map to the filename. | |
95 * | |
96 * @param templ Mapfile template. | |
97 * @param filename Output file name. | |
98 */ | |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
99 public MapScriptWriter(String templ, String filename) { |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
100 String path = System.getProperty("user.dir"); |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
101 map = new mapObj(templ); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
102 msutils = new MapScriptUtils(); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
103 File f = new File(filename); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
104 mapFilename = filename; |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
105 if(f.isAbsolute()) { |
174
707f13cfba74
Improved the commandline arguments and save the mapfile in the correct directory.
raimund.renkert@intevation.de
parents:
172
diff
changeset
|
106 map.setMappath(mapFilename); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
107 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
108 else { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
109 map.setMappath( |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
110 System.getProperty("user.dir") + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
111 File.separator + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
112 mapFilename); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
113 mapFilename = System.getProperty("user.dir") + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
114 File.separator + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
115 mapFilename; |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
116 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
117 String fontSetPath = map.getFontset().getFilename(); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
118 File fonts = new File(fontSetPath); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
119 String fontSet = fonts.getAbsolutePath(); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
120 fontSet = fontSet.replaceAll("\\\\", "/"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
121 map.setFontSet(fontSet); |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
122 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
123 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
124 |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
125 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
126 * Write the mapfile. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
127 * @param doc The root document containin the map attributes. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
128 * |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
129 * @return Currently always true. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
130 */ |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
102
diff
changeset
|
131 public boolean write(Document doc) { |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
132 logger.debug("write()"); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
133 this.root = doc; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
134 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
135 //Get the filename. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
136 Element fileNode = (Element)XMLUtils.xpath( |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
137 root, |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
138 "/mxd/file", |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
139 XPathConstants.NODE); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
140 //Write the map attributes. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
141 writeMap(); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
142 //Write the layers. |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
143 boolean ret = writeLayer(); |
339
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
144 |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
145 // Replace the filenames if necessary |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
146 if (useRelativePaths) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
147 try { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
148 map.setFontSet(pathForMapfile(map.getFontset().getFilename())); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
149 } catch (Exception e) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
150 // Exception is expected because our working dir is not |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
151 // necessarily the same as the one of the Mapfile |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
152 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
153 try { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
154 map.setSymbolSet(pathForMapfile(map.getSymbolset().getFilename())); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
155 } catch (Exception e) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
156 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
157 |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
158 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
159 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
160 //Save the map. |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
161 if (ret) { |
196
5350621a0294
Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents:
190
diff
changeset
|
162 mapObj cloneMap = map.cloneMap(); |
5350621a0294
Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents:
190
diff
changeset
|
163 cloneMap.save(mapFilename); |
5350621a0294
Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents:
190
diff
changeset
|
164 logger.info("Mapfile created: " + mapFilename); |
5350621a0294
Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents:
190
diff
changeset
|
165 return true; |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
166 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
167 return false; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
168 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
169 |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
170 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
171 * Create the map object and set the attributes. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
172 */ |
297
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
173 private void writeMap() |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
174 throws UnknownError |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
175 { |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
176 logger.debug("writeMap()"); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
177 //Get the map. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
178 Element mapNode = (Element)XMLUtils.xpath( |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
179 root, |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
180 "/mxd/map", |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
181 XPathConstants.NODE); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
182 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
183 //Set the name. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
184 map.setName(mapNode.getAttribute("name")); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
185 map.setMetaData("wms_title", mapNode.getAttribute("name")); |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
186 //Set the extent. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
187 map.setExtent( |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
188 Double.parseDouble(mapNode.getAttribute("extent_min_x")), |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
189 Double.parseDouble(mapNode.getAttribute("extent_min_y")), |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
190 Double.parseDouble(mapNode.getAttribute("extent_max_x")), |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
191 Double.parseDouble(mapNode.getAttribute("extent_max_y"))); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
192 |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
193 map.setMetaData( |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
194 "ows_extent", |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
195 mapNode.getAttribute("extent_min_x") + ", " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
196 mapNode.getAttribute("extent_min_y") + ", " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
197 mapNode.getAttribute("extent_max_x") + ", " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
198 mapNode.getAttribute("extent_max_y")); |
246
87e92debc53f
Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents:
245
diff
changeset
|
199 |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
200 map.setSize(800, 600); |
257
1ac277053049
Set map size after setting map extent to avoid the extent to be modified
raimund renkert <raimund.renkert@intevation.de>
parents:
253
diff
changeset
|
201 |
172
929e09649b08
Handle unknown projections.
vc11884admin@VC11884.win.bsh.de
parents:
170
diff
changeset
|
202 //Set the units and projection. |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
203 int proj = Integer.parseInt(mapNode.getAttribute("projection")); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
204 if(proj != 0) { |
297
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
205 try { |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
206 map.setProjection("epsg:" + mapNode.getAttribute("projection")); |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
207 } |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
208 catch(UnknownError e) { |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
209 logger.error( "Could not set projection: " + mapNode.getAttribute("projection") + |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
210 ". Please ensure that it is described in your espg file."); |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
211 throw e; |
ad05f72ef9e4
Useful debug output when setting the Projection fails
Andre Heinecke <aheinecke@intevation.de>
parents:
261
diff
changeset
|
212 } |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
213 } |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
214 String u = mapNode.getAttribute("units"); |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
215 if(u.equals("feet")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
216 units = MS_UNITS.MS_FEET; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
217 } |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
218 else if(u.equals("inches")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
219 units = MS_UNITS.MS_INCHES; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
220 } |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
221 else if(u.equals("kilometers")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
222 units = MS_UNITS.MS_KILOMETERS; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
223 } |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
224 else if(u.equals("meters")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
225 units = MS_UNITS.MS_METERS; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
226 } |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
227 else if(u.equals("miles")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
228 units = MS_UNITS.MS_MILES; |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
229 } |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
230 else if(u.equals("nauticalmiles")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
231 units = MS_UNITS.MS_NAUTICALMILES; |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
232 } |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
233 else if(u.equals("points")) { |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
234 units = MS_UNITS.MS_PIXELS; |
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
235 } |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
236 else if(u.equals("degree")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
237 units = MS_UNITS.MS_DD; |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
238 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
239 else { |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
240 units = MS_UNITS.MS_METERS; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
241 } |
170
b9ee44070056
Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents:
169
diff
changeset
|
242 map.setUnits(units); |
246
87e92debc53f
Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents:
245
diff
changeset
|
243 |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
244 String mproj = mapNode.getAttribute("projection"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
245 if(mproj != null && !mproj.equals("") && ! mproj.equals("0")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
246 MapScriptUtils msu = new MapScriptUtils(); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
247 String wmssrs = msu.getMetaData(map, "wms_srs"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
248 String owssrs = msu.getMetaData(map, "ows_srs"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
249 if(wmssrs.indexOf(mproj) < 0) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
250 if(wmssrs.equals("")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
251 wmssrs = "EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
252 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
253 else { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
254 wmssrs += " EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
255 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
256 wmssrs += mproj; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
257 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
258 if(owssrs.indexOf(mproj) < 0) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
259 if(owssrs.equals("")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
260 owssrs = "EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
261 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
262 else { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
263 owssrs += " EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
264 } |
259
8fe9ccc77962
Introduced a MapScript helper class and improved metadata handling.
raimund renkert <raimund.renkert@intevation.de>
parents:
258
diff
changeset
|
265 owssrs += mproj; |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
266 } |
259
8fe9ccc77962
Introduced a MapScript helper class and improved metadata handling.
raimund renkert <raimund.renkert@intevation.de>
parents:
258
diff
changeset
|
267 map.setMetaData("ows_srs", owssrs); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
268 map.setMetaData("wms_srs", wmssrs); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
269 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
270 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
271 |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
272 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
273 * Create layer objects and set the attributes. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
274 */ |
196
5350621a0294
Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents:
190
diff
changeset
|
275 private boolean writeLayer() { |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
276 logger.debug("writeLayer()"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
277 Element mapNode = (Element)XMLUtils.xpath( |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
278 root, |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
279 "/mxd/map", |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
280 XPathConstants.NODE); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
281 NodeList list = mapNode.getElementsByTagName("layer"); |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
282 for(int i = list.getLength() - 1; i >= 0; i--) { |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
283 Element layerElement = (Element)list.item(i); |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
284 if (layerElement.getAttribute("type") == "annotation" && |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
285 layerElement.getElementsByTagName("feature").getLength() == 0) { |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
286 logger.debug("Ignoring empty annotation Layer."); |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
287 continue; |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
288 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
289 layerObj layer = new layerObj(map); |
190
c640fb351f66
Do not write layer with empty CLASS objects.
raimund renkert <raimund.renkert@intevation.de>
parents:
189
diff
changeset
|
290 NodeList renderer = layerElement.getElementsByTagName("renderer"); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
291 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
292 //The layer name. |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
293 String group = ""; |
148
2bf35f0babd0
Implemented new group layer functionality.
vc11884admin@VC11884.win.bsh.de
parents:
145
diff
changeset
|
294 if(layerElement.hasAttribute("group")) { |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
295 group = layerElement.getAttribute("group"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
296 String[] splitted = group.split("/"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
297 String cleangroup = ""; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
298 for(int j = 0; j < splitted.length; j++) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
299 if(!splitted[j].equals("")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
300 splitted[j] = msutils.replaceUmlauts(splitted[j]); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
301 cleangroup += "/" + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
302 msutils.removeSpecialChars(splitted[j]); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
303 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
304 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
305 group = cleangroup; |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
306 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
307 String lname = layerElement.getAttribute("name"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
308 lname = msutils.removeSpecialChars(lname); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
309 lname = msutils.replaceUmlauts(lname); |
299
c4fb04f6422f
Write GROUP into grouped maps
Andre Heinecke <aheinecke@intevation.de>
parents:
298
diff
changeset
|
310 String ulgroup = group.replaceAll("/", "."); |
c4fb04f6422f
Write GROUP into grouped maps
Andre Heinecke <aheinecke@intevation.de>
parents:
298
diff
changeset
|
311 String ulname = ulgroup + "." + lname; |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
312 if(ulname.startsWith(".")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
313 ulname = ulname.substring(1); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
314 } |
299
c4fb04f6422f
Write GROUP into grouped maps
Andre Heinecke <aheinecke@intevation.de>
parents:
298
diff
changeset
|
315 if(ulgroup.startsWith(".")) { |
c4fb04f6422f
Write GROUP into grouped maps
Andre Heinecke <aheinecke@intevation.de>
parents:
298
diff
changeset
|
316 ulgroup = ulgroup.substring(1); |
c4fb04f6422f
Write GROUP into grouped maps
Andre Heinecke <aheinecke@intevation.de>
parents:
298
diff
changeset
|
317 } |
244
276f63c86f1c
Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents:
243
diff
changeset
|
318 layer.setName(ulname); |
205
07b991b940ab
Concatenate grouplayer name and layer name to have a unique identifier for each
raimund renkert <raimund.renkert@intevation.de>
parents:
204
diff
changeset
|
319 layer.setUnits(units.swigValue()); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
320 if(!group.equals("")) { |
305
ebf974199309
Only write group if layer is part of a group
Andre Heinecke <aheinecke@intevation.de>
parents:
304
diff
changeset
|
321 layer.setGroup(ulgroup); |
245
2eeeae07aaa2
Set the group attribute to the correct wms metadata.
raimund renkert <raimund.renkert@intevation.de>
parents:
244
diff
changeset
|
322 layer.setMetaData("wms_layer_group", group); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
323 } |
245
2eeeae07aaa2
Set the group attribute to the correct wms metadata.
raimund renkert <raimund.renkert@intevation.de>
parents:
244
diff
changeset
|
324 layer.setMetaData("wms_title", ulname); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
325 |
307
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
326 //Set the projection for the Layers |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
327 if (layerElement.hasAttribute("projection")) { |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
328 int proj = Integer.parseInt(layerElement.getAttribute("projection")); |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
329 if(proj != 0) { |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
330 try { |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
331 layer.setProjection("epsg:" + layerElement.getAttribute("projection")); |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
332 } |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
333 catch(UnknownError e) { |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
334 logger.error( "Could not set projection in layer: " + layerElement.getAttribute("projection") + |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
335 ". Please ensure that it is described in your espg file."); |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
336 throw e; |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
337 } |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
338 } |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
339 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
340 // Projection metadata. |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
341 String mproj = mapNode.getAttribute("projection"); |
307
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
342 if (layerElement.hasAttribute("projection")) { |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
343 // Overwrite the Map Projection in the layer |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
344 mproj = layerElement.getAttribute("projection"); |
f9e53dcc7424
Add Read/Write Support for Projections on a per Layer basis
Andre Heinecke <aheinecke@intevation.de>
parents:
305
diff
changeset
|
345 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
346 if(mproj != null && !mproj.equals("") && !mproj.equals("0")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
347 String wmssrs = layer.getMetaData("wms_srs"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
348 String owssrs = layer.getMetaData("ows_srs"); |
259
8fe9ccc77962
Introduced a MapScript helper class and improved metadata handling.
raimund renkert <raimund.renkert@intevation.de>
parents:
258
diff
changeset
|
349 if(wmssrs == null) { |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
350 wmssrs = "EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
351 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
352 else { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
353 wmssrs += " EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
354 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
355 if(owssrs == null) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
356 owssrs = "EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
357 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
358 else { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
359 owssrs += " EPSG:"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
360 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
361 wmssrs += mproj; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
362 owssrs += mproj; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
363 layer.setMetaData("wms_srs", wmssrs); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
364 layer.setMetaData("ows_srs", owssrs); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
365 } |
259
8fe9ccc77962
Introduced a MapScript helper class and improved metadata handling.
raimund renkert <raimund.renkert@intevation.de>
parents:
258
diff
changeset
|
366 |
300
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
367 // WMS Version |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
368 if (layerElement.hasAttribute("wms_server_version")) { |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
369 layer.setMetaData("wms_server_version", |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
370 layerElement.getAttribute("wms_server_version")); |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
371 } |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
372 |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
373 // WMS Version |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
374 if (layerElement.hasAttribute("imageType")) { |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
375 layer.setMetaData("wms_format", |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
376 layerElement.getAttribute("imageType")); |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
377 } |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
378 |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
379 // The layer extent metadata. |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
380 if(layerElement.hasAttribute("extent_min_x") && |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
381 layerElement.hasAttribute("extent_max_x") && |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
382 layerElement.hasAttribute("extent_min_y") && |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
383 layerElement.hasAttribute("extent_max_y")) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
384 layer.setMetaData( |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
385 "ows_extent", |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
386 layerElement.getAttribute("extent_min_x") + ", " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
387 layerElement.getAttribute("extent_min_y") + ", " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
388 layerElement.getAttribute("extent_max_x") + ", " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
389 layerElement.getAttribute("extent_max_y")); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
390 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
391 //The layer status. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
392 String stat = layerElement.getAttribute("status"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
393 if (stat.equals("on")) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
394 layer.setStatus(1); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
395 } |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
396 else { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
397 layer.setStatus(0); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
398 } |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
399 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
400 //The scale. |
145
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
401 double maxScale = 0; |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
402 double minScale = 0; |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
403 try { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
404 maxScale = |
153
7ed49420ee5a
Changed min scale and max scale in writer.
vc11884admin@VC11884.win.bsh.de
parents:
152
diff
changeset
|
405 Double.parseDouble(layerElement.getAttribute("min_scale")); |
7ed49420ee5a
Changed min scale and max scale in writer.
vc11884admin@VC11884.win.bsh.de
parents:
152
diff
changeset
|
406 minScale = |
145
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
407 Double.parseDouble(layerElement.getAttribute("max_scale")); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
408 } |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
409 catch(NumberFormatException nfe) { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
410 logger.warn("Error setting scale."); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
411 maxScale = 0; |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
412 minScale = 0; |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
413 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
414 layer.setMaxscaledenom(maxScale); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
415 layer.setMinscaledenom(minScale); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
416 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
417 //The layer type. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
418 String type = layerElement.getAttribute("type"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
419 if(type.equals("point")) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
420 layer.setType(MS_LAYER_TYPE.MS_LAYER_POINT); |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
421 layer.setTileitem(""); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
422 } |
62
e468cf8701ea
Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
59
diff
changeset
|
423 else if (type.equals("line")) { |
e468cf8701ea
Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
59
diff
changeset
|
424 layer.setType(MS_LAYER_TYPE.MS_LAYER_LINE); |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
425 layer.setTileitem(""); |
62
e468cf8701ea
Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
59
diff
changeset
|
426 } |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
427 else if (type.equals("polygon")) { |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
428 layer.setType(MS_LAYER_TYPE.MS_LAYER_POLYGON); |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
429 layer.setTileitem(""); |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
430 } |
320 | 431 else if (type.equals("raster")) { |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
432 layer.setType(MS_LAYER_TYPE.MS_LAYER_RASTER); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
433 } |
317
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
434 else if (type == "annotation") { |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
435 layer.setType(MS_LAYER_TYPE.MS_LAYER_ANNOTATION); |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
436 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
437 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
438 //The layer datasource. |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
439 String con_type = layerElement.getAttribute("connection_type"); |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
440 if(con_type.equals("local")) { |
304
50031b1ae8e6
No longer ignore Layers without classes
Andre Heinecke <aheinecke@intevation.de>
parents:
300
diff
changeset
|
441 // The data source is a local file. (.shp or Image) |
130
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
442 String datasource = ""; |
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
443 if(layerElement.hasAttribute("workspace")) { |
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
444 datasource = layerElement.getAttribute("workspace"); |
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
445 datasource += File.separator; |
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
446 } |
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
447 datasource += layerElement.getAttribute("data_source"); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
448 datasource = datasource.replaceAll("\\\\", "/"); |
339
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
449 layer.setData(pathForMapfile(datasource)); |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
450 } |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
451 else if(con_type.equals("SDE") && !type.equals("raster")) { |
181 | 452 // The data source is a sde database. |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
453 logger.info( |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
454 "SDE datasource found." + |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
455 " Please edit password in mapfile."); |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
456 layer.setConnectionType( |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
457 MS_CONNECTION_TYPE.MS_PLUGIN.swigValue(), |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
458 MS_BINDIR + "/ms/plugins/msplugin_sde_93.dll"); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
459 String database_auth = layerElement.getAttribute("database"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
460 if (database_auth.equals("") || database_auth == null) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
461 logger.warn("Could not set the database connection user." + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
462 " Setting to \"sde\" as default."); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
463 database_auth = "sde"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
464 } |
238
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
465 |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
466 String port = layerElement.getAttribute("instance"); |
238
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
467 StringBuffer strBuff = new StringBuffer(); |
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
468 char c; |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
469 |
238
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
470 for (int j = 0; j < port.length() ; j++) { |
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
471 c = port.charAt(j); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
472 |
238
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
473 if(Character.isDigit(c)) { |
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
474 strBuff.append(c); |
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
475 } |
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
476 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
477 |
130
5991c1f90f91
Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents:
129
diff
changeset
|
478 layer.setConnection( |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
479 layerElement.getAttribute("server") + "," + |
238
e672f5134d6e
Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents:
207
diff
changeset
|
480 "port:" + strBuff.toString() + "," + |
197
cdbf2f2dca35
Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents:
196
diff
changeset
|
481 database_auth + "," + |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
482 layerElement.getAttribute("user") + ",<PASSWORD>"); |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
483 layer.setData( |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
484 layerElement.getAttribute("data_source") + |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
485 ",SHAPE," + |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
486 layerElement.getAttribute("version")); |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
487 layer.setProcessing("CLOSE_CONNECTION=defer"); |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
488 layer.setProcessing("ATTRIBUTE_QUALIFIED=TRUE"); |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
489 if(layerElement.hasAttribute("join_table")) { |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
490 logger.info( |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
491 "The layer " + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
492 layer.getName() + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
493 " contains a jointable attribute." + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
494 " Please verify the attribute parameters."); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
495 String join = layerElement.getAttribute("join_table"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
496 |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
497 layer.setProcessing( |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
498 "JOINTABLE=" + |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
499 layerElement.getAttribute("join_table")); |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
500 layer.setFilter( |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
501 "where " + |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
502 layerElement.getAttribute("definition_query") + |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
503 " AND " + |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
504 layerElement.getAttribute("join_table_target") + "." + |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
505 layerElement.getAttribute("join_field_target") + "=" + |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
506 layerElement.getAttribute("join_table") + "." + |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
507 layerElement.getAttribute("join_field")); |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
508 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
509 else { |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
510 prefix = layerElement.getAttribute("data_source"); |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
511 if (!prefix.isEmpty()) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
512 prefix += "."; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
513 } |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
514 if(layerElement.hasAttribute("definition_query") && |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
515 !layerElement.getAttribute("definition_query") |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
516 .equals("")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
517 layer.setFilter("where " + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
518 layerElement.getAttribute("definition_query")); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
519 } |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
520 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
521 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
522 else if(con_type.equals("SDE") && type.equals("raster")) { |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
523 // The data source is a sde database. |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
524 logger.info( |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
525 "SDE datasource found." + |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
526 " Please edit password in mapfile."); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
527 String database_auth = layerElement.getAttribute("database"); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
528 if (database_auth.equals("") || database_auth == null) { |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
529 logger.warn("Could not set the database connection user." + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
530 " Setting to \"sde\" as default."); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
531 database_auth = "sde"; |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
532 } |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
533 |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
534 String port = layerElement.getAttribute("instance"); |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
535 StringBuffer strBuff = new StringBuffer(); |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
536 char c; |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
537 |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
538 for (int j = 0; j < port.length() ; j++) { |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
539 c = port.charAt(j); |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
540 if(Character.isDigit(c)) { |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
541 strBuff.append(c); |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
542 } |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
543 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
544 |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
545 layer.setData( |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
546 "SDE:" + layerElement.getAttribute("server") + |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
547 "," + strBuff + |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
548 "," + layerElement.getAttribute("database") + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
549 "," + layerElement.getAttribute("user") + |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
550 ",<PASSWORD>," + layerElement.getAttribute("dataset")); |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
551 layer.setType(MS_LAYER_TYPE.MS_LAYER_RASTER); |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
552 if(layerElement.hasAttribute("definition_query") && |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
553 !layerElement.getAttribute("definition_query").equals("")) { |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
554 layer.setFilter("where " + |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
555 layerElement.getAttribute("definition_query")); |
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
556 } |
300
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
557 } else if(con_type.equals("WMS")) { |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
558 layer.setType(MS_LAYER_TYPE.MS_LAYER_RASTER); |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
559 layer.setConnection(layerElement.getAttribute("connection")); |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
560 layer.setConnectionType(MS_CONNECTION_TYPE.MS_WMS.swigValue(), ""); |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
561 layer.setMetaData("wms_name", |
215ae6199b95
Add WMS Support to the writer
Andre Heinecke <aheinecke@intevation.de>
parents:
299
diff
changeset
|
562 layerElement.getAttribute("wms_name")); |
311
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
563 } else if(con_type.equals("ogr")) { |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
564 layer.setConnectionType(MS_CONNECTION_TYPE.MS_OGR.swigValue(), ""); |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
565 layer.setConnection(layerElement.getAttribute("connection")); |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
566 layer.setData(layerElement.getAttribute("data_source")); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
567 } |
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
568 if(!type.equals("raster")) { |
252
eae3fe89e669
Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents:
249
diff
changeset
|
569 layer.setTemplate("PleaseInsertAValidTemplateForGFI"); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
570 } |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
571 |
308
1c949a309940
Wirte offsite values for raster layers
Andre Heinecke <aheinecke@intevation.de>
parents:
307
diff
changeset
|
572 // Set Offsite value for raster layer |
1c949a309940
Wirte offsite values for raster layers
Andre Heinecke <aheinecke@intevation.de>
parents:
307
diff
changeset
|
573 if(type == "raster") { |
1c949a309940
Wirte offsite values for raster layers
Andre Heinecke <aheinecke@intevation.de>
parents:
307
diff
changeset
|
574 layer.setOffsite(new colorObj(255,255,255,-4)); |
1c949a309940
Wirte offsite values for raster layers
Andre Heinecke <aheinecke@intevation.de>
parents:
307
diff
changeset
|
575 } |
1c949a309940
Wirte offsite values for raster layers
Andre Heinecke <aheinecke@intevation.de>
parents:
307
diff
changeset
|
576 |
338
b3048df06b66
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
335
diff
changeset
|
577 if (mapNode.hasAttribute("referencescale")) { |
b3048df06b66
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
335
diff
changeset
|
578 layer.setSymbolscaledenom(Double.parseDouble( |
b3048df06b66
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
335
diff
changeset
|
579 mapNode.getAttribute("referencescale"))); |
b3048df06b66
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
335
diff
changeset
|
580 } |
b3048df06b66
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
335
diff
changeset
|
581 |
321
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
582 // Set scaling properties for layer and add Processing |
317
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
583 if(type == "annotation") { |
321
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
584 layer.addProcessing("ITEMS=classId"); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
585 layer.setClassitem("classId"); |
317
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
586 } |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
587 |
181 | 588 // Create labelitem |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
589 NodeList labels = layerElement.getElementsByTagName("label"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
590 if(labels.getLength() > 0) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
591 Element label = (Element)labels.item(0); |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
592 String expr = label.getAttribute("expression"); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
593 expr = expr.replaceAll("\\[", ""); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
594 expr = expr.replaceAll("\\]", ""); |
311
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
595 if (con_type == "ogr") { |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
596 // ogr expression fields come prefixed from arcgis |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
597 // the prefix has to be removed in order to work with |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
598 // mapserver |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
599 String unwantedPrefix = layerElement.getAttribute("data") + "."; |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
600 logger.debug("Removing expression Prefix: " + unwantedPrefix); |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
601 boolean isShapeFile = false; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
602 if (layerElement.getAttribute("connection_type") == "local") { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
603 isShapeFile = true; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
604 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
605 expr = sanitizeAttribute(expr, |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
606 unwantedPrefix, prefix, isShapeFile); |
311
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
607 } |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
608 if(!prefix.equals("")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
609 expr = prefix + "." + expr; |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
610 } |
199
c56547b228f9
Remove leading and trailing whitespaces from labelitem.
raimund renkert <raimund.renkert@intevation.de>
parents:
197
diff
changeset
|
611 layer.setLabelitem(expr.trim()); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
612 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
613 |
315
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
614 //Write elements. |
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
615 writeFeatures(layer, layerElement); |
1d77ea6a915d
Add basic support for Graphics Layers. For now this is restricted
Andre Heinecke <aheinecke@intevation.de>
parents:
314
diff
changeset
|
616 |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
617 //Write classes. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
618 writeClass(layer, layerElement); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
619 } |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
620 return true; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
621 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
622 |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
623 /** |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
624 * Adds the elements (Features) to the layer. |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
625 * @param layer Mapscript layer object. |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
626 * @param layerElement Dom element containing the feature attributes. |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
627 */ |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
628 private void writeFeatures(layerObj layer, Element layerElement) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
629 NodeList list = layerElement.getElementsByTagName("feature"); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
630 for(int i = 0; i < list.getLength(); i++) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
631 logger.debug("Writing an element"); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
632 Element feature = (Element)list.item(i); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
633 pointObj poi = new pointObj( |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
634 Double.parseDouble(feature.getAttribute("X")), |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
635 Double.parseDouble(feature.getAttribute("Y")), |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
636 0.0, -2e38); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
637 lineObj line = new lineObj(); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
638 line.add(poi); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
639 logger.debug("Set the line"); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
640 |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
641 shapeObj shape = new shapeObj(MS_SHAPE_TYPE.MS_SHAPE_POINT.swigValue()); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
642 shape.add(line); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
643 shape.setText(feature.getAttribute("text")); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
644 |
321
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
645 shape.initValues(1); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
646 shape.setValue(0, feature.getAttribute("classId")); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
647 |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
648 // Write the Style / Symbol for each element as a single class |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
649 // TODO build a hash of the style/symbol and check if classes can be |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
650 // grouped |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
651 |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
652 classObj co = new classObj(layer); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
653 writeLabel(co, feature, layerElement.getAttribute("type")); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
654 co.setExpression("\"" + feature.getAttribute("classId") + "\""); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
655 LabelStyleWriter swriter = new LabelStyleWriter (this.map, co); |
b6c0fbae16dc
Expand Graphics Layer Support
Andre Heinecke <aheinecke@intevation.de>
parents:
320
diff
changeset
|
656 swriter.write((Element)feature.getFirstChild()); |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
657 layer.addFeature(shape); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
658 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
659 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
660 |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
661 /** |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
662 * Adds the classes to the layer. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
663 * @param layer Mapscript layer object. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
664 * @param layerElement Dom element containing the class attributes. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
665 */ |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
102
diff
changeset
|
666 private void writeClass(layerObj layer, Element layerElement) { |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
667 logger.debug("writeClass(layerObj, Element)"); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
668 //Get all renderer elements (renderer in arcgis equals class in the |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
669 //mapfile.) |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
670 NodeList list = layerElement.getElementsByTagName("renderer"); |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
671 |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
672 //Create all found class objects and write the symbols and styles for |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
673 //each class. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
674 for(int i = 0; i < list.getLength(); i++) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
675 Element classElement = (Element)list.item(i); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
676 classObj co = new classObj(layer); |
124
0f5819732288
Set label text as class name in mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
677 String name = classElement.getAttribute("label"); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
678 name = msutils.replaceUmlauts(name); |
99
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
679 if (name.equals("")) { |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
680 name = layerElement.getAttribute("name"); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
681 name = msutils.replaceUmlauts(name); |
99
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
682 if (list.getLength() > 1) { |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
683 name += "-" + i; |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
684 } |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
685 } |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
686 co.setName (name); |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
687 |
181 | 688 //Create label object. |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
689 NodeList labels = layerElement.getElementsByTagName("label"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
690 if(labels.getLength() > 0) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
691 Element labelElement = (Element)labels.item(0); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
692 String layerType = layerElement.getAttribute("type"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
693 writeLabel(co, labelElement, layerType); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
694 } |
181 | 695 |
696 //Create definition expression. | |
44
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
697 if(classElement.hasAttribute("field_count")) { |
311
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
698 String unwantedPrefix = layerElement.getAttribute("data") + "."; |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
699 boolean isShapeFile = false; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
700 if (layerElement.getAttribute("connection_type") == "local") { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
701 isShapeFile = true; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
702 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
703 co.setExpression(createExpression(classElement, i, unwantedPrefix, isShapeFile)); |
44
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
704 } |
181 | 705 |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
706 //Write symbols and styles. |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
707 NodeList l = classElement.getChildNodes(); |
141
8f30f7e802d6
Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents:
137
diff
changeset
|
708 for (int j = l.getLength() - 1; j >= 0; j--) { |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
709 Element elem = (Element)l.item(j); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
710 |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
711 String type = layerElement.getAttribute("type"); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
712 if(type.equals("point") && |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
713 elem.getTagName().equals("symbol")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
714 MarkerStyleWriter swriter = |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
715 new MarkerStyleWriter (this.map, co); |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
716 swriter.write (elem); |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
717 } |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
718 else if(type.equals("line") && |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
719 elem.getTagName().equals("symbol")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
720 LineStyleWriter swriter = |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
721 new LineStyleWriter (this.map, co); |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
722 swriter.write (elem); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
723 } |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
724 else if(type.equals("polygon") && |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
725 elem.getTagName().equals("symbol")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
726 FillStyleWriter swriter = |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
727 new FillStyleWriter (this.map, co); |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
728 swriter.write (elem); |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
729 } |
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
730 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
731 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
732 } |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
733 |
181 | 734 /** |
735 * Create a label object in a class object. | |
736 * | |
737 * @param co Class object. | |
738 * @param labelElement DOM element containing label attributes. | |
739 * @param layertype The layer type. Used to define the label position. | |
740 */ | |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
741 private void writeLabel( |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
742 classObj co, |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
743 Element labelElement, |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
744 String layerType) { |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
745 |
181 | 746 //Get the label object. Each class has a predefined labelobject. |
335
4cf94b919725
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
332
diff
changeset
|
747 labelObj label = new labelObj(); |
4cf94b919725
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
332
diff
changeset
|
748 co.addLabel(label); |
181 | 749 |
750 //Get the label text symbol attributes from DOM. | |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
751 Element symbol = (Element)labelElement.getFirstChild(); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
752 if(symbol != null && symbol.getTagName().equals("symbol")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
753 String type = symbol.getAttribute("type"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
754 if(type.equals("text")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
755 label.setType(MS_FONT_TYPE.MS_TRUETYPE); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
756 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
757 label.setSize(Double.parseDouble(symbol.getAttribute("size"))); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
758 |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
759 if(symbol.hasAttribute("color")) { |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
760 String c = symbol.getAttribute("color"); |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
761 Color col = Color.decode(c); |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
762 colorObj color = new colorObj( |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
763 col.getRed(), |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
764 col.getGreen(), |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
765 col.getBlue(), |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
766 -4); |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
767 label.setColor(color); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
768 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
769 if(symbol.hasAttribute("font")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
770 String font = symbol.getAttribute("font"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
771 fontSetObj fso = this.map.getFontset(); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
772 hashTableObj fonts = fso.getFonts(); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
773 String mapFont = fonts.get(font,""); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
774 if(mapFont != null && !mapFont.equals("")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
775 label.setFont(font); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
776 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
777 else { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
778 logger.info( |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
779 "Could not find font " + font + " in font set. " + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
780 "Using FreeSans for labels."); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
781 label.setFont("FreeSans"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
782 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
783 } |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
784 |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
785 if(labelElement.hasAttribute("max_scale")) { |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
786 double min = |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
787 Double.parseDouble(labelElement.getAttribute("max_scale")); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
788 if(min > 0) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
789 label.setMinscaledenom(min); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
790 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
791 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
792 if(labelElement.hasAttribute("min_scale")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
793 double max = |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
794 Double.parseDouble(labelElement.getAttribute("min_scale")); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
795 if(max > 0) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
796 label.setMaxscaledenom(max); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
797 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
798 } |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
799 |
181 | 800 //Set the label position. |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
801 if(layerType.equals("point")) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
802 label.setPosition(MS_POSITIONS_ENUM.MS_UC.swigValue()); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
803 } |
317
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
804 |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
805 //Set annotation specific values |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
806 if (layerType == "annotation") { |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
807 label.setPosition(MS_POSITIONS_ENUM.MS_CC.swigValue()); |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
808 label.setOffsetx(2); |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
809 label.setOffsety(-2); |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
810 } |
5a2b5bc066eb
Implement Label Styles and Labels with background
Andre Heinecke <aheinecke@intevation.de>
parents:
315
diff
changeset
|
811 |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
812 } |
179
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
813 } |
f3a91cd7440b
Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents:
175
diff
changeset
|
814 |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
815 /** Sanitze an attribute |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
816 * |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
817 * Fixes invalid Field names and/or adds and removes a prefix |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
818 * |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
819 * @param attribute The Attribute to sanitize |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
820 * @param prefixToRemove A Prefix that should be removed (empty otherwise) |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
821 * @param prefixToAdd A Prefix that should be added (empty otherwise) |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
822 * @param enforceShpLimit True if the attribute should follow shapefile |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
823 * format restrictions. |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
824 */ |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
825 private String sanitizeAttribute(String attribute, String prefixToRemove, |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
826 String prefixToAdd, boolean enforceShpLimit) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
827 if (enforceShpLimit) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
828 /* Workaround for non standard conform shapefile implementations |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
829 * like the one used by ArcGis that appends the field type after the |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
830 * eleventh character. Although the standard actually defines 10 |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
831 * as the maximum length of Field Names GDAL handles the case where |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
832 * the terminating 0 is actually a Character allowing for Field |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
833 * names of up to 11 characters. |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
834 */ |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
835 if (attribute.length() > 10) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
836 // Just remove the Type Delimiter |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
837 if (attribute.endsWith("C") || |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
838 attribute.endsWith("D") || |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
839 attribute.endsWith("N") || |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
840 attribute.endsWith("L") || |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
841 attribute.endsWith("M")) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
842 attribute = attribute.substring(0, attribute.length() - 1); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
843 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
844 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
845 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
846 if (!prefixToRemove.isEmpty() && attribute.startsWith(prefixToRemove)) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
847 attribute = attribute.replace(prefixToRemove, ""); |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
848 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
849 if (!prefixToAdd.isEmpty() && !attribute.startsWith(prefixToAdd)) { |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
850 attribute = prefixToAdd + attribute; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
851 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
852 return attribute; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
853 } |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
854 |
181 | 855 /** |
856 * Create definition expression. | |
857 * | |
858 * @param ce DOM elementcontaining the class expression information. | |
859 * @param index Index to determine the correct expression operator. | |
311
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
860 * @param prefixToRemove A string that will be removed from the start of |
c8b8f887ef80
Add write support for Fgdb layers and make it possible
Andre Heinecke <aheinecke@intevation.de>
parents:
308
diff
changeset
|
861 * expression fields. |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
862 * @param isShapeFile true if shapefile attribute limits should be enforced |
181 | 863 */ |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
864 private String createExpression(Element ce, int index, String prefixToRemove, |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
865 boolean isShapeFile) { |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
866 String expression = "("; |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
867 int field_count = 0; |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
868 int value_count = 0; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
869 try { |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
870 field_count = Integer.parseInt(ce.getAttribute("field_count")); |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
871 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
872 catch(NumberFormatException nfe) { |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
873 return ""; |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
874 } |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
875 try { |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
876 value_count = Integer.parseInt(ce.getAttribute("value_count")); |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
877 } |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
878 catch(NumberFormatException nfe) { |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
879 value_count = field_count; |
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
880 } |
181 | 881 |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
882 if(field_count == 1) { |
181 | 883 //Create single field expression. |
884 try { | |
885 //If no exception is thrown, the expression value is a number. | |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
886 Double.parseDouble(ce.getAttribute("value")); |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
887 expression += "[" + |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
888 sanitizeAttribute(ce.getAttribute("expression_field_0"), |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
889 prefixToRemove, prefix, isShapeFile) + "]"; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
890 if(ce.hasAttribute("min_value")) { |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
891 if(index == 0) { |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
892 expression += " >= " + ce.getAttribute("min_value"); |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
893 } |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
894 else { |
152
8a87c796bf47
Fixed expression for the first min value.
vc11884admin@VC11884.win.bsh.de
parents:
148
diff
changeset
|
895 expression += " > " + ce.getAttribute("min_value"); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
896 } |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
897 expression += " AND [" + |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
898 sanitizeAttribute(ce.getAttribute("expression_field_0"), |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
899 prefixToRemove, prefix, isShapeFile) + "]"; |
181 | 900 expression += "]"; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
901 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
902 expression += " " + ce.getAttribute("expression_operator"); |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
903 expression += " " + ce.getAttribute("value") + ")"; |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
904 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
905 catch(NumberFormatException nfe) { |
181 | 906 //The expression value is a strings. |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
907 expression += "\"["; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
908 expression += sanitizeAttribute(ce.getAttribute("expression_field_0"), |
322
40442cbfbcc7
Fix invalid quoting for string expressions
Andre Heinecke <aheinecke@intevation.de>
parents:
321
diff
changeset
|
909 prefixToRemove, prefix, isShapeFile) + "]\""; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
910 expression += " " + ce.getAttribute("expression_operator"); |
298
1cbc278c956b
Whitespace Only: unify to 4 Space indention.
Andre Heinecke <aheinecke@intevation.de>
parents:
297
diff
changeset
|
911 expression += " \"" + ce.getAttribute("value") + "\")"; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
912 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
913 catch(Exception e) { |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
914 e.printStackTrace(); |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
915 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
916 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
917 else { |
181 | 918 //Create a multi field expression. |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
919 for (int i = 0; i < field_count; i++) { |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
920 try { |
181 | 921 //If no exception is thrown, the expression values are |
922 //numbers. | |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
923 |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
924 Double.parseDouble(ce.getAttribute("value_" + i)); |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
925 expression += "["; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
926 expression += sanitizeAttribute(ce.getAttribute("expression_field_" + i), |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
927 prefixToRemove, prefix, isShapeFile); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
928 expression += "]"; |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
929 expression += " " + ce.getAttribute("expression_operator"); |
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
930 expression += " " + ce.getAttribute("value_" + i); |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
931 if (i < field_count - 1) { |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
932 expression += " AND "; |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
933 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
934 else { |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
935 expression += ")"; |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
936 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
937 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
938 catch (NumberFormatException nfe) { |
181 | 939 //The expression values are strings. |
314
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
940 expression += "\"["; |
cd3cb1a7f35a
Workaround a bug in ArcGIS causing FieldNames of shape files that
Andre Heinecke <aheinecke@intevation.de>
parents:
311
diff
changeset
|
941 expression += sanitizeAttribute(ce.getAttribute("expression_field_" + i), |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
942 prefixToRemove, prefix, isShapeFile); |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
179
diff
changeset
|
943 expression += "]\""; |
134
acc9e5430177
Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents:
132
diff
changeset
|
944 expression += " " + ce.getAttribute("expression_operator"); |
186
1391f911ee39
Add quotes to an expression if the value is a string.
raimund renkert <raimund.renkert@intevation.de>
parents:
181
diff
changeset
|
945 expression += " \"" + ce.getAttribute("value_" + i); |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
946 if (i < field_count - 1) { |
186
1391f911ee39
Add quotes to an expression if the value is a string.
raimund renkert <raimund.renkert@intevation.de>
parents:
181
diff
changeset
|
947 expression += "\" AND "; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
948 } |
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
949 else { |
186
1391f911ee39
Add quotes to an expression if the value is a string.
raimund renkert <raimund.renkert@intevation.de>
parents:
181
diff
changeset
|
950 expression += "\")"; |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
951 } |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
952 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
953 } |
340
dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
Andre Heinecke <aheinecke@intevation.de>
parents:
339
diff
changeset
|
954 |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
955 } |
137
cd55975ba0c4
Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents:
134
diff
changeset
|
956 return expression; |
127
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
957 } |
339
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
958 |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
959 /** |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
960 * Get a Path that should be used in a mapfile. |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
961 * Depending on the value of useRelativePaths this returns either |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
962 * an absolute path to a file or a relative location |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
963 * |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
964 * @param path The Path that you want to use |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
965 * @return The Path that should be written to the mapfile |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
966 */ |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
967 public String pathForMapfile(String path) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
968 if (useRelativePaths) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
969 logger.debug(new File(mapFilename).toURI()); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
970 logger.debug(new File(path).toURI().getPath()); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
971 // Find the lowest common directory. |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
972 // where relativize returns a relative part |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
973 File candidate = new File(path); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
974 File commonPath = new File(mapFilename).getParentFile(); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
975 File pathfile = new File(path); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
976 String dirUps = ""; |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
977 int count = 0; |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
978 while (commonPath != null && commonPath.getParentFile() != null |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
979 && candidate.isAbsolute()) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
980 candidate = new File(commonPath.toURI().relativize( |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
981 pathfile.toURI()).getPath()); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
982 commonPath = commonPath.getParentFile(); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
983 count++; |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
984 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
985 for (int i=0; i < count - 1; i++) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
986 /* The last loop already was correct*/ |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
987 dirUps += "../"; |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
988 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
989 if (candidate.isAbsolute()) { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
990 return path; |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
991 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
992 return dirUps + candidate.getPath(); |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
993 } else { |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
994 return path; |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
995 } |
ef1cac2854e3
* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
Andre Heinecke <aheinecke@intevation.de>
parents:
338
diff
changeset
|
996 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
997 } |