svn-gvsig-desktop / trunk / libraries / libRaster / src / org / gvsig / raster / dataset / serializer / GeoPointRmfSerializer.java @ 12522
History | View | Annotate | Download (16 KB)
1 |
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
---|---|
2 |
*
|
3 |
* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
|
4 |
*
|
5 |
* This program is free software; you can redistribute it and/or
|
6 |
* modify it under the terms of the GNU General Public License
|
7 |
* as published by the Free Software Foundation; either version 2
|
8 |
* of the License, or (at your option) any later version.
|
9 |
*
|
10 |
* This program is distributed in the hope that it will be useful,
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
* GNU General Public License for more details.
|
14 |
*
|
15 |
* You should have received a copy of the GNU General Public License
|
16 |
* along with this program; if not, write to the Free Software
|
17 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
18 |
*/
|
19 |
package org.gvsig.raster.dataset.serializer; |
20 |
|
21 |
import java.awt.geom.AffineTransform; |
22 |
import java.awt.geom.Point2D; |
23 |
import java.io.IOException; |
24 |
import java.io.Reader; |
25 |
import java.io.StringReader; |
26 |
import java.util.ArrayList; |
27 |
|
28 |
import org.gvsig.raster.dataset.io.rmf.ClassSerializer; |
29 |
import org.gvsig.raster.dataset.io.rmf.ParsingException; |
30 |
import org.gvsig.raster.datastruct.Extent; |
31 |
import org.gvsig.raster.datastruct.GeoPoint; |
32 |
import org.gvsig.raster.datastruct.ViewPortData; |
33 |
import org.kxml2.io.KXmlParser; |
34 |
import org.xmlpull.v1.XmlPullParserException; |
35 |
|
36 |
/**
|
37 |
* <P>
|
38 |
* Clase para convertir a XML la informaci?n de una lista de puntos de control y obtener esta informaci?n desde XML.
|
39 |
* Esta clase implementa el interfaz IRmfBlock con los m?todos de escritura y
|
40 |
* lectura. Estos ser?n utilizados por el gestor de ficheros RMF para escribir y
|
41 |
* leer datos.
|
42 |
* </P>
|
43 |
* <P>
|
44 |
* La estructura XML es la siguiente:
|
45 |
* </P>
|
46 |
* <P>
|
47 |
* \<GeoPoint n="0"\><BR>
|
48 |
* \<PixelX\>17.85306122448992\</PixelX\><BR>
|
49 |
* \<PixelY\>15.632653061225255\</PixelY\><BR>
|
50 |
* \<MapX\>4.62857142857149\</MapX\><BR>
|
51 |
* \<MapY\>1945.74693877551\</MapY\><BR>
|
52 |
* \<Active\>true\</Active\><BR>
|
53 |
* \<LeftCenterPoint\><BR>
|
54 |
* \<X\>5.104234119122292\</X\><BR>
|
55 |
* \<Y\>1945.2980070494339\</Y\><BR>
|
56 |
* \</LeftCenterPoint\><BR>
|
57 |
* \<RightCenterPoint\><BR>
|
58 |
* \<X\>4.62857142857149\</X\><BR>
|
59 |
* \<Y\>1945.74693877551\</Y\><BR>
|
60 |
* \</RightCenterPoint\><BR>
|
61 |
* \<LeftViewPort\><BR>
|
62 |
* \<Proj\>EPSG:23030\</Proj\><BR>
|
63 |
* \<Bbox\><BR>
|
64 |
* \<Px\>-244.94276588087763\</Px\><BR>
|
65 |
* \<Py\>1782.9341499065767\</Py\><BR>
|
66 |
* \<WCWidth\>500.094\</WCWidth\><BR>
|
67 |
* \<WCHeight\>324.7277142857142\</WCHeight\><BR>
|
68 |
* \</Bbox\><BR>
|
69 |
* \<Pdim\><BR>
|
70 |
* \<Width\>140\</Width\><BR>
|
71 |
* \<Height\>140</Height\><BR>
|
72 |
* \</Pdim\><BR>
|
73 |
* \<Zoom\>1.0\</Zoom\><BR>
|
74 |
* \</LeftViewPort\><BR>
|
75 |
* \<RightViewPort\><BR>
|
76 |
* \<Proj\>EPSG:23030\</Proj\><BR>
|
77 |
* \<Bbox\><BR>
|
78 |
* \<Px\>-245.41842857142848\</Px\><BR>
|
79 |
* \<Py\>1783.3830816326529\</Py\><BR>
|
80 |
* \<WCWidth\>500.09399999999994\</WCWidth\><BR>
|
81 |
* \<WCHeight\>324.72771428571446\</WCHeight\><BR>
|
82 |
* \</Bbox\><BR>
|
83 |
* \<Pdim\><BR>
|
84 |
* \<Width\>140\</Width\><BR>
|
85 |
* \<Height\>140\</Height\><BR>
|
86 |
* \</Pdim\><BR>
|
87 |
* \<Zoom\>1.0\</Zoom\><BR>
|
88 |
* \</RightViewPort\><BR>
|
89 |
* \</GeoPoint\><BR>
|
90 |
* </P>
|
91 |
*
|
92 |
* @version 23/04/2007
|
93 |
* @author Nacho Brodin (nachobrodin@gmail.com)
|
94 |
*
|
95 |
*/
|
96 |
public class GeoPointRmfSerializer extends ClassSerializer { |
97 |
|
98 |
//TAGS
|
99 |
public static final String MAIN_TAG = "GeoPoints"; |
100 |
public static final String GEOPOINT = "GeoPoint"; |
101 |
public static final String PIXELX = "PixelX"; |
102 |
public static final String PIXELY = "PixelY"; |
103 |
public static final String MAPX = "MapX"; |
104 |
public static final String MAPY = "MapY"; |
105 |
public static final String ACTIVE = "Active"; |
106 |
public static final String LEFTCP = "LeftCenterPoint"; |
107 |
public static final String RIGHTCP = "RightCenterPoint"; |
108 |
public static final String X = "X"; |
109 |
public static final String Y = "Y"; |
110 |
public static final String LEFTVP = "LeftViewPort"; |
111 |
public static final String RIGHTVP = "RightViewPort"; |
112 |
public static final String PROJ = "Proj"; |
113 |
public static final String BBOX = "Bbox"; |
114 |
public static final String PX = "Px"; |
115 |
public static final String PY = "Py"; |
116 |
public static final String WCWIDTH = "WCWidth"; |
117 |
public static final String WCHEIGHT = "WCHeight"; |
118 |
public static final String PDIM = "Pdim"; |
119 |
public static final String WIDTH = "Width"; |
120 |
public static final String HEIGHT = "Height"; |
121 |
public static final String ZOOM = "Zoom"; |
122 |
|
123 |
private GeoPoint[] gpList = null; |
124 |
|
125 |
/**
|
126 |
* Constructor. Asigna la tabla a serializar.
|
127 |
* @param ColorTable tabla a convertir en XML
|
128 |
*/
|
129 |
public GeoPointRmfSerializer(GeoPoint[] gp) { |
130 |
this.gpList = gp;
|
131 |
} |
132 |
|
133 |
/**
|
134 |
* Constructor.
|
135 |
*/
|
136 |
public GeoPointRmfSerializer() {
|
137 |
} |
138 |
|
139 |
/**
|
140 |
* Parsea un bloque correspondiente a un punto central
|
141 |
* @param gp
|
142 |
* @param parser
|
143 |
* @param parseableTag
|
144 |
* @throws NumberFormatException
|
145 |
* @throws XmlPullParserException
|
146 |
* @throws IOException
|
147 |
*/
|
148 |
private void parserCenterPoint(GeoPoint gp, KXmlParser parser, String parseableTag) throws NumberFormatException, XmlPullParserException, IOException { |
149 |
boolean end = false; |
150 |
boolean tagOk = false; |
151 |
int tag = parser.next();
|
152 |
while (!end) {
|
153 |
switch(tag) {
|
154 |
case KXmlParser.START_TAG:
|
155 |
if(parser.getName() != null){ |
156 |
if (parser.getName().compareTo(parseableTag) == 0) |
157 |
tagOk = true;
|
158 |
} |
159 |
break;
|
160 |
case KXmlParser.END_TAG:
|
161 |
if (parser.getName().compareTo(parseableTag) == 0) |
162 |
end = true;
|
163 |
break;
|
164 |
case KXmlParser.TEXT:
|
165 |
if(tagOk) {
|
166 |
if(parseableTag.compareTo("LeftCenterPoint") == 0) { |
167 |
double x = Double.valueOf(parserString(parser, X, null)).doubleValue(); |
168 |
double y = Double.valueOf(parserString(parser, Y, null)).doubleValue(); |
169 |
gp.leftCenterPoint = new Point2D.Double(x, y); |
170 |
} |
171 |
if(parseableTag.compareTo("RightCenterPoint") == 0) { |
172 |
double x = Double.valueOf(parserString(parser, X, null)).doubleValue(); |
173 |
double y = Double.valueOf(parserString(parser, Y, null)).doubleValue(); |
174 |
gp.rightCenterPoint = new Point2D.Double(x, y); |
175 |
} |
176 |
tagOk = false;
|
177 |
} |
178 |
break;
|
179 |
} |
180 |
if (!end)
|
181 |
tag = parser.next(); |
182 |
} |
183 |
} |
184 |
|
185 |
/**
|
186 |
* Parsea un bloque correspondiente a un punto central
|
187 |
* @param gp
|
188 |
* @param parser
|
189 |
* @param parseableTag
|
190 |
* @throws NumberFormatException
|
191 |
* @throws XmlPullParserException
|
192 |
* @throws IOException
|
193 |
*/
|
194 |
private void parserBoundingBox(GeoPoint gp, KXmlParser parser, String parseableTag) throws NumberFormatException, XmlPullParserException, IOException { |
195 |
boolean end = false; |
196 |
boolean tagOk = false; |
197 |
int tag = parser.next();
|
198 |
while (!end) {
|
199 |
switch(tag) {
|
200 |
case KXmlParser.START_TAG:
|
201 |
if(parser.getName() != null){ |
202 |
if (parser.getName().compareTo(BBOX) == 0) |
203 |
tagOk = true;
|
204 |
} |
205 |
break;
|
206 |
case KXmlParser.END_TAG:
|
207 |
if (parser.getName().compareTo(BBOX) == 0) |
208 |
end = true;
|
209 |
break;
|
210 |
case KXmlParser.TEXT:
|
211 |
if(tagOk) {
|
212 |
if(parseableTag.compareTo("LeftViewPort") == 0) { |
213 |
double x = Double.valueOf(parserString(parser, PX, null)).doubleValue(); |
214 |
double y = Double.valueOf(parserString(parser, PY, null)).doubleValue(); |
215 |
double w = Double.valueOf(parserString(parser, WCWIDTH, null)).doubleValue(); |
216 |
double h = Double.valueOf(parserString(parser, WCHEIGHT, null)).doubleValue(); |
217 |
gp.leftViewPort.setExtent(new Extent(x, y, x + w, y - h));
|
218 |
} |
219 |
if(parseableTag.compareTo("RightViewPort") == 0) { |
220 |
double x = Double.valueOf(parserString(parser, PX, null)).doubleValue(); |
221 |
double y = Double.valueOf(parserString(parser, PY, null)).doubleValue(); |
222 |
double w = Double.valueOf(parserString(parser, WCWIDTH, null)).doubleValue(); |
223 |
double h = Double.valueOf(parserString(parser, WCHEIGHT, null)).doubleValue(); |
224 |
gp.rightViewPort.setExtent(new Extent(x, y, x + w, y - h));
|
225 |
} |
226 |
tagOk = false;
|
227 |
} |
228 |
break;
|
229 |
} |
230 |
if (!end)
|
231 |
tag = parser.next(); |
232 |
} |
233 |
} |
234 |
|
235 |
/**
|
236 |
* Parsea un bloque correspondiente a un punto central
|
237 |
* @param gp
|
238 |
* @param parser
|
239 |
* @param parseableTag
|
240 |
* @throws NumberFormatException
|
241 |
* @throws XmlPullParserException
|
242 |
* @throws IOException
|
243 |
*/
|
244 |
private void parserDimension(GeoPoint gp, KXmlParser parser, String parseableTag) throws NumberFormatException, XmlPullParserException, IOException { |
245 |
boolean end = false; |
246 |
boolean tagOk = false; |
247 |
int tag = parser.next();
|
248 |
while (!end) {
|
249 |
switch(tag) {
|
250 |
case KXmlParser.START_TAG:
|
251 |
if(parser.getName() != null){ |
252 |
if (parser.getName().compareTo(PDIM) == 0) |
253 |
tagOk = true;
|
254 |
} |
255 |
break;
|
256 |
case KXmlParser.END_TAG:
|
257 |
if (parser.getName().compareTo(PDIM) == 0) |
258 |
end = true;
|
259 |
break;
|
260 |
case KXmlParser.TEXT:
|
261 |
if(tagOk) {
|
262 |
if(parseableTag.compareTo("LeftViewPort") == 0) { |
263 |
double x = Double.valueOf(parserString(parser, WIDTH, null)).doubleValue(); |
264 |
double y = Double.valueOf(parserString(parser, HEIGHT, null)).doubleValue(); |
265 |
//gp.leftViewPort.setSize(x, y);
|
266 |
} |
267 |
if(parseableTag.compareTo("RightViewPort") == 0) { |
268 |
double x = Double.valueOf(parserString(parser, WIDTH, null)).doubleValue(); |
269 |
double y = Double.valueOf(parserString(parser, HEIGHT, null)).doubleValue(); |
270 |
//gp.rightViewPort.setSize(x, y);
|
271 |
} |
272 |
tagOk = false;
|
273 |
} |
274 |
break;
|
275 |
} |
276 |
if (!end)
|
277 |
tag = parser.next(); |
278 |
} |
279 |
} |
280 |
|
281 |
/**
|
282 |
* Parsea un viewport contenido en un punto de control
|
283 |
* @param gp
|
284 |
* @param parser
|
285 |
* @param parseableTag
|
286 |
* @throws XmlPullParserException
|
287 |
* @throws IOException
|
288 |
*/
|
289 |
private void parserViewPort(GeoPoint gp, KXmlParser parser, String parseableTag) throws XmlPullParserException, IOException { |
290 |
boolean end = false; |
291 |
if(parseableTag.compareTo("LeftViewPort") == 0) { |
292 |
gp.leftViewPort = new ViewPortData();
|
293 |
gp.leftViewPort.mat = new AffineTransform(); |
294 |
} |
295 |
if(parseableTag.compareTo("RightViewPort") == 0) { |
296 |
gp.rightViewPort = new ViewPortData();
|
297 |
gp.rightViewPort.mat = new AffineTransform(); |
298 |
} |
299 |
int tag = parser.next();
|
300 |
while (!end) {
|
301 |
switch(tag) {
|
302 |
case KXmlParser.START_TAG:
|
303 |
if(parser.getName() != null){ |
304 |
if (parser.getName().compareTo(parseableTag) == 0) { |
305 |
String proj = parserString(parser, PROJ, null); |
306 |
parserBoundingBox(gp, parser, parseableTag); |
307 |
parserDimension(gp, parser, parseableTag); |
308 |
if(parseableTag.compareTo("LeftViewPort") == 0) |
309 |
gp.zoomLeft = Double.valueOf(parserString(parser, ZOOM, null)).doubleValue(); |
310 |
if(parseableTag.compareTo("RightViewPort") == 0) |
311 |
gp.zoomRight = Double.valueOf(parserString(parser, ZOOM, null)).doubleValue(); |
312 |
} |
313 |
} |
314 |
break;
|
315 |
case KXmlParser.END_TAG:
|
316 |
if (parser.getName().compareTo(parseableTag) == 0) |
317 |
end = true;
|
318 |
break;
|
319 |
case KXmlParser.TEXT:
|
320 |
break;
|
321 |
} |
322 |
if (!end)
|
323 |
tag = parser.next(); |
324 |
} |
325 |
} |
326 |
|
327 |
/**
|
328 |
* Parsea un punto de control completo
|
329 |
* @param gp
|
330 |
* @param parser
|
331 |
* @param xml
|
332 |
* @param tag
|
333 |
* @throws XmlPullParserException
|
334 |
* @throws IOException
|
335 |
*/
|
336 |
public void parserGeoPoint(GeoPoint gp, KXmlParser parser, String xml, int tag) throws XmlPullParserException, IOException { |
337 |
double px = Double.parseDouble(parserString(parser, PIXELX, null)); |
338 |
double py = Double.parseDouble(parserString(parser, PIXELY, null)); |
339 |
gp.pixelPoint = new Point2D.Double(px, py); |
340 |
double mx = Double.parseDouble(parserString(parser, MAPX, null)); |
341 |
double my = Double.parseDouble(parserString(parser, MAPY, null)); |
342 |
gp.mapPoint = new Point2D.Double(mx, my); |
343 |
gp.active = Boolean.valueOf(parserString(parser, ACTIVE, null)).booleanValue(); |
344 |
parserCenterPoint(gp, parser, "LeftCenterPoint");
|
345 |
parserCenterPoint(gp, parser, "RightCenterPoint");
|
346 |
parserViewPort(gp, parser, "LeftViewPort");
|
347 |
parserViewPort(gp, parser, "RightViewPort");
|
348 |
} |
349 |
|
350 |
/*
|
351 |
* (non-Javadoc)
|
352 |
* @see org.gvsig.raster.dataset.io.rmf.IRmfBlock#read(java.lang.String)
|
353 |
*/
|
354 |
public void read(String xml) throws ParsingException { |
355 |
ArrayList list = new ArrayList(); |
356 |
GeoPoint gp = null;
|
357 |
boolean init = false; |
358 |
int nPoint = -1; |
359 |
boolean tagOk = false; |
360 |
|
361 |
KXmlParser parser = new KXmlParser();
|
362 |
Reader reader = new StringReader(xml); |
363 |
try {
|
364 |
parser.setInput(reader); |
365 |
} catch (XmlPullParserException e) {
|
366 |
throw new ParsingException(xml); |
367 |
} |
368 |
try {
|
369 |
int tag = parser.nextTag();
|
370 |
|
371 |
if ( parser.getEventType() != KXmlParser.END_DOCUMENT ){
|
372 |
parser.require(KXmlParser.START_TAG, null, MAIN_TAG);
|
373 |
while(tag != KXmlParser.END_DOCUMENT) {
|
374 |
switch(tag) {
|
375 |
case KXmlParser.START_TAG:
|
376 |
if (parser.getName().compareTo(MAIN_TAG) == 0) |
377 |
init = true;
|
378 |
if(init) {
|
379 |
if (parser.getName().compareTo(GEOPOINT) == 0) { |
380 |
gp = new GeoPoint();
|
381 |
tagOk = true;
|
382 |
nPoint++; |
383 |
} |
384 |
} |
385 |
break;
|
386 |
case KXmlParser.END_TAG:
|
387 |
break;
|
388 |
case KXmlParser.TEXT:
|
389 |
if(tagOk) {
|
390 |
parserGeoPoint(gp, parser, xml,tag); |
391 |
tagOk = false;
|
392 |
list.add(gp); |
393 |
} |
394 |
break;
|
395 |
} |
396 |
tag = parser.next(); |
397 |
} |
398 |
parser.require(KXmlParser.END_DOCUMENT, null, null); |
399 |
} |
400 |
|
401 |
} catch (XmlPullParserException e) {
|
402 |
throw new ParsingException(xml); |
403 |
} catch (IOException e) { |
404 |
throw new ParsingException(xml); |
405 |
} |
406 |
|
407 |
gpList = new GeoPoint[list.size()];
|
408 |
for (int i = 0; i < list.size(); i++) |
409 |
gpList[i] = (GeoPoint)list.get(i); |
410 |
|
411 |
} |
412 |
|
413 |
/*
|
414 |
* (non-Javadoc)
|
415 |
* @see org.gvsig.raster.dataset.io.rmf.IRmfBlock#write()
|
416 |
*/
|
417 |
public String write() { |
418 |
StringBuffer b = new StringBuffer(); |
419 |
|
420 |
b.append("<" + MAIN_TAG + ">\n"); |
421 |
for (int i = 0; i < gpList.length; i++) { |
422 |
b.append("\t<" + GEOPOINT + " n=\"" + i + "\">\n"); |
423 |
putProperty(b, PIXELX, gpList[i].pixelPoint.getX(), 2);
|
424 |
putProperty(b, PIXELY, gpList[i].pixelPoint.getY(), 2);
|
425 |
putProperty(b, MAPX, gpList[i].mapPoint.getX(), 2);
|
426 |
putProperty(b, MAPY, gpList[i].mapPoint.getY(), 2);
|
427 |
putProperty(b, ACTIVE, String.valueOf(gpList[i].active), 2); |
428 |
|
429 |
b.append("\t\t<" + LEFTCP + ">\n"); |
430 |
putProperty(b, X, gpList[i].leftCenterPoint.getX(), 3);
|
431 |
putProperty(b, Y, gpList[i].leftCenterPoint.getY(), 3);
|
432 |
b.append("\t\t</" + LEFTCP + ">\n"); |
433 |
|
434 |
b.append("\t\t<" + RIGHTCP + ">\n"); |
435 |
putProperty(b, X, gpList[i].rightCenterPoint.getX(), 3);
|
436 |
putProperty(b, Y, gpList[i].rightCenterPoint.getY(), 3);
|
437 |
b.append("\t\t</" + RIGHTCP + ">\n"); |
438 |
|
439 |
b.append("\t\t<" + LEFTVP + ">\n"); |
440 |
|
441 |
String proj = ""; |
442 |
if(gpList[i].leftViewPort.getProjection() != null) |
443 |
proj = gpList[i].leftViewPort.getProjection().getAbrev(); |
444 |
putProperty(b, PROJ, proj, 3);
|
445 |
b.append("\t\t\t<" + BBOX + ">\n"); |
446 |
putProperty(b, PX, gpList[i].leftViewPort.getExtent().getMin().getX(), 4);
|
447 |
putProperty(b, PY, gpList[i].leftViewPort.getExtent().getMax().getY(), 4);
|
448 |
putProperty(b, WCWIDTH, gpList[i].leftViewPort.getExtent().width(), 4);
|
449 |
putProperty(b, WCHEIGHT, gpList[i].leftViewPort.getExtent().height(), 4);
|
450 |
b.append("\t\t\t</" + BBOX + ">\n"); |
451 |
|
452 |
b.append("\t\t\t<" + PDIM + ">\n"); |
453 |
putProperty(b, WIDTH, GeoPoint.WIDTH_WINDOW, 4);
|
454 |
putProperty(b, HEIGHT, GeoPoint.HEIGHT_WINDOW, 4);
|
455 |
b.append("\t\t\t</" + PDIM + ">\n"); |
456 |
putProperty(b, ZOOM, gpList[i].zoomLeft, 3);
|
457 |
|
458 |
b.append("\t\t</" + LEFTVP + ">\n"); |
459 |
|
460 |
b.append("\t\t<" + RIGHTVP + ">\n"); |
461 |
|
462 |
proj = "";
|
463 |
if(gpList[i].rightViewPort.getProjection() != null) |
464 |
proj = gpList[i].rightViewPort.getProjection().getAbrev(); |
465 |
putProperty(b, PROJ, proj, 3);
|
466 |
b.append("\t\t\t<" + BBOX + ">\n"); |
467 |
putProperty(b, PX, gpList[i].rightViewPort.getExtent().getMin().getX(), 4);
|
468 |
putProperty(b, PY, gpList[i].rightViewPort.getExtent().getMax().getY(), 4);
|
469 |
putProperty(b, WCWIDTH, gpList[i].rightViewPort.getExtent().width(), 4);
|
470 |
putProperty(b, WCHEIGHT, gpList[i].rightViewPort.getExtent().height(), 4);
|
471 |
b.append("\t\t\t</" + BBOX + ">\n"); |
472 |
|
473 |
b.append("\t\t\t<" + PDIM + ">\n"); |
474 |
putProperty(b, WIDTH, GeoPoint.WIDTH_WINDOW, 4);
|
475 |
putProperty(b, HEIGHT, GeoPoint.HEIGHT_WINDOW, 4);
|
476 |
b.append("\t\t\t</" + PDIM + ">\n"); |
477 |
putProperty(b, ZOOM, gpList[i].zoomRight, 3);
|
478 |
|
479 |
b.append("\t\t</" + RIGHTVP + ">\n"); |
480 |
|
481 |
b.append("\t</" + GEOPOINT + ">\n"); |
482 |
} |
483 |
b.append("</" + MAIN_TAG + ">\n"); |
484 |
return b.toString();
|
485 |
} |
486 |
|
487 |
/*
|
488 |
* (non-Javadoc)
|
489 |
* @see org.gvsig.raster.dataset.io.rmf.IRmfBlock#getResult()
|
490 |
*/
|
491 |
public Object getResult() { |
492 |
return gpList;
|
493 |
} |
494 |
|
495 |
/*
|
496 |
* (non-Javadoc)
|
497 |
* @see org.gvsig.raster.dataset.io.rmf.IRmfBlock#getMainTag()
|
498 |
*/
|
499 |
public String getMainTag() { |
500 |
return MAIN_TAG;
|
501 |
} |
502 |
} |