Statistics
| Revision:

root / trunk / libraries / libRemoteServices / src / org / gvsig / remoteClient / wcs / wcs_1_0_0 / WCSLayer1_0_0.java @ 4259

History | View | Annotate | Download (24.9 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 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
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
/**
42
 * 
43
 */
44
package org.gvsig.remoteClient.wcs.wcs_1_0_0;
45

    
46

    
47
import java.io.IOException;
48

    
49
import org.gvsig.remoteClient.utils.BoundaryBox;
50
import org.gvsig.remoteClient.utils.DescribeCoverageTags;
51
import org.gvsig.remoteClient.wcs.WCSLayer;
52
import org.kxml2.io.KXmlParser;
53
import org.xmlpull.v1.XmlPullParserException;
54

    
55
/**
56
 * @author jaume
57
 *
58
 */
59
public class WCSLayer1_0_0 extends WCSLayer{
60

    
61
    
62
        /* (non-Javadoc)
63
     * @see org.gvsig.remoteClient.wcs.WCSLayer#parse(org.kxml2.io.KXmlParser)
64
     */
65
    public void parse(KXmlParser parser) throws XmlPullParserException, IOException {
66
        int currentTag;
67
        String value;
68
        boolean end = false;
69
        
70
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.COVERAGE_OFFERING);
71
        currentTag = parser.next();
72
        
73
        while (!end) 
74
        {
75
             switch(currentTag)
76
             {
77
                case KXmlParser.START_TAG:
78
                    if (parser.getName().compareTo(DescribeCoverageTags.NAME)==0)
79
                    {
80
                        value = parser.nextText();
81
                        if (value != null) setName(value);  
82
                    } else if (parser.getName().compareTo(DescribeCoverageTags.LABEL)==0){
83
                        value = parser.nextText();
84
                        if (value != null) setTitle(value);
85
                    } else if (parser.getName().compareTo(DescribeCoverageTags.LONLAT_ENVELOPE)==0){
86
                            BoundaryBox bBox = parseLonLatGMLEnvelope(parser);
87
                        bBox.setSrs(DescribeCoverageTags.WGS84);
88
                        addBBox(bBox);
89
                        setLonLatBox(bBox);
90
                    } else if (parser.getName().compareTo(DescribeCoverageTags.DOMAINSET) == 0) {
91
                            parseDomainSet(parser);
92
                    } else if (parser.getName().compareTo(DescribeCoverageTags.RANGESET) == 0) {
93
                            parseRangeSet(parser);
94
                    } else if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTEDCRSS) == 0) {
95
                            parseSupportedCRSS(parser);
96
                    } else if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTEDFORMATS) == 0) {
97
                            setNativeFormat(parser.getAttributeValue("", DescribeCoverageTags.NATIVEFORMAT));
98
                            parser.nextTag();
99
                            parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.FORMATS);
100
                            String[] formats = parser.nextText().split(SEPARATOR);
101
                            for (int i = 0; i < formats.length; i++) {
102
                                                        addFormat(formats[i]);
103
                                                }
104
                    } else {
105
                            if (!parser.getName().equals("rangeSet")) // just a patch to avoid too much messages
106
                                    System.out.println("Skiped "+parser.getName());
107
                    }
108
                    
109
                    break;
110
                case KXmlParser.END_TAG:
111
                    if (parser.getName().compareTo(DescribeCoverageTags.COVERAGE_OFFERING) == 0)
112
                        end = true;
113
                    break;
114
                case KXmlParser.TEXT:
115
                        if (parser.getName()!=null)
116
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
117
                        break;
118
             }
119
             currentTag = parser.next();
120
        }
121
        
122
        
123
    }
124

    
125
    private void parseSupportedCRSS(KXmlParser parser) throws XmlPullParserException, IOException {
126
            int currentTag;
127
            boolean end = false;
128
            
129
            parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.SUPPORTEDCRSS);
130
            currentTag = parser.next();
131
            
132
            while (!end) 
133
            {
134
                    switch(currentTag)
135
                    {
136
                            case KXmlParser.START_TAG:
137
                                    if (parser.getName().compareTo(DescribeCoverageTags.REQUESTRESPONSECRSS)==0) {
138
                                            String[] values = parser.nextText().split(SEPARATOR);
139
                                            for (int i = 0; i < values.length; i++) {
140
                                                        addSRSs(values[i]);
141
                                                }
142
                                    }
143
                                    else if (parser.getName().compareTo(DescribeCoverageTags.NATIVECRS) == 0) {
144
                                            setNativeSRS(parser.nextText());
145
                                    } else if (parser.getName().compareTo(DescribeCoverageTags.REQUESTCRSS) == 0) {
146
                                            // TODO
147
                            System.out.println("Skiped "+parser.getName());
148
                                    } else if (parser.getName().compareTo(DescribeCoverageTags.RESPONSECRSS) == 0) {
149
                                            // TODO
150
                            System.out.println("Skiped "+parser.getName());
151
                    } else {
152
                            System.out.println("Unrecognized "+parser.getName());
153
                                    }
154
                                            
155
                                    break;
156
                            case KXmlParser.END_TAG:
157
                                    if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTEDCRSS) == 0)
158
                                            end = true;
159
                                    break;
160
                            case KXmlParser.TEXT: 
161
                                    if (parser.getName()!=null)
162
                                            System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
163
                                    break;
164
                    }
165
                    currentTag = parser.next();
166
            } 
167
    }
168

    
169
        private void parseRangeSet(KXmlParser parser) throws XmlPullParserException, IOException {
170
                int currentTag;
171
        boolean end = false;
172
        
173
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.RANGESET);
174
        currentTag = parser.next();
175
        
176
        while (!end) 
177
        {
178
             switch(currentTag)
179
             {
180
                case KXmlParser.START_TAG:
181
                    if (parser.getName().compareTo(DescribeCoverageTags.NAME)==0)
182
                            setRangeSetName(parser.nextText());
183
                    else if (parser.getName().compareTo(DescribeCoverageTags.LABEL) == 0)
184
                            setRangeSetLabel(parser.nextText());
185
                    else if (parser.getName().compareToIgnoreCase(DescribeCoverageTags.AXISDESCRIPTION) == 0) {
186
                            // Reading all axe description
187
                            int axisTag = parser.nextTag();
188
                            boolean endAxe = false;
189
                            while (!endAxe) {
190
                            switch(axisTag)
191
                            {
192
                               case KXmlParser.START_TAG:
193
                                       if (parser.getName().compareTo(DescribeCoverageTags.AXISDESCRIPTION)==0) {
194
                                               AxisDescription as = parseAxisDescription(parser);
195
                                               axisPool.put(as.getName(), as);
196
                                       }
197
                                       break;
198
                               case KXmlParser.END_TAG:
199
                                   if (parser.getName().compareToIgnoreCase(DescribeCoverageTags.AXISDESCRIPTION) == 0)
200
                                           endAxe = true;
201
                                   break;
202
                               case KXmlParser.TEXT: 
203
                                       if (parser.getName()!=null)
204
                                               System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
205
                                       break;
206
                            }
207
                            axisTag = parser.next();
208
                            }        
209
                    } else {
210
                            System.out.println("Unrecognized "+parser.getName());
211
                    }
212
                    break;
213
                case KXmlParser.END_TAG:
214
                    if (parser.getName().compareTo(DescribeCoverageTags.RANGESET) == 0)
215
                        end = true;
216
                    break;
217
                case KXmlParser.TEXT: 
218
                        if (parser.getName()!=null)
219
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
220
                        break;
221
             }
222
             currentTag = parser.next();
223
        }
224
        }
225

    
226
        private AxisDescription parseAxisDescription(KXmlParser parser) throws XmlPullParserException, IOException {
227
                int currentTag;
228
        boolean end = false;
229
        
230
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.AXISDESCRIPTION);
231
        AxisDescription as = new AxisDescription();
232
        currentTag = parser.next();
233
        
234
        while (!end) 
235
        {
236
             switch(currentTag)
237
             {
238
                case KXmlParser.START_TAG:
239
                        if (parser.getName().compareTo(DescribeCoverageTags.NAME) == 0) {
240
                                as.setName(parser.nextText());
241
                        } else if (parser.getName().compareTo(DescribeCoverageTags.LABEL) == 0) {
242
                                as.setLabel(parser.nextText());
243
                        } else if (parser.getName().compareTo(DescribeCoverageTags.VALUES) == 0) {
244
                                int valuesTag = parser.nextTag();
245
                                boolean valuesEnd = false;
246
                                while (!valuesEnd) {
247
                                        switch(valuesTag)        {
248
                                                case KXmlParser.START_TAG:
249
                                                        if (parser.getName().compareTo(DescribeCoverageTags.SINGLEVALUE) == 0) {
250
                                                                as.addSingleValues(parser.nextText());
251
                                                        } else if (parser.getName().compareTo(DescribeCoverageTags.INTERVAL) == 0) {
252
                                                                as.setInterval(parser.nextText());
253
                                                        } else if (parser.getName().compareTo(DescribeCoverageTags.DEFAULT) == 0) {
254
                                                                as.setDefaultValue(parser.nextText());
255
                                                        }
256
                                                        break;
257
                                                case KXmlParser.END_TAG:
258
                                                        if (parser.getName().compareTo(DescribeCoverageTags.VALUES) == 0)
259
                                                                valuesEnd = true;
260
                                                        break;
261
                                                case KXmlParser.TEXT: 
262
                                                        if (parser.getName()!=null)
263
                                                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
264
                                                        break;
265
                                                }
266
                                        valuesTag = parser.next();
267
                                }
268
                        } else if (parser.getName().compareTo(DescribeCoverageTags.NULLVALUES)==0) {
269
                                // TODO
270
                                System.err.println("Missing NULL VALUE PARSING on WCS 1.0.0 Client");
271
                    } else {
272
                            System.out.println("Unrecognized "+parser.getName());
273
                        }
274
                                
275
                        break;
276
                case KXmlParser.END_TAG:
277
                    if (parser.getName().compareToIgnoreCase(DescribeCoverageTags.AXISDESCRIPTION) == 0)
278
                        end = true;
279
                    break;
280
                case KXmlParser.TEXT: 
281
                        if (parser.getName()!=null)
282
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
283
                        break;
284
             }
285
             currentTag = parser.next();
286
        }    
287
        return as;
288
        }
289

    
290
        private void parseDomainSet(KXmlParser parser) throws XmlPullParserException, IOException {
291
                int currentTag;
292
        boolean end = false;
293
        
294
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.DOMAINSET);
295
        currentTag = parser.next();
296
        
297
        while (!end) 
298
        {
299
             switch(currentTag)
300
             {
301
                case KXmlParser.START_TAG:
302
                    if (parser.getName().compareTo(DescribeCoverageTags.SPATIALDOMAIN)==0)
303
                    {
304
                            parseSpatialDomain(parser);
305
                    } else if (parser.getName().compareTo(DescribeCoverageTags.TEMPORALDOMAIN)==0) {
306
                            parseTemporalDomain(parser);
307
                    }
308
                    break;
309
                case KXmlParser.END_TAG:
310
                    if (parser.getName().compareTo(DescribeCoverageTags.DOMAINSET) == 0)
311
                        end = true;
312
                    break;
313
                case KXmlParser.TEXT: 
314
                        if (parser.getName()!=null)
315
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
316
                        break;
317
             }
318
             currentTag = parser.next();
319
        }
320
        }
321

    
322
        private void parseTemporalDomain(KXmlParser parser) throws XmlPullParserException, IOException {
323
                int currentTag;
324
        boolean end = false;
325
        
326
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.TEMPORALDOMAIN);
327
        currentTag = parser.next();
328
        
329
        while (!end) 
