Mercurial > mxd2map
annotate src/java/de/intevation/mxd/writer/LineStyleWriter.java @ 132:02df1dbc2166
Remove all whitespaces in layer name.
author | vc11884admin@VC11884.win.bsh.de |
---|---|
date | Mon, 20 Jun 2011 17:54:09 +0200 |
parents | cd18c61cbcf6 |
children | 7632850b9520 |
rev | line source |
---|---|
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.mxd.writer; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import java.awt.Color; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import org.apache.log4j.Logger; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import org.w3c.dom.Element; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import edu.umn.gis.mapscript.mapObj; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import edu.umn.gis.mapscript.classObj; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import edu.umn.gis.mapscript.styleObj; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import edu.umn.gis.mapscript.colorObj; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import edu.umn.gis.mapscript.symbolObj; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import edu.umn.gis.mapscript.symbolSetObj; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 /** |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 * The interface to the mapfile writer. |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 * |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 */ |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 public class LineStyleWriter { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 /** |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 * The Logger. |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 */ |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 private static final Logger logger = Logger.getLogger(LineStyleWriter.class); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 private mapObj map; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 private classObj cl; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 private styleObj style; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 public LineStyleWriter (mapObj map, classObj cl) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 this.map = map; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 this.cl = cl; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 this.style = new styleObj(cl); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 /** |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 * Write the content. |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 */ |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
95
diff
changeset
|
42 public boolean write(Element symbolElement) { |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 logger.debug("write(Element)"); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 symbolSetObj symbolSet = map.getSymbolset(); |
131
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
45 if(symbolElement.hasAttribute("width")) { |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
46 double w = Double.parseDouble(symbolElement.getAttribute("width")); |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
47 if(w < 1.0) { |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
48 return false; |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
49 } |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
50 style.setWidth((int)Double.parseDouble( |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
51 symbolElement.getAttribute("width"))); |
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
52 } |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 if(symbolElement.hasAttribute("angle")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 style.setAngle( |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 Double.parseDouble(symbolElement.getAttribute("angle"))); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 if(symbolElement.hasAttribute("color")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 String c = symbolElement.getAttribute("color"); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 Color col = Color.decode(c); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 colorObj color = new colorObj( |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 col.getRed(), |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 col.getGreen(), |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 col.getBlue(), |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 -4); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 style.setColor(color); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 } |
131
cd18c61cbcf6
Do not write lines or outlines if their width is smaller than 1.0.
vc11884admin@VC11884.win.bsh.de
parents:
122
diff
changeset
|
67 |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 if(symbolElement.hasAttribute("size")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 style.setSize((int)Double.parseDouble( |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 symbolElement.getAttribute("size"))); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 String name = symbolElement.getAttribute("name"); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 symbolObj sym = symbolSet.getSymbolByName(name); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 //The following lines are for dashed and/or dotted lines. |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
76 if(symbolElement.hasAttribute("linestyle")) { |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 String ls = symbolElement.getAttribute("linestyle"); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 double[] vals; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 if(ls.equals("dash")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 style.setPatternlength(2); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
81 vals = new double[] {4.0, 4.0, 0, 0, 0, 0, 0, 0, 0, 0}; |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 else if(ls.equals("dot")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 style.setPatternlength(2); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
86 vals = new double[] {1.0, 4.0, 0, 0, 0, 0, 0, 0, 0, 0}; |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 else if(ls.equals("dashdot")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 style.setPatternlength(4); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
91 vals = new double[] {5.0, 4.0, 1.0, 4.0, 0, 0, 0, 0, 0, 0}; |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 else if (ls.equals("dashdotdot")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 style.setPatternlength(6); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
96 vals = new double[] {5.0, 4.0, 1.0, 3.0, 1.0, 4.0, 0, 0, 0, 0}; |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 String type = symbolElement.getAttribute("type"); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 if(type.equals("marker")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
103 style.setSymbolByName(map, name); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
104 SymbolWriter sw = new SymbolWriter(this.map, this.cl); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
105 sw.write(symbolElement); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
106 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
107 return false; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
108 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
109 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
110 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |