svn-gvsig-desktop / trunk / libraries / libGPE-KML / src / org / gvsig / gpe / kml / writer / GPEKmlWriterHandler.java @ 11683
History | View | Annotate | Download (10.4 KB)
1 | 11157 | jorpiell | package org.gvsig.gpe.kml.writer; |
---|---|---|---|
2 | |||
3 | import java.io.FileWriter; |
||
4 | import java.io.IOException; |
||
5 | |||
6 | 11211 | jorpiell | import org.gvsig.gpe.gml.GMLTags; |
7 | import org.gvsig.gpe.kml.KmlTags; |
||
8 | import org.gvsig.gpe.kml.writer.features.DocumentWriter; |
||
9 | import org.gvsig.gpe.kml.writer.features.FolderWriter; |
||
10 | import org.gvsig.gpe.kml.writer.features.PlaceMarkWriter; |
||
11 | import org.gvsig.gpe.kml.writer.geometries.InnerBoundaryIs; |
||
12 | import org.gvsig.gpe.kml.writer.geometries.LineStringWriter; |
||
13 | import org.gvsig.gpe.kml.writer.geometries.LinearRingWriter; |
||
14 | 11666 | jorpiell | import org.gvsig.gpe.kml.writer.geometries.MultiGeometryWriter; |
15 | 11211 | jorpiell | import org.gvsig.gpe.kml.writer.geometries.PointWriter; |
16 | import org.gvsig.gpe.kml.writer.geometries.PolygonWriter; |
||
17 | 11512 | jorpiell | import org.gvsig.gpe.kml.writer.geometries.RegionWriter; |
18 | 11157 | jorpiell | import org.gvsig.gpe.xml.writer.GPEXmlWriterHandler; |
19 | 11211 | jorpiell | import org.gvsig.gpe.xml.writer.Writer; |
20 | 11157 | jorpiell | |
21 | 11211 | jorpiell | |
22 | 11157 | jorpiell | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
23 | *
|
||
24 | * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
|
||
25 | *
|
||
26 | * This program is free software; you can redistribute it and/or
|
||
27 | * modify it under the terms of the GNU General Public License
|
||
28 | * as published by the Free Software Foundation; either version 2
|
||
29 | * of the License, or (at your option) any later version.
|
||
30 | *
|
||
31 | * This program is distributed in the hope that it will be useful,
|
||
32 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
33 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
34 | * GNU General Public License for more details.
|
||
35 | *
|
||
36 | * You should have received a copy of the GNU General Public License
|
||
37 | * along with this program; if not, write to the Free Software
|
||
38 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||
39 | *
|
||
40 | * For more information, contact:
|
||
41 | *
|
||
42 | * Generalitat Valenciana
|
||
43 | * Conselleria d'Infraestructures i Transport
|
||
44 | * Av. Blasco Ib??ez, 50
|
||
45 | * 46010 VALENCIA
|
||
46 | * SPAIN
|
||
47 | *
|
||
48 | * +34 963862235
|
||
49 | * gvsig@gva.es
|
||
50 | * www.gvsig.gva.es
|
||
51 | *
|
||
52 | * or
|
||
53 | *
|
||
54 | * IVER T.I. S.A
|
||
55 | * Salamanca 50
|
||
56 | * 46005 Valencia
|
||
57 | * Spain
|
||
58 | *
|
||
59 | * +34 963163400
|
||
60 | * dac@iver.es
|
||
61 | */
|
||
62 | /* CVS MESSAGES:
|
||
63 | *
|
||
64 | * $Id$
|
||
65 | * $Log$
|
||
66 | 11683 | jorpiell | * Revision 1.13 2007-05-16 09:30:09 jorpiell
|
67 | * the writting methods has to have the errorHandler argument
|
||
68 | *
|
||
69 | * Revision 1.12 2007/05/15 12:37:45 jorpiell
|
||
70 | 11666 | jorpiell | * Add multyGeometries
|
71 | *
|
||
72 | * Revision 1.11 2007/05/09 08:36:24 jorpiell
|
||
73 | 11512 | jorpiell | * Add the bbox to the layer
|
74 | *
|
||
75 | * Revision 1.10 2007/05/08 09:28:17 jorpiell
|
||
76 | 11485 | jorpiell | * Add comments to create javadocs
|
77 | *
|
||
78 | 11488 | jorpiell | * Revision 1.9 2007/05/08 08:22:37 jorpiell
|
79 | * Add comments to create javadocs
|
||
80 | *
|
||
81 | 11485 | jorpiell | * Revision 1.8 2007/05/07 07:07:18 jorpiell
|
82 | 11464 | jorpiell | * Add a constructor with the name and the description fields
|
83 | *
|
||
84 | * Revision 1.7 2007/05/02 11:46:50 jorpiell
|
||
85 | 11435 | jorpiell | * Writing tests updated
|
86 | *
|
||
87 | * Revision 1.6 2007/04/20 08:38:59 jorpiell
|
||
88 | 11300 | jorpiell | * Tests updating
|
89 | *
|
||
90 | * Revision 1.5 2007/04/17 10:30:41 jorpiell
|
||
91 | 11223 | jorpiell | * Add a method to compress a file
|
92 | *
|
||
93 | * Revision 1.4 2007/04/14 16:08:07 jorpiell
|
||
94 | 11211 | jorpiell | * Kml writing support added
|
95 | *
|
||
96 | * Revision 1.3 2007/04/13 13:16:21 jorpiell
|
||
97 | 11205 | jorpiell | * Add KML reading support
|
98 | *
|
||
99 | * Revision 1.2 2007/04/12 17:06:43 jorpiell
|
||
100 | 11171 | jorpiell | * First GML writing tests
|
101 | *
|
||
102 | * Revision 1.1 2007/04/12 10:21:52 jorpiell
|
||
103 | 11157 | jorpiell | * Add the writers
|
104 | *
|
||
105 | *
|
||
106 | */
|
||
107 | /**
|
||
108 | 11488 | jorpiell | * KML writer handler used to write KML/KMZ files
|
109 | 11157 | jorpiell | * @author Jorge Piera LLodr? (jorge.piera@iver.es)
|
110 | */
|
||
111 | public class GPEKmlWriterHandler extends GPEXmlWriterHandler{ |
||
112 | 11211 | jorpiell | private int layerLevel = 0; |
113 | 11464 | jorpiell | |
114 | public GPEKmlWriterHandler(String name, String description) { |
||
115 | super(name, description);
|
||
116 | 11157 | jorpiell | } |
117 | 11464 | jorpiell | |
118 | 11157 | jorpiell | /*
|
119 | * (non-Javadoc)
|
||
120 | * @see org.gvsig.gpe.xml.writer.GPEXmlWriterHandler#createOutputStream()
|
||
121 | */
|
||
122 | protected Writer createWriter() throws IOException { |
||
123 | 11300 | jorpiell | return new Writer(new FileWriter(getOutputFile())); |
124 | 11157 | jorpiell | } |
125 | 11211 | jorpiell | |
126 | /*
|
||
127 | * (non-Javadoc)
|
||
128 | 11300 | jorpiell | * @see org.gvsig.gpe.writers.GPEWriterHandler#getDefaultFormat()
|
129 | */
|
||
130 | public String getDefaultFormat() { |
||
131 | return "KML"; |
||
132 | } |
||
133 | |||
134 | /*
|
||
135 | * (non-Javadoc)
|
||
136 | * @see org.gvsig.gpe.writers.GPEWriterHandler#getDefaultVersion()
|
||
137 | */
|
||
138 | public String getDefaultVersion() { |
||
139 | return "2.1"; |
||
140 | } |
||
141 | |||
142 | /*
|
||
143 | * (non-Javadoc)
|
||
144 | 11211 | jorpiell | * @see org.gvsig.gpe.writer.GPEWriterHandler#initialize()
|
145 | */
|
||
146 | public void initialize(){ |
||
147 | try {
|
||
148 | 11300 | jorpiell | initXmlHeader(); |
149 | 11211 | jorpiell | writer.write("\n");
|
150 | writer.write("<" + KmlTags.ROOT);
|
||
151 | writer.write(" " + GMLTags.XML_NAMESPACE + "=\"" + KmlTags.NAMESPACE_21 + "\""); |
||
152 | writer.write(">");
|
||
153 | } catch (IOException e) { |
||
154 | getErrorHandler().addError(e); |
||
155 | } |
||
156 | } |
||
157 | |||
158 | /*
|
||
159 | * (non-Javadoc)
|
||
160 | * @see org.gvsig.gpe.writer.GPEWriterHandler#close()
|
||
161 | */
|
||
162 | public void close(){ |
||
163 | try {
|
||
164 | writer.write("\n");
|
||
165 | writer.write("</" + KmlTags.ROOT + ">"); |
||
166 | writer.flush(); |
||
167 | writer.close(); |
||
168 | } catch (IOException e) { |
||
169 | getErrorHandler().addError(e); |
||
170 | } |
||
171 | 11223 | jorpiell | if (getFormat().toUpperCase().equals("KMZ")){ |
172 | compressFile(); |
||
173 | } |
||
174 | } |
||
175 | 11211 | jorpiell | |
176 | /*
|
||
177 | * (non-Javadoc)
|
||
178 | * @see org.gvsig.gpe.writer.GPEWriterHandler#startLayer(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||
179 | */
|
||
180 | public void startLayer(String id, String name, String description, String srs) { |
||
181 | try{
|
||
182 | if (layerLevel == 0){ |
||
183 | 11683 | jorpiell | DocumentWriter.start(writer, getErrorHandler(), id, name, description); |
184 | 11211 | jorpiell | }else{
|
185 | 11683 | jorpiell | FolderWriter.start(writer, getErrorHandler(), id, name, description); |
186 | 11211 | jorpiell | } |
187 | } catch (IOException e) { |
||
188 | getErrorHandler().addError(e); |
||
189 | } |
||
190 | layerLevel++; |
||
191 | } |
||
192 | |||
193 | /*
|
||
194 | * (non-Javadoc)
|
||
195 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endLayer()
|
||
196 | */
|
||
197 | public void endLayer() { |
||
198 | layerLevel--; |
||
199 | try{
|
||
200 | if (layerLevel == 0){ |
||
201 | 11683 | jorpiell | DocumentWriter.end(writer, getErrorHandler()); |
202 | 11211 | jorpiell | }else{
|
203 | 11683 | jorpiell | FolderWriter.end(writer, getErrorHandler()); |
204 | 11211 | jorpiell | } |
205 | } catch (IOException e) { |
||
206 | getErrorHandler().addError(e); |
||
207 | } |
||
208 | } |
||
209 | |||
210 | /*
|
||
211 | * (non-Javadoc)
|
||
212 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startFeature(java.lang.String, java.lang.String)
|
||
213 | */
|
||
214 | 11300 | jorpiell | public void startFeature(String id, String name) { |
215 | 11211 | jorpiell | try{
|
216 | 11683 | jorpiell | PlaceMarkWriter.start(writer, getErrorHandler(), id, name); |
217 | 11211 | jorpiell | } catch (IOException e) { |
218 | getErrorHandler().addError(e); |
||
219 | } |
||
220 | } |
||
221 | |||
222 | /*
|
||
223 | * (non-Javadoc)
|
||
224 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endFeature()
|
||
225 | */
|
||
226 | public void endFeature() { |
||
227 | try{
|
||
228 | 11683 | jorpiell | PlaceMarkWriter.end(writer, getErrorHandler()); |
229 | 11211 | jorpiell | } catch (IOException e) { |
230 | getErrorHandler().addError(e); |
||
231 | } |
||
232 | } |
||
233 | |||
234 | /*
|
||
235 | * (non-Javadoc)
|
||
236 | * @see org.gvsig.gpe.writer.GPEWriterHandler#startPoint(java.lang.String, double, double, double, java.lang.String)
|
||
237 | */
|
||
238 | public void startPoint(String id, double x, double y, double z, String srs) { |
||
239 | try {
|
||
240 | 11683 | jorpiell | PointWriter.start(writer, getErrorHandler(), id, x, y, z); |
241 | 11211 | jorpiell | } catch (IOException e) { |
242 | getErrorHandler().addError(e); |
||
243 | } |
||
244 | } |
||
245 | |||
246 | /*
|
||
247 | * (non-Javadoc)
|
||
248 | * @see org.gvsig.gpe.writer.GPEWriterHandler#endPoint()
|
||
249 | */
|
||
250 | public void endPoint() { |
||
251 | try {
|
||
252 | 11683 | jorpiell | PointWriter.end(writer, getErrorHandler()); |
253 | 11211 | jorpiell | } catch (IOException e) { |
254 | getErrorHandler().addError(e); |
||
255 | } |
||
256 | } |
||
257 | |||
258 | /*
|
||
259 | * (non-Javadoc)
|
||
260 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startLineString(java.lang.String, double[], double[], double[], java.lang.String)
|
||
261 | */
|
||
262 | public void startLineString(String id, double[] x, double[] y, double[] z, String srs) { |
||
263 | try {
|
||
264 | 11683 | jorpiell | LineStringWriter.start(writer, getErrorHandler(), id, x, y, z); |
265 | 11211 | jorpiell | } catch (IOException e) { |
266 | getErrorHandler().addError(e); |
||
267 | } |
||
268 | } |
||
269 | |||
270 | /*
|
||
271 | * (non-Javadoc)
|
||
272 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endLineString()
|
||
273 | */
|
||
274 | public void endLineString() { |
||
275 | try {
|
||
276 | 11683 | jorpiell | LineStringWriter.end(writer, getErrorHandler()); |
277 | 11211 | jorpiell | } catch (IOException e) { |
278 | getErrorHandler().addError(e); |
||
279 | } |
||
280 | } |
||
281 | |||
282 | /*
|
||
283 | * (non-Javadoc)
|
||
284 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startLinearRing(java.lang.String, double[], double[], double[], java.lang.String)
|
||
285 | */
|
||
286 | public void startLinearRing(String id, double[] x, double[] y, double[] z, String srs) { |
||
287 | try {
|
||
288 | 11683 | jorpiell | LinearRingWriter.start(writer, getErrorHandler(), x, y, z); |
289 | 11211 | jorpiell | } catch (IOException e) { |
290 | getErrorHandler().addError(e); |
||
291 | } |
||
292 | } |
||
293 | |||
294 | /*
|
||
295 | * (non-Javadoc)
|
||
296 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endLinearRing()
|
||
297 | */
|
||
298 | public void endLinearRing() { |
||
299 | try {
|
||
300 | 11683 | jorpiell | LinearRingWriter.end(writer, getErrorHandler()); |
301 | 11211 | jorpiell | } catch (IOException e) { |
302 | getErrorHandler().addError(e); |
||
303 | } |
||
304 | } |
||
305 | |||
306 | /*
|
||
307 | * (non-Javadoc)
|
||
308 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startPolygon(java.lang.String, double[], double[], double[], java.lang.String)
|
||
309 | */
|
||
310 | public void startPolygon(String id, double[] x, double[] y, double[] z, String srs) { |
||
311 | try {
|
||
312 | 11683 | jorpiell | PolygonWriter.start(writer, getErrorHandler(), id, x, y, z); |
313 | 11211 | jorpiell | } catch (IOException e) { |
314 | getErrorHandler().addError(e); |
||
315 | } |
||
316 | } |
||
317 | |||
318 | /*
|
||
319 | * (non-Javadoc)
|
||
320 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endPolygon()
|
||
321 | */
|
||
322 | public void endPolygon() { |
||
323 | try {
|
||
324 | 11683 | jorpiell | PolygonWriter.end(writer, getErrorHandler()); |
325 | 11211 | jorpiell | } catch (IOException e) { |
326 | getErrorHandler().addError(e); |
||
327 | } |
||
328 | } |
||
329 | |||
330 | /*
|
||
331 | * (non-Javadoc)
|
||
332 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startInnerBoundary(java.lang.String, double[], double[], double[], java.lang.String)
|
||
333 | */
|
||
334 | public void startInnerBoundary(String id, double[] x, double[] y, double[] z, String srs) { |
||
335 | try {
|
||
336 | 11683 | jorpiell | InnerBoundaryIs.start(writer, getErrorHandler(), x, y, z); |
337 | 11211 | jorpiell | } catch (IOException e) { |
338 | getErrorHandler().addError(e); |
||
339 | } |
||
340 | } |
||
341 | |||
342 | /*
|
||
343 | * (non-Javadoc)
|
||
344 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endInnerBoundary()
|
||
345 | */
|
||
346 | public void endInnerBoundary() { |
||
347 | try {
|
||
348 | 11683 | jorpiell | InnerBoundaryIs.end(writer, getErrorHandler()); |
349 | 11211 | jorpiell | } catch (IOException e) { |
350 | getErrorHandler().addError(e); |
||
351 | } |
||
352 | } |
||
353 | 11512 | jorpiell | |
354 | /*
|
||
355 | * (non-Javadoc)
|
||
356 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startBbox(java.lang.String, double[], double[], double[], java.lang.String)
|
||
357 | */
|
||
358 | public void startBbox(String id, double[] x, double[] y, double[] z, String srs) { |
||
359 | try {
|
||
360 | 11683 | jorpiell | RegionWriter.start(writer, getErrorHandler(), y[1], y[0], x[1], x[0], z[0], z[1]); |
361 | 11512 | jorpiell | } catch (IOException e) { |
362 | getErrorHandler().addError(e); |
||
363 | } |
||
364 | } |
||
365 | |||
366 | /*
|
||
367 | * (non-Javadoc)
|
||
368 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endBbox()
|
||
369 | */
|
||
370 | public void endBbox() { |
||
371 | try {
|
||
372 | 11683 | jorpiell | RegionWriter.end(writer, getErrorHandler()); |
373 | 11512 | jorpiell | } catch (IOException e) { |
374 | getErrorHandler().addError(e); |
||
375 | } |
||
376 | } |
||
377 | 11666 | jorpiell | |
378 | /*
|
||
379 | * (non-Javadoc)
|
||
380 | * @see org.gvsig.gpe.writers.GPEWriterHandler#startMultiPoint(java.lang.String, java.lang.String)
|
||
381 | */
|
||
382 | public void startMultiGeometry(String id, String srs) { |
||
383 | try {
|
||
384 | MultiGeometryWriter.start(writer, getErrorHandler(), id); |
||
385 | } catch (IOException e) { |
||
386 | getErrorHandler().addError(e); |
||
387 | } |
||
388 | } |
||
389 | |||
390 | /*
|
||
391 | * (non-Javadoc)
|
||
392 | * @see org.gvsig.gpe.writers.GPEWriterHandler#endMuliPoint()
|
||
393 | */
|
||
394 | public void endMultiGeometry() { |
||
395 | try {
|
||
396 | MultiGeometryWriter.end(writer, getErrorHandler()); |
||
397 | } catch (IOException e) { |
||
398 | getErrorHandler().addError(e); |
||
399 | } |
||
400 | } |
||
401 | 11157 | jorpiell | } |