330
        {
331
             switch(currentTag)
332
             {
333
                case KXmlParser.START_TAG:
334
                        if (parser.getName().compareTo(DescribeCoverageTags.GML_TIMEPOSITION) == 0) {
335
                                timePositions.add(parser.nextText());
336
                        } else if (parser.getName().compareTo(DescribeCoverageTags.TIMEPERIOD) == 0) {
337
                                boolean timePeriodEnd = false;
338
                                int timePeriodTag = parser.next();
339
                                String[] timePeriod = new String[3];
340
                                while (!timePeriodEnd) {
341
                                        switch (timePeriodTag) {
342
                                        case KXmlParser.START_TAG:
343
                                                if (parser.getName().compareTo(DescribeCoverageTags.BEGINPOSITION) == 0) {
344
                                                        timePeriod[0] = parser.nextText();
345
                                                } else if (parser.getName().compareTo(DescribeCoverageTags.ENDPOSITION) == 0) {
346
                                                        timePeriod[1] = parser.nextText();
347
                                                } else if (parser.getName().compareTo(DescribeCoverageTags.TIMERESOLUTION) == 0) {
348
                                                        timePeriod[2] = parser.nextText();
349
                                } else {
350
                                        System.out.println("Unrecognized "+parser.getName());
351
                                                }
352
                                                break;
353
                                        case KXmlParser.END_TAG:
354
                                                if (parser.getName().compareTo(DescribeCoverageTags.TEMPORALDOMAIN) == 0)
355
                                                        end = true;
356
                                                break;
357
                                        case KXmlParser.TEXT:
358
                                                if (parser.getName()!=null)
359
                                                        System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
360
                                                break;
361
                                        }
362
                                        timePeriodTag = parser.next();
363
                                }
364
                                super.timePeriod = "";
365
                                for (int i = 0; i < timePeriod.length-1; i++) {
366
                                        if (timePeriod[i]!=null) {
367
                                                super.timePeriod += timePeriod[i];
368
                                        }
369
                                        if (timePeriod[i+1]!=null) {
370
                                                super.timePeriod += "/";
371
                                        }
372
                                                }
373
                    } else {
374
                            System.out.println("Unrecognized "+parser.getName());
375
                        }
376
                        break;
377
                case KXmlParser.END_TAG:
378
                    if (parser.getName().compareTo(DescribeCoverageTags.TEMPORALDOMAIN) == 0)
379
                        end = true;
380
                    break;
381
                case KXmlParser.TEXT: 
382
                        if (parser.getName()!=null)
383
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
384
                        break;
385
             }
386
             currentTag = parser.next();
387
        }
388
        }
389

    
390
        private void parseSpatialDomain(KXmlParser parser) throws XmlPullParserException, IOException {
391
                int currentTag;
392
        boolean end = false;
393
        
394
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.SPATIALDOMAIN);
395
        currentTag = parser.next();
396
        
397
        while (!end) 
398
        {
399
             switch(currentTag)
400
             {
401
                case KXmlParser.START_TAG:
402
                    if (parser.getName().compareTo(DescribeCoverageTags.GML_ENVELOPE)==0) {
403
                            BoundaryBox bBox = parseGMLEnvelope(parser);
404
                            addBBox(bBox);
405
                    } else if (parser.getName().compareTo(DescribeCoverageTags.RECTIFIEDGRID)==0) {
406
                            parseRectifiedGrid(parser);
407
                    } else {
408
                            System.out.println("Unrecognized "+parser.getName());
409
                    }
410
                    break;
411
                case KXmlParser.END_TAG:
412
                    if (parser.getName().compareTo(DescribeCoverageTags.SPATIALDOMAIN) == 0)
413
                        end = true;
414
                    break;
415
                case KXmlParser.TEXT: 
416
                        if (parser.getName()!=null)
417
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
418
                        break;
419
             }
420
             currentTag = parser.next();
421
        }
422
         }
423

    
424
        private void parseRectifiedGrid(KXmlParser parser) throws XmlPullParserException, IOException {
425
                int currentTag;
426
                String value;
427
                boolean end = false;
428
                parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.RECTIFIEDGRID);
429
                rg = new RectifiedGrid(Integer.parseInt(parser.getAttributeValue("", DescribeCoverageTags.DIMENSION)));
430
                
431
                currentTag = parser.next();
