Mercurial > mxd2map
annotate src/java/de/intevation/mxd/writer/LineStyleWriter.java @ 180:f4eb506499f5
Done some code styling and removed TODOs.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 11 Jul 2011 12:11:08 +0200 |
parents | 9fd61f4ac0e3 |
children | 0bde090506f9 |
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")) { |
145
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
46 double w = 0; |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
47 try { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
48 w = Double.parseDouble(symbolElement.getAttribute("width")); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
49 } |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
50 catch(NumberFormatException nfe) { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
51 logger.warn("Error setting width. No line width set."); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
52 w = 0; |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
53 } |
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
|
54 if(w < 1.0) { |
177
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
55 w = 1; |
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
|
56 } |
145
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
57 style.setWidth((int)w); |
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
|
58 } |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 if(symbolElement.hasAttribute("angle")) { |
145
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
60 try { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
61 style.setAngle( |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
62 Double.parseDouble(symbolElement.getAttribute("angle"))); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
63 } |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
64 catch(NumberFormatException nfe) { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
65 logger.info("Error setting angle. Could not get value."); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
66 } |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 } |
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("color")) { |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 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
|
70 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
|
71 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
|
72 col.getRed(), |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 col.getGreen(), |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 col.getBlue(), |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 -4); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 style.setColor(color); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 } |
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
|
78 |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 if(symbolElement.hasAttribute("size")) { |
145
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
80 try { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
81 style.setSize((int)Double.parseDouble( |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
82 symbolElement.getAttribute("size"))); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
83 } |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
84 catch(NumberFormatException nfe) { |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
85 logger.warn("Error setting size. Setting size to 1."); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
86 style.setSize (1); |
b2c5a66022f1
Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents:
141
diff
changeset
|
87 } |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 } |
177
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
89 |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
90 if(symbolElement.hasAttribute("offset")) { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
91 double offset = 0; |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
92 try { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
93 offset = Double.parseDouble( |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
94 symbolElement.getAttribute("offset")); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
95 if(Math.abs(offset) < 1 && offset > 0) { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
96 offset = 1; |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
97 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
98 else if (Math.abs(offset) < 1 && offset < 0) { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
99 offset = -1; |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
100 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
101 style.setOffsetx(offset); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
102 style.setOffsety(-99); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
103 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
104 catch(NumberFormatException nfe) { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
105 logger.warn("Could not set offset."); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
106 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
107 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
108 |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
109 if(symbolElement.hasAttribute("miterlimit")) { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
110 double miter = 0; |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
111 try { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
112 miter = Double.parseDouble( |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
113 symbolElement.getAttribute("miterlimit")); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
114 style.setLinejoinmaxsize(miter); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
115 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
116 catch(NumberFormatException nfe) { |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
117 logger.warn("Could not set miter limit."); |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
118 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
119 } |
9fd61f4ac0e3
Write lines with width smaller than 1 and write further line attributes.
raimund renkert <raimund.renkert@intevation.de>
parents:
147
diff
changeset
|
120 |
141
8f30f7e802d6
Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents:
136
diff
changeset
|
121 String type = symbolElement.getAttribute("type"); |
8f30f7e802d6
Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents:
136
diff
changeset
|
122 if(type.equals("marker")) { |
8f30f7e802d6
Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents:
136
diff
changeset
|
123 SymbolWriter sw = new SymbolWriter(this.map, this.cl); |
8f30f7e802d6
Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents:
136
diff
changeset
|
124 sw.write(symbolElement); |
147
03daf386f19a
Manage symbol name for line symbols.
vc11884admin@VC11884.win.bsh.de
parents:
145
diff
changeset
|
125 String name = symbolElement.getAttribute("name"); |
03daf386f19a
Manage symbol name for line symbols.
vc11884admin@VC11884.win.bsh.de
parents:
145
diff
changeset
|
126 style.setSymbolByName(map, name); |
03daf386f19a
Manage symbol name for line symbols.
vc11884admin@VC11884.win.bsh.de
parents:
145
diff
changeset
|
127 symbolObj sym = symbolSet.getSymbolByName(name); |
141
8f30f7e802d6
Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents:
136
diff
changeset
|
128 } |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
129 |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
130 //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
|
131 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
|
132 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
|
133 double[] vals; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
134 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
|
135 style.setPatternlength(2); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
136 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
|
137 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
138 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
139 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
|
140 style.setPatternlength(2); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
141 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
|
142 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
143 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
144 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
|
145 style.setPatternlength(4); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
146 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
|
147 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
148 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
149 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
|
150 style.setPatternlength(6); |
122
f0a72d232aa8
Set PATTERN for line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
151 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
|
152 style.setPattern(vals); |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
153 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
154 } |
136
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
155 else if(symbolElement.hasAttribute("pattern_count")) { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
156 int count = 0; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
157 try { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
158 count = Integer.parseInt( |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
159 symbolElement.getAttribute("pattern_count")); |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
160 double[] vals = new double[10]; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
161 double move = 0.0; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
162 int pos = 0; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
163 for(int i = 0; i < count; i++) { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
164 double mark = |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
177
diff
changeset
|
165 Double.parseDouble(symbolElement.getAttribute("mark_" + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
177
diff
changeset
|
166 i)); |
136
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
167 double gap = |
180
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
177
diff
changeset
|
168 Double.parseDouble(symbolElement.getAttribute("gap_" + |
f4eb506499f5
Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents:
177
diff
changeset
|
169 i)); |
136
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
170 if(i == 0 && mark == 0.0) { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
171 move = gap; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
172 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
173 else if(i == count - 1 && move > 0.0) { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
174 vals[pos++] = mark; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
175 vals[pos++] = gap + move; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
176 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
177 else { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
178 vals[pos++] = mark; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
179 vals[pos++] = gap; |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
180 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
181 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
182 if(move > 0.0) { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
183 style.setPatternlength((count*2) -2); |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
184 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
185 else { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
186 style.setPatternlength(count*2); |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
187 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
188 style.setPattern(vals); |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
189 |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
190 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
191 catch(NumberFormatException nfe) { |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
192 logger.warn("Could not write PATTERN."); |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
193 } |
7632850b9520
Convert cartographic line template to mapfile pattern.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
194 } |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
195 return false; |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
196 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
197 } |
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
198 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |