svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.remoteclient / src / main / java / org / gvsig / remoteclient / wcs / wcs_1_0_0 / WCSCoverage1_0_0.java @ 40559
History | View | Annotate | Download (28.6 KB)
1 | 40559 | jjdelcerro | /**
|
---|---|---|---|
2 | * gvSIG. Desktop Geographic Information System.
|
||
3 | 40435 | jjdelcerro | *
|
4 | 40559 | jjdelcerro | * Copyright (C) 2007-2013 gvSIG Association.
|
5 | 40435 | jjdelcerro | *
|
6 | * This program is free software; you can redistribute it and/or
|
||
7 | * modify it under the terms of the GNU General Public License
|
||
8 | 40559 | jjdelcerro | * as published by the Free Software Foundation; either version 3
|
9 | 40435 | jjdelcerro | * of the License, or (at your option) any later version.
|
10 | *
|
||
11 | * This program is distributed in the hope that it will be useful,
|
||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
14 | * GNU General Public License for more details.
|
||
15 | *
|
||
16 | * You should have received a copy of the GNU General Public License
|
||
17 | * along with this program; if not, write to the Free Software
|
||
18 | 40559 | jjdelcerro | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
19 | * MA 02110-1301, USA.
|
||
20 | 40435 | jjdelcerro | *
|
21 | 40559 | jjdelcerro | * For any additional information, do not hesitate to contact us
|
22 | * at info AT gvsig.com, or visit our website www.gvsig.com.
|
||
23 | 40435 | jjdelcerro | */
|
24 | /**
|
||
25 | *
|
||
26 | */
|
||
27 | package org.gvsig.remoteclient.wcs.wcs_1_0_0; |
||
28 | |||
29 | |||
30 | import java.io.IOException; |
||
31 | |||
32 | import org.kxml2.io.KXmlParser; |
||
33 | import org.xmlpull.v1.XmlPullParserException; |
||
34 | |||
35 | import org.gvsig.compat.CompatLocator; |
||
36 | import org.gvsig.compat.lang.StringUtils; |
||
37 | import org.gvsig.remoteclient.utils.BoundaryBox; |
||
38 | import org.gvsig.remoteclient.utils.DescribeCoverageTags; |
||
39 | import org.gvsig.remoteclient.wcs.WCSCoverage; |
||
40 | |||
41 | /**
|
||
42 | * @author jaume
|
||
43 | *
|
||
44 | */
|
||
45 | public class WCSCoverage1_0_0 extends WCSCoverage{ |
||
46 | String axisDescriptionName;
|
||
47 | |||
48 | private static final StringUtils stringUtils = CompatLocator.getStringUtils(); |
||
49 | |||
50 | /* (non-Javadoc)
|
||
51 | * @see org.gvsig.remoteClient.wcs.WCSLayer#parse(org.kxml2.io.KXmlParser)
|
||
52 | */
|
||
53 | public void parse(KXmlParser parser) throws XmlPullParserException, IOException { |
||
54 | int currentTag;
|
||
55 | String value;
|
||
56 | boolean end = false; |
||
57 | |||
58 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.COVERAGE_OFFERING);
|
||
59 | currentTag = parser.next(); |
||
60 | |||
61 | while (!end)
|
||
62 | { |
||
63 | switch(currentTag)
|
||
64 | { |
||
65 | case KXmlParser.START_TAG:
|
||
66 | if (parser.getName().compareTo(DescribeCoverageTags.NAME)==0) |
||
67 | { |
||
68 | value = parser.nextText(); |
||
69 | if (value != null) setName(value); |
||
70 | } else if (parser.getName().compareTo(DescribeCoverageTags.LABEL)==0){ |
||
71 | value = parser.nextText(); |
||
72 | if (value != null) setTitle(value); |
||
73 | } else if (parser.getName().compareTo(DescribeCoverageTags.LONLAT_ENVELOPE)==0){ |
||
74 | BoundaryBox bBox = parseLonLatGMLEnvelope(parser); |
||
75 | bBox.setSrs(DescribeCoverageTags.WGS84); |
||
76 | addBBox(bBox); |
||
77 | setLonLatBox(bBox); |
||
78 | } else if (parser.getName().compareTo(DescribeCoverageTags.DOMAINSET) == 0) { |
||
79 | parseDomainSet(parser); |
||
80 | } else if (parser.getName().compareTo(DescribeCoverageTags.RANGESET) == 0) { |
||
81 | parseRangeSet(parser); |
||
82 | } else if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTED_CRSS) == 0) { |
||
83 | parseSupportedCRSS(parser); |
||
84 | } else if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTED_FORMATS) == 0) { |
||
85 | setNativeFormat(parser.getAttributeValue("", DescribeCoverageTags.NATIVE_FORMAT));
|
||
86 | parser.nextTag(); |
||
87 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.FORMATS);
|
||
88 | while (parser.getName().compareTo(DescribeCoverageTags.FORMATS) == 0) { |
||
89 | String[] formats = stringUtils.split(parser.nextText(), SEPARATOR); |
||
90 | for (int i = 0; i < formats.length; i++) { |
||
91 | addFormat(formats[i]); |
||
92 | } |
||
93 | parser.nextTag(); |
||
94 | } |
||
95 | } else if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTED_INTERPOLATIONS) == 0) { |
||
96 | boolean bInterpolationsEnd = false; |
||
97 | int interpolationsTag = parser.next();
|
||
98 | while (!bInterpolationsEnd) {
|
||
99 | switch(interpolationsTag) {
|
||
100 | case KXmlParser.START_TAG:
|
||
101 | if (parser.getName().compareTo(DescribeCoverageTags.INTERPOLATION_METHOD)==0) { |
||
102 | addInterpolationMethod(parser.nextText()); |
||
103 | } |
||
104 | break;
|
||
105 | case KXmlParser.END_TAG:
|
||
106 | if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTED_INTERPOLATIONS) == 0) |
||
107 | bInterpolationsEnd = true;
|
||
108 | break;
|
||
109 | case KXmlParser.TEXT:
|
||
110 | if (parser.getName()!=null) |
||
111 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
112 | break;
|
||
113 | } |
||
114 | interpolationsTag = parser.next(); |
||
115 | } |
||
116 | } else {
|
||
117 | if (!parser.getName().equals("rangeSet")) // just a patch to avoid too much messages |
||
118 | System.out.println("Skiped "+parser.getName()); |
||
119 | } |
||
120 | |||
121 | break;
|
||
122 | case KXmlParser.END_TAG:
|
||
123 | if (parser.getName().compareTo(DescribeCoverageTags.COVERAGE_OFFERING) == 0) |
||
124 | end = true;
|
||
125 | break;
|
||
126 | case KXmlParser.TEXT:
|
||
127 | if (parser.getName()!=null) |
||
128 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
129 | break;
|
||
130 | } |
||
131 | currentTag = parser.next(); |
||
132 | } |
||
133 | } |
||
134 | |||
135 | private void parseSupportedCRSS(KXmlParser parser) throws XmlPullParserException, IOException { |
||
136 | int currentTag;
|
||
137 | boolean end = false; |
||
138 | |||
139 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.SUPPORTED_CRSS);
|
||
140 | currentTag = parser.next(); |
||
141 | |||
142 | while (!end)
|
||
143 | { |
||
144 | switch(currentTag)
|
||
145 | { |
||
146 | case KXmlParser.START_TAG:
|
||
147 | if (parser.getName().compareTo(DescribeCoverageTags.REQUEST_RESPONSE_CRSS)==0) { |
||
148 | String[] values = stringUtils.split(parser.nextText(), SEPARATOR); |
||
149 | for (int i = 0; i < values.length; i++) { |
||
150 | addSRSs(values[i]); |
||
151 | } |
||
152 | } |
||
153 | else if (parser.getName().compareTo(DescribeCoverageTags.NATIVE_CRS) == 0) { |
||
154 | setNativeSRS(parser.nextText()); |
||
155 | } else if (parser.getName().compareTo(DescribeCoverageTags.REQUEST_CRSS) == 0) { |
||
156 | // TODO
|
||
157 | System.out.println("Skiped "+parser.getName()); |
||
158 | } else if (parser.getName().compareTo(DescribeCoverageTags.RESPONSE_CRSS) == 0) { |
||
159 | // TODO
|
||
160 | System.out.println("Skiped "+parser.getName()); |
||
161 | } else {
|
||
162 | System.out.println("Unrecognized "+parser.getName()); |
||
163 | } |
||
164 | |||
165 | break;
|
||
166 | case KXmlParser.END_TAG:
|
||
167 | if (parser.getName().compareTo(DescribeCoverageTags.SUPPORTED_CRSS) == 0) |
||
168 | return;//end = true; |
||
169 | break;
|
||
170 | case KXmlParser.TEXT:
|
||
171 | if (parser.getName()!=null) |
||
172 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
173 | break;
|
||
174 | } |
||
175 | currentTag = parser.next(); |
||
176 | } |
||
177 | } |
||
178 | |||
179 | private void parseRangeSet(KXmlParser parser) throws XmlPullParserException, IOException { |
||
180 | int currentTag;
|
||
181 | boolean end = false; |
||
182 | |||
183 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.RANGESET);
|
||
184 | currentTag = parser.next(); |
||
185 | |||
186 | while (!end)
|
||
187 | { |
||
188 | switch(currentTag)
|
||
189 | { |
||
190 | case KXmlParser.START_TAG:
|
||
191 | if (parser.getName().compareTo(DescribeCoverageTags.NAME)==0) |
||
192 | setRangeSetName(parser.nextText()); |
||
193 | else if (parser.getName().compareTo(DescribeCoverageTags.LABEL) == 0) |
||
194 | setRangeSetLabel(parser.nextText()); |
||
195 | else if (parser.getName().compareToIgnoreCase(DescribeCoverageTags.AXISDESCRIPTION) == 0) { |
||
196 | // Reading all axe description
|
||
197 | int axisTag = parser.nextTag();
|
||
198 | boolean endAxe = false; |
||
199 | while (!endAxe) {
|
||
200 | switch(axisTag)
|
||
201 | { |
||
202 | case KXmlParser.START_TAG:
|
||
203 | if (parser.getName().compareTo(DescribeCoverageTags.AXISDESCRIPTION)==0) { |
||
204 | AxisDescription as = parseAxisDescription(parser); |
||
205 | axisPool.put(as.getName(), as); |
||
206 | axisDescriptionName = as.getName(); |
||
207 | } |
||
208 | break;
|
||
209 | case KXmlParser.END_TAG:
|
||
210 | if (parser.getName().compareToIgnoreCase(DescribeCoverageTags.AXISDESCRIPTION) == 0) |
||
211 | endAxe = true;
|
||
212 | break;
|
||
213 | case KXmlParser.TEXT:
|
||
214 | if (parser.getName()!=null) |
||
215 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
216 | break;
|
||
217 | } |
||
218 | axisTag = parser.next(); |
||
219 | } |
||
220 | } else {
|
||
221 | System.out.println("Unrecognized "+parser.getName()); |
||
222 | } |
||
223 | break;
|
||
224 | case KXmlParser.END_TAG:
|
||
225 | if (parser.getName().compareTo(DescribeCoverageTags.RANGESET) == 0) |
||
226 | end = true;
|
||
227 | break;
|
||
228 | case KXmlParser.TEXT:
|
||
229 | if (parser.getName()!=null) |
||
230 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
231 | break;
|
||
232 | } |
||
233 | currentTag = parser.next(); |
||
234 | } |
||
235 | } |
||
236 | |||
237 | private AxisDescription parseAxisDescription(KXmlParser parser) throws XmlPullParserException, IOException { |
||
238 | int currentTag;
|
||
239 | boolean end = false; |
||
240 | |||
241 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.AXISDESCRIPTION);
|
||
242 | AxisDescription as = new AxisDescription();
|
||
243 | currentTag = parser.next(); |
||
244 | |||
245 | while (!end)
|
||
246 | { |
||
247 | switch(currentTag)
|
||
248 | { |
||
249 | case KXmlParser.START_TAG:
|
||
250 | if (parser.getName().compareTo(DescribeCoverageTags.NAME) == 0) { |
||
251 | as.setName(parser.nextText()); |
||
252 | } else if (parser.getName().compareTo(DescribeCoverageTags.LABEL) == 0) { |
||
253 | as.setLabel(parser.nextText()); |
||
254 | } else if (parser.getName().compareTo(DescribeCoverageTags.VALUES) == 0) { |
||
255 | int valuesTag = parser.nextTag();
|
||
256 | boolean valuesEnd = false; |
||
257 | while (!valuesEnd) {
|
||
258 | switch(valuesTag) {
|
||
259 | case KXmlParser.START_TAG:
|
||
260 | if (parser.getName().compareTo(DescribeCoverageTags.SINGLEVALUE) == 0) { |
||
261 | as.addSingleValues(parser.nextText()); |
||
262 | } else if (parser.getName().compareTo(DescribeCoverageTags.INTERVAL) == 0) { |
||
263 | as.setInterval(parser.nextText()); |
||
264 | } else if (parser.getName().compareTo(DescribeCoverageTags.DEFAULT) == 0) { |
||
265 | as.setDefaultValue(parser.nextText()); |
||
266 | } |
||
267 | break;
|
||
268 | case KXmlParser.END_TAG:
|
||
269 | if (parser.getName().compareTo(DescribeCoverageTags.VALUES) == 0) |
||
270 | valuesEnd = true;
|
||
271 | break;
|
||
272 | case KXmlParser.TEXT:
|
||
273 | if (parser.getName()!=null) |
||
274 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
275 | break;
|
||
276 | } |
||
277 | valuesTag = parser.next(); |
||
278 | } |
||
279 | } else if (parser.getName().compareTo(DescribeCoverageTags.NULLVALUES)==0) { |
||
280 | // TODO
|
||
281 | System.err.println("Missing NULL VALUE PARSING on WCS 1.0.0 Client"); |
||
282 | } else {
|
||
283 | System.out.println("Unrecognized "+parser.getName()); |
||
284 | } |
||
285 | |||
286 | break;
|
||
287 | case KXmlParser.END_TAG:
|
||
288 | if (parser.getName().compareToIgnoreCase(DescribeCoverageTags.AXISDESCRIPTION) == 0) |
||
289 | end = true;
|
||
290 | break;
|
||
291 | case KXmlParser.TEXT:
|
||
292 | if (parser.getName()!=null) |
||
293 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
294 | break;
|
||
295 | } |
||
296 | currentTag = parser.next(); |
||
297 | } |
||
298 | return as;
|
||
299 | } |
||
300 | |||
301 | private void parseDomainSet(KXmlParser parser) throws XmlPullParserException, IOException { |
||
302 | int currentTag;
|
||
303 | boolean end = false; |
||
304 | |||
305 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.DOMAINSET);
|
||
306 | currentTag = parser.next(); |
||
307 | |||
308 | while (!end)
|
||
309 | { |
||
310 | switch(currentTag)
|
||
311 | { |
||
312 | case KXmlParser.START_TAG:
|
||
313 | if (parser.getName().compareTo(DescribeCoverageTags.SPATIALDOMAIN)==0) |
||
314 | { |
||
315 | parseSpatialDomain(parser); |
||
316 | } else if (parser.getName().compareTo(DescribeCoverageTags.TEMPORALDOMAIN)==0) { |
||
317 | parseTemporalDomain(parser); |
||
318 | } |
||
319 | break;
|
||
320 | case KXmlParser.END_TAG:
|
||
321 | if (parser.getName().compareTo(DescribeCoverageTags.DOMAINSET) == 0) |
||
322 | end = true;
|
||
323 | break;
|
||
324 | case KXmlParser.TEXT:
|
||
325 | if (parser.getName()!=null) |
||
326 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
327 | break;
|
||
328 | } |
||
329 | currentTag = parser.next(); |
||
330 | } |
||
331 | } |
||
332 | |||
333 | private void parseTemporalDomain(KXmlParser parser) throws XmlPullParserException, IOException { |
||
334 | int currentTag;
|
||
335 | boolean end = false; |
||
336 | |||
337 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.TEMPORALDOMAIN);
|
||
338 | currentTag = parser.next(); |
||
339 | |||
340 | while (!end)
|
||
341 | { |
||
342 | switch(currentTag)
|
||
343 | { |
||
344 | case KXmlParser.START_TAG:
|
||
345 | if (parser.getName().compareTo(DescribeCoverageTags.GML_TIMEPOSITION) == 0) { |
||
346 | addTimePosition(parser.nextText()); |
||
347 | } else if (parser.getName().compareTo(DescribeCoverageTags.TIMEPERIOD) == 0) { |
||
348 | boolean timePeriodEnd = false; |
||
349 | int timePeriodTag = parser.next();
|
||
350 | String[] myTimePeriod = new String[3]; |
||
351 | while (!timePeriodEnd) {
|
||
352 | switch (timePeriodTag) {
|
||
353 | case KXmlParser.START_TAG:
|
||
354 | if (parser.getName().compareTo(DescribeCoverageTags.BEGINPOSITION) == 0) { |
||
355 | myTimePeriod[0] = parser.nextText();
|
||
356 | } else if (parser.getName().compareTo(DescribeCoverageTags.ENDPOSITION) == 0) { |
||
357 | myTimePeriod[1] = parser.nextText();
|
||
358 | } else if (parser.getName().compareTo(DescribeCoverageTags.TIMERESOLUTION) == 0) { |
||
359 | myTimePeriod[2] = parser.nextText();
|
||
360 | } else {
|
||
361 | System.out.println("Unrecognized "+parser.getName()); |
||
362 | } |
||
363 | break;
|
||
364 | case KXmlParser.END_TAG:
|
||
365 | if (parser.getName().compareTo(DescribeCoverageTags.TEMPORALDOMAIN) == 0) |
||
366 | end = true;
|
||
367 | break;
|
||
368 | case KXmlParser.TEXT:
|
||
369 | if (parser.getName()!=null) |
||
370 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
371 | break;
|
||
372 | } |
||
373 | timePeriodTag = parser.next(); |
||
374 | } |
||
375 | super.timePeriod = ""; |
||
376 | for (int i = 0; i < myTimePeriod.length-1; i++) { |
||
377 | if (myTimePeriod[i]!=null) { |
||
378 | super.timePeriod += myTimePeriod[i];
|
||
379 | } |
||
380 | if (myTimePeriod[i+1]!=null) { |
||
381 | super.timePeriod += "/"; |
||
382 | } |
||
383 | } |
||
384 | } else {
|
||
385 | System.out.println("Unrecognized "+parser.getName()); |
||
386 | } |
||
387 | break;
|
||
388 | case KXmlParser.END_TAG:
|
||
389 | if (parser.getName().compareTo(DescribeCoverageTags.TEMPORALDOMAIN) == 0) |
||
390 | end = true;
|
||
391 | break;
|
||
392 | case KXmlParser.TEXT:
|
||
393 | if (parser.getName()!=null) |
||
394 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
395 | break;
|
||
396 | } |
||
397 | currentTag = parser.next(); |
||
398 | } |
||
399 | } |
||
400 | |||
401 | private void parseSpatialDomain(KXmlParser parser) throws XmlPullParserException, IOException { |
||
402 | int currentTag;
|
||
403 | boolean end = false; |
||
404 | |||
405 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.SPATIALDOMAIN);
|
||
406 | currentTag = parser.next(); |
||
407 | |||
408 | while (!end)
|
||
409 | { |
||
410 | switch(currentTag)
|
||
411 | { |
||
412 | case KXmlParser.START_TAG:
|
||
413 | if (parser.getName().compareTo(DescribeCoverageTags.GML_ENVELOPE)==0) { |
||
414 | BoundaryBox bBox = parseGMLEnvelope(parser); |
||
415 | addBBox(bBox); |
||
416 | } else if (parser.getName().compareTo(DescribeCoverageTags.GRID)==0) { |
||
417 | parseGrid(parser); |
||
418 | } else if (parser.getName().compareTo(DescribeCoverageTags.RECTIFIEDGRID)==0) { |
||
419 | parseRectifiedGrid(parser); |
||
420 | } else {
|
||
421 | System.out.println("Unrecognized "+parser.getName()); |
||
422 | } |
||
423 | break;
|
||
424 | case KXmlParser.END_TAG:
|
||
425 | if (parser.getName().compareTo(DescribeCoverageTags.SPATIALDOMAIN) == 0) |
||
426 | return;
|
||
427 | break;
|
||
428 | case KXmlParser.TEXT:
|
||
429 | if (parser.getName()!=null) |
||
430 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
431 | break;
|
||
432 | } |
||
433 | currentTag = parser.next(); |
||
434 | } |
||
435 | } |
||
436 | |||
437 | private void parseGrid(KXmlParser parser) throws XmlPullParserException, IOException { |
||
438 | int currentTag;
|
||
439 | String value;
|
||
440 | boolean end = false; |
||
441 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GRID);
|
||
442 | rg = new RectifiedGrid(Integer.parseInt(parser.getAttributeValue("", DescribeCoverageTags.DIMENSION))); |
||
443 | |||
444 | currentTag = parser.next(); |
||
445 | |||
446 | while (!end)
|
||
447 | { |
||
448 | switch(currentTag) {
|
||
449 | case KXmlParser.START_TAG:
|
||
450 | if (parser.getName().compareTo(DescribeCoverageTags.GML_LIMITS) == 0) { |
||
451 | parser.nextTag(); |
||
452 | if (parser.getName().compareTo(DescribeCoverageTags.GML_GRIDENVELOPE)==0) { |
||
453 | boolean gridEnd = false; |
||
454 | int gridCurrentTag = parser.next();
|
||
455 | while (!gridEnd){
|
||
456 | switch (gridCurrentTag) {
|
||
457 | case KXmlParser.START_TAG:
|
||
458 | |||
459 | if (parser.getName().compareTo(DescribeCoverageTags.GML_LOW) == 0) { |
||
460 | value = parser.nextText(); |
||
461 | String[] ss = stringUtils.split(value, SEPARATOR); |
||
462 | int[] limits = new int[ss.length]; |
||
463 | for (int i = 0; i < limits.length; i++) { |
||
464 | limits[i] = Integer.parseInt(ss[i]);
|
||
465 | } |
||
466 | rg.addLowGridEnvelopLimit(limits); |
||
467 | } else if (parser.getName().compareTo(DescribeCoverageTags.GML_HIGH) == 0) { |
||
468 | value = parser.nextText(); |
||
469 | String[] ss = stringUtils.split(value, SEPARATOR); |
||
470 | int[] limits = new int[ss.length]; |
||
471 | for (int i = 0; i < limits.length; i++) { |
||
472 | limits[i] = Integer.parseInt(ss[i]);
|
||
473 | } |
||
474 | rg.addHighGridEnvelopLimit(limits); |
||
475 | } else {
|
||
476 | System.out.println("Unrecognized "+parser.getName()); |
||
477 | } |
||
478 | break;
|
||
479 | case KXmlParser.END_TAG:
|
||
480 | if (parser.getName().compareTo(DescribeCoverageTags.GML_GRIDENVELOPE) == 0) |
||
481 | gridEnd = true;
|
||
482 | break;
|
||
483 | case KXmlParser.TEXT:
|
||
484 | if (parser.getName()!=null) |
||
485 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
486 | break;
|
||
487 | } |
||
488 | gridCurrentTag = parser.next(); |
||
489 | } |
||
490 | } |
||
491 | } else if (parser.getName().compareTo(DescribeCoverageTags.GML_AXISNAME)==0) { |
||
492 | rg.addAxisName(parser.nextText()); |
||
493 | } else {
|
||
494 | System.out.println("Unrecognized "+parser.getName()); |
||
495 | } |
||
496 | break;
|
||
497 | case KXmlParser.END_TAG:
|
||
498 | if (parser.getName().compareTo(DescribeCoverageTags.GRID) == 0) |
||
499 | return;//end = true; |
||
500 | break;
|
||
501 | case KXmlParser.TEXT:
|
||
502 | if (parser.getName()!=null) |
||
503 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
504 | break;
|
||
505 | } |
||
506 | currentTag = parser.next(); |
||
507 | } |
||
508 | } |
||
509 | |||
510 | private void parseRectifiedGrid(KXmlParser parser) throws XmlPullParserException, IOException { |
||
511 | int currentTag;
|
||
512 | String value;
|
||
513 | boolean end = false; |
||
514 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.RECTIFIEDGRID);
|
||
515 | rg = new RectifiedGrid(Integer.parseInt(parser.getAttributeValue("", DescribeCoverageTags.DIMENSION))); |
||
516 | |||
517 | // TODO maybe this is wrong
|
||
518 | rg.addToOffsetVector(new double[] { -1, -1}); |
||
519 | rg.addToOffsetVector(new double[] { -1, -1}); |
||
520 | |||
521 | currentTag = parser.next(); |
||
522 | |||
523 | while (!end)
|
||
524 | { |
||
525 | switch(currentTag)
|
||
526 | { |
||
527 | case KXmlParser.START_TAG:
|
||
528 | if (parser.getName().compareTo(DescribeCoverageTags.GML_LIMITS) == 0) { |
||
529 | parser.nextTag(); |
||
530 | if (parser.getName().compareTo(DescribeCoverageTags.GML_GRIDENVELOPE)==0) { |
||
531 | boolean gridEnd = false; |
||
532 | int gridCurrentTag = parser.next();
|
||
533 | while (!gridEnd)
|
||
534 | { |
||
535 | switch (gridCurrentTag) {
|
||
536 | case KXmlParser.START_TAG:
|
||
537 | |||
538 | if (parser.getName().compareTo(DescribeCoverageTags.GML_LOW) == 0) { |
||
539 | value = parser.nextText(); |
||
540 | String[] ss = stringUtils.split(value, SEPARATOR); |
||
541 | int[] limits = new int[ss.length]; |
||
542 | for (int i = 0; i < limits.length; i++) { |
||
543 | limits[i] = Integer.parseInt(ss[i]);
|
||
544 | } |
||
545 | rg.addLowGridEnvelopLimit(limits); |
||
546 | } else if (parser.getName().compareTo(DescribeCoverageTags.GML_HIGH) == 0) { |
||
547 | value = parser.nextText(); |
||
548 | String[] ss = stringUtils.split(value, SEPARATOR); |
||
549 | int[] limits = new int[ss.length]; |
||
550 | for (int i = 0; i < limits.length; i++) { |
||
551 | limits[i] = Integer.parseInt(ss[i]);
|
||
552 | } |
||
553 | rg.addHighGridEnvelopLimit(limits); |
||
554 | } else {
|
||
555 | System.out.println("Unrecognized "+parser.getName()); |
||
556 | } |
||
557 | break;
|
||
558 | case KXmlParser.END_TAG:
|
||
559 | if (parser.getName().compareTo(DescribeCoverageTags.GML_GRIDENVELOPE) == 0) |
||
560 | gridEnd = true;
|
||
561 | break;
|
||
562 | case KXmlParser.TEXT:
|
||
563 | if (parser.getName()!=null) |
||
564 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
565 | break;
|
||
566 | } |
||
567 | gridCurrentTag = parser.next(); |
||
568 | } |
||
569 | } |
||
570 | } else if (parser.getName().compareTo(DescribeCoverageTags.GML_AXISNAME)==0) { |
||
571 | rg.addAxisName(parser.nextText()); |
||
572 | } else if (parser.getName().compareTo(DescribeCoverageTags.GML_ORIGIN)==0) { |
||
573 | parser.nextTag(); |
||
574 | if (parser.getName().compareTo(DescribeCoverageTags.GML_POS)==0) { |
||
575 | value = parser.nextText(); |
||
576 | String[] ss = stringUtils.split(value, SEPARATOR); |
||
577 | double[] ori = new double[ss.length]; |
||
578 | for (int i = 0; i < ori.length; i++) { |
||
579 | ori[i] = Double.parseDouble(ss[i]);
|
||
580 | } |
||
581 | rg.setOrigin(ori); |
||
582 | } |
||
583 | } else if (parser.getName().compareTo(DescribeCoverageTags.OFFSETVECTOR) == 0) { |
||
584 | value = parser.nextText(); |
||
585 | String[] ss = stringUtils.split(value, SEPARATOR); |
||
586 | double[] offset = new double[ss.length]; |
||
587 | for (int i = 0; i < offset.length; i++) { |
||
588 | offset[i] = Double.parseDouble(ss[i]);
|
||
589 | } |
||
590 | rg.addToOffsetVector(offset); |
||
591 | } else {
|
||
592 | System.out.println("Unrecognized "+parser.getName()); |
||
593 | } |
||
594 | break;
|
||
595 | case KXmlParser.END_TAG:
|
||
596 | if (parser.getName().compareTo(DescribeCoverageTags.RECTIFIEDGRID) == 0) |
||
597 | end = true;
|
||
598 | break;
|
||
599 | case KXmlParser.TEXT:
|
||
600 | if (parser.getName()!=null) |
||
601 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
602 | break;
|
||
603 | } |
||
604 | currentTag = parser.next(); |
||
605 | } |
||
606 | } |
||
607 | |||
608 | |||
609 | private BoundaryBox parseLonLatGMLEnvelope(KXmlParser parser) throws XmlPullParserException, IOException { |
||
610 | BoundaryBox bBox = new BoundaryBox();
|
||
611 | int currentTag;
|
||
612 | String value;
|
||
613 | boolean end = false; |
||
614 | |||
615 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.LONLAT_ENVELOPE);
|
||
616 | currentTag = parser.next(); |
||
617 | |||
618 | while (!end)
|
||
619 | { |
||
620 | switch(currentTag)
|
||
621 | { |
||
622 | case KXmlParser.START_TAG:
|
||
623 | if (parser.getName().compareTo(DescribeCoverageTags.GML_POS)==0) { |
||
624 | bBox.setSrs(DescribeCoverageTags.WGS84); |
||
625 | String[] coordinates; |
||
626 | double minx, miny, maxx, maxy;
|
||
627 | value = parser.nextText(); |
||
628 | coordinates = stringUtils.split(value, SEPARATOR); |
||
629 | minx = Double.parseDouble(coordinates[0]); |
||
630 | miny = Double.parseDouble(coordinates[1]); |
||
631 | |||
632 | parser.nextTag(); |
||
633 | |||
634 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GML_POS);
|
||
635 | value = parser.nextText(); |
||
636 | coordinates = stringUtils.split(value, SEPARATOR); |
||
637 | maxx = Double.parseDouble(coordinates[0]); |
||
638 | maxy = Double.parseDouble(coordinates[1]); |
||
639 | |||
640 | bBox.setXmin(minx); |
||
641 | bBox.setYmin(miny); |
||
642 | bBox.setXmax(maxx); |
||
643 | bBox.setYmax(maxy); |
||
644 | } |
||
645 | break;
|
||
646 | case KXmlParser.END_TAG:
|
||
647 | if (parser.getName().compareTo(DescribeCoverageTags.LONLAT_ENVELOPE) == 0) |
||
648 | end = true;
|
||
649 | break;
|
||
650 | case KXmlParser.TEXT:
|
||
651 | if (parser.getName()!=null) |
||
652 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
653 | break;
|
||
654 | } |
||
655 | currentTag = parser.next(); |
||
656 | } |
||
657 | return bBox;
|
||
658 | } |
||
659 | |||
660 | private BoundaryBox parseGMLEnvelope(KXmlParser parser) throws XmlPullParserException, IOException { |
||
661 | BoundaryBox bBox = new BoundaryBox();
|
||
662 | int currentTag;
|
||
663 | String value;
|
||
664 | boolean end = false; |
||
665 | |||
666 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GML_ENVELOPE);
|
||
667 | bBox.setSrs(parser.getAttributeValue("", DescribeCoverageTags.SRSNAME));
|
||
668 | currentTag = parser.next(); |
||
669 | |||
670 | while (!end)
|
||
671 | { |
||
672 | switch(currentTag)
|
||
673 | { |
||
674 | case KXmlParser.START_TAG:
|
||
675 | if (parser.getName().compareTo(DescribeCoverageTags.GML_POS)==0) { |
||
676 | |||
677 | String[] coordinates; |
||
678 | double minx, miny, maxx, maxy;
|
||
679 | value = parser.nextText(); |
||
680 | coordinates = stringUtils.split(value, SEPARATOR); |
||
681 | minx = Double.parseDouble(coordinates[0]); |
||
682 | miny = Double.parseDouble(coordinates[1]); |
||
683 | |||
684 | parser.nextTag(); |
||
685 | //parser.nextTag();
|
||
686 | parser.require(KXmlParser.START_TAG, null, DescribeCoverageTags.GML_POS);
|
||
687 | value = parser.nextText(); |
||
688 | coordinates = stringUtils.split(value, SEPARATOR); |
||
689 | maxx = Double.parseDouble(coordinates[0]); |
||
690 | maxy = Double.parseDouble(coordinates[1]); |
||
691 | |||
692 | bBox.setXmin(minx); |
||
693 | bBox.setYmin(miny); |
||
694 | bBox.setXmax(maxx); |
||
695 | bBox.setYmax(maxy); |
||
696 | } |
||
697 | break;
|
||
698 | case KXmlParser.END_TAG:
|
||
699 | if (parser.getName().compareTo(DescribeCoverageTags.GML_ENVELOPE) == 0) |
||
700 | end = true;
|
||
701 | break;
|
||
702 | case KXmlParser.TEXT:
|
||
703 | if (parser.getName()!=null) |
||
704 | System.out.println("[TAG]["+parser.getName()+"]\n[TEXT]["+parser.getText().trim()+"]"); |
||
705 | break;
|
||
706 | } |
||
707 | currentTag = parser.next(); |
||
708 | } |
||
709 | |||
710 | return bBox;
|
||
711 | } |
||
712 | } |