432
                
433
                while (!end) 
434
                {
435
                        switch(currentTag)
436
                        {
437
                                case KXmlParser.START_TAG:
438
                                        if (parser.getName().compareTo(DescribeCoverageTags.GML_LIMITS) == 0) {
439
                                                parser.nextTag();
440
                                                if (parser.getName().compareTo(DescribeCoverageTags.GML_GRIDENVELOPE)==0) {
441
                                                        boolean gridEnd = false;
442
                                                        int gridCurrentTag = parser.next();
443
                                                        while (!gridEnd)
444
                                                        {
445
                                                                switch (gridCurrentTag) {
446
                                                                case KXmlParser.START_TAG:
447
                                                                        
448
                                                                        if (parser.getName().compareTo(DescribeCoverageTags.GML_LOW) == 0) {
449
                                                                                value = parser.nextText();
450
                                                                                String[] ss = value.split(SEPARATOR);
451
                                                                                int[] limits = new int[ss.length];
452
                                                                                for (int i = 0; i < limits.length; i++) {
453
                                                                                        limits[i] = Integer.parseInt(ss[i]);
454
                                                                                }
455
                                                                                rg.addLowGridEnvelopLimit(limits);
456
                                                                        } else if (parser.getName().compareTo(DescribeCoverageTags.GML_HIGH) == 0) {
457
                                                                                value = parser.nextText();
458
                                                                                String[] ss = value.split(SEPARATOR);
459
                                                                                int[] limits = new int[ss.length];
460
                                                                                for (int i = 0; i < limits.length; i++) {
461
                                                                                        limits[i] = Integer.parseInt(ss[i]);
462
                                                                                }
463
                                                                                rg.addHighGridEnvelopLimit(limits);
464
                                                    } else {
465
                                                            System.out.println("Unrecognized "+parser.getName());
466
                                                    }
467
                                                                        break;
468
                                                                case KXmlParser.END_TAG:
469
                                                                        if (parser.getName().compareTo(DescribeCoverageTags.GML_GRIDENVELOPE) == 0)
470
                                                                                gridEnd = true;
471
                                                                        break;
472
                                                                case KXmlParser.TEXT: 
473
                                                                        if (parser.getName()!=null)
474
                                                                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
475
                                                                        break;
476
                                                                }
477
                                                                gridCurrentTag = parser.next();
478
                                                        }
479
                                                } 
480
                                        } else if (parser.getName().compareTo(DescribeCoverageTags.GML_AXISNAME)==0) {
481
                                                rg.addAxisName(parser.nextText());
482
                                        } else if (parser.getName().compareTo(DescribeCoverageTags.GML_ORIGIN)==0) {
483
                                                parser.nextTag();
484
                                                if (parser.getName().compareTo(DescribeCoverageTags.GML_POS)==0) {
485
                                                        value = parser.nextText();
486
                                                        String[] ss = value.split(SEPARATOR);
487
                                                        double[] ori = new double[ss.length];
488
                                                        for (int i = 0; i < ori.length; i++) {
489
                                                                ori[i] = Double.parseDouble(ss[i]);
490
                                                        }
491
                                                        rg.setOrigin(ori);
492
                                                }
493
                                        } else if (parser.getName().compareTo(DescribeCoverageTags.OFFSETVECTOR) == 0) {
494
                                                value = parser.nextText();
495
                                                String[] ss = value.split(SEPARATOR);
496
                                                double[] offset = new double[ss.length];
497
                                                for (int i = 0; i < offset.length; i++) {
498
                                                        offset[i] = Double.parseDouble(ss[i]);
499
                                                }
500
                                                rg.addToOffsetVector(offset);
501
                    } else {
502
                            System.out.println("Unrecognized "+parser.getName());
503
                                        }
504
                                        break;
505
                                case KXmlParser.END_TAG:
506
                                        if (parser.getName().compareTo(DescribeCoverageTags.RECTIFIEDGRID) == 0)
507
                                                end = true;
508
                                        break;
509
                                case KXmlParser.TEXT: 
510
                                        if (parser.getName()!=null)
511
                                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
512
                                        break;
513
                        }
514
                        currentTag = parser.next();
515
                }
516
        }   
517

    
518

    
519
        private BoundaryBox parseLonLatGMLEnvelope(KXmlParser parser) throws XmlPullParserException, IOException {
520
                BoundaryBox bBox = new BoundaryBox();
521
                int currentTag;
522
        String value;
523
        boolean end = false;
524
        
525
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.LONLAT_ENVELOPE);
526
        currentTag = parser.next();
527
        
528
        while (!end) 
529
        {
530
             switch(currentTag)
531
             {
532
                case KXmlParser.START_TAG:
533
                    if (parser.getName().compareTo(DescribeCoverageTags.GML_POS)==0) {
534
                            bBox.setSrs(DescribeCoverageTags.WGS84);
535
                            String[] coordinates;
536
                            double minx, miny, maxx, maxy;
537
                            value = parser.nextText();
538
                            coordinates = value.split(SEPARATOR);
539
                            minx = Double.parseDouble(coordinates[0]);
540
                            miny = Double.parseDouble(coordinates[1]);
541
                            
542
                            parser.nextTag();
543
                            
544
                            parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GML_POS);
545
                            value = parser.nextText();
546
                            coordinates = value.split(SEPARATOR);
547
                            maxx = Double.parseDouble(coordinates[0]);
548
                            maxy = Double.parseDouble(coordinates[1]);
549
                            
550
                            bBox.setXmin(minx);
551
                            bBox.setYmin(miny);
552
                            bBox.setXmax(maxx);
553
                            bBox.setYmax(maxy);
554
                    }
555
                    break;
556
                case KXmlParser.END_TAG:
557
                    if (parser.getName().compareTo(DescribeCoverageTags.LONLAT_ENVELOPE) == 0)
558
                        end = true;
559
                    break;
560
                case KXmlParser.TEXT: 
561
                        if (parser.getName()!=null)
562
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
563
                        break;
564
             }
565
             currentTag = parser.next();
566
        }
567
        return bBox;
568
        }
569

    
570
        private BoundaryBox parseGMLEnvelope(KXmlParser parser) throws XmlPullParserException, IOException {
571
                BoundaryBox bBox = new BoundaryBox();
572
                int currentTag;
573
        String value;
574
        boolean end = false;
575
        
576
        parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GML_ENVELOPE);
577
        bBox.setSrs(parser.getAttributeValue("", DescribeCoverageTags.SRSNAME));
578
        currentTag = parser.next();
579
        
580
        while (!end) 
581
        {
582
             switch(currentTag)
583
             {
584
                case KXmlParser.START_TAG:
585
                        if (parser.getName().compareTo(DescribeCoverageTags.GML_POS)==0) {
586
                            
587
                            String[] coordinates;
588
                            double minx, miny, maxx, maxy;
589
                            value = parser.nextText();
590
                            coordinates = value.split(SEPARATOR);
591
                            minx = Double.parseDouble(coordinates[0]);
592
                            miny = Double.parseDouble(coordinates[1]);
593
                            
594
                            parser.nextTag();
595
                            //parser.nextTag();
596
                            parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GML_POS);
597
                            value = parser.nextText();
598
                            coordinates = value.split(SEPARATOR);
599
                            maxx = Double.parseDouble(coordinates[0]);
600
                            maxy = Double.parseDouble(coordinates[1]);
601
                            
602
                            bBox.setXmin(minx);
603
                            bBox.setYmin(miny);
604
                            bBox.setXmax(maxx);
605
                            bBox.setYmax(maxy);
606
                    }
607
                    break;
608
                case KXmlParser.END_TAG:
609
                    if (parser.getName().compareTo(DescribeCoverageTags.GML_ENVELOPE) == 0)
610
                        end = true;
611
                    break;
612
                case KXmlParser.TEXT:
613
                        if (parser.getName()!=null)
614
                                System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]");    
615
                        break;
616
             }
617
             currentTag = parser.next();
618
        }
619
        
620
        return bBox;
621
        }
622

    
623
    
624
}