Revision 11485 trunk/libraries/libGPE-KML/src/org/gvsig/gpe/kml/bindings/geometries/LinearRingBinding.java
LinearRingBinding.java | ||
---|---|---|
53 | 53 |
* |
54 | 54 |
* $Id$ |
55 | 55 |
* $Log$ |
56 |
* Revision 1.2 2007-04-14 16:08:07 jorpiell |
|
56 |
* Revision 1.3 2007-05-08 08:22:37 jorpiell |
|
57 |
* Add comments to create javadocs |
|
58 |
* |
|
59 |
* Revision 1.2 2007/04/14 16:08:07 jorpiell |
|
57 | 60 |
* Kml writing support added |
58 | 61 |
* |
59 | 62 |
* Revision 1.1 2007/04/13 13:16:21 jorpiell |
... | ... | |
62 | 65 |
* |
63 | 66 |
*/ |
64 | 67 |
/** |
68 |
* It parses the linearRing KML tag. Example: |
|
69 |
* <p> |
|
70 |
* <pre> |
|
71 |
* <code> |
|
72 |
* <LinearRing> |
|
73 |
* <coordinates>0.0,0.0 100.0,0.0 50.0,100.0 0.0,0.0</coordinates> |
|
74 |
* </LinearRing> |
|
75 |
* </code> |
|
76 |
* </pre> |
|
77 |
* </p> |
|
65 | 78 |
* @author Jorge Piera LLodr? (jorge.piera@iver.es) |
79 |
* @see http://code.google.com/apis/kml/documentation/kml_tags_21.html#linearring |
|
66 | 80 |
*/ |
67 | 81 |
public class LinearRingBinding { |
68 |
|
|
69 |
public static double[][] parse(XmlPullParser parser,GPEKmlParser handler) throws KmlBodyParseException { |
|
82 |
|
|
83 |
/** |
|
84 |
* It parses the linearRing tag |
|
85 |
* @param parser |
|
86 |
* The XML parser |
|
87 |
* @param handler |
|
88 |
* The GPE parser that contains the content handler and |
|
89 |
* the error handler |
|
90 |
* @return |
|
91 |
* It retuns a matrix of doubles with 3 columns (x,y,z) and |
|
92 |
* one row for each coordinate. |
|
93 |
* @throws IOException |
|
94 |
* @throws XmlPullParserException |
|
95 |
* @throws XmlPullParserException |
|
96 |
* @throws IOException |
|
97 |
*/ |
|
98 |
public static double[][] parse(XmlPullParser parser,GPEKmlParser handler) throws XmlPullParserException, IOException { |
|
70 | 99 |
boolean endFeature = false; |
71 | 100 |
int currentTag; |
72 | 101 |
double[][] coordinates = null; |
73 |
|
|
74 |
try { |
|
75 |
String tag = parser.getName(); |
|
76 |
currentTag = parser.getEventType(); |
|
77 |
|
|
78 |
while (!endFeature){ |
|
79 |
switch(currentTag){ |
|
80 |
case KXmlParser.START_TAG: |
|
81 |
if (tag.compareTo(KmlTags.COORDINATES) == 0){ |
|
82 |
coordinates = CoordinatesTypeBinding.parse(parser, handler); |
|
83 |
} |
|
84 |
break; |
|
85 |
case KXmlParser.END_TAG: |
|
86 |
if (tag.compareTo(KmlTags.LINEARRING) == 0){ |
|
87 |
endFeature = true; |
|
88 |
} |
|
89 |
break; |
|
90 |
case KXmlParser.TEXT: |
|
91 |
|
|
92 |
break; |
|
102 |
|
|
103 |
String tag = parser.getName(); |
|
104 |
currentTag = parser.getEventType(); |
|
105 |
|
|
106 |
while (!endFeature){ |
|
107 |
switch(currentTag){ |
|
108 |
case KXmlParser.START_TAG: |
|
109 |
if (tag.compareTo(KmlTags.COORDINATES) == 0){ |
|
110 |
coordinates = CoordinatesTypeBinding.parse(parser, handler); |
|
93 | 111 |
} |
94 |
if (!endFeature){ |
|
95 |
currentTag = parser.next(); |
|
96 |
tag = parser.getName(); |
|
112 |
break; |
|
113 |
case KXmlParser.END_TAG: |
|
114 |
if (tag.compareTo(KmlTags.LINEARRING) == 0){ |
|
115 |
endFeature = true; |
|
97 | 116 |
} |
98 |
} |
|
99 |
} catch (XmlPullParserException e) { |
|
100 |
throw new KmlBodyParseException(e); |
|
101 |
} catch (IOException e) { |
|
102 |
throw new KmlBodyParseException(e); |
|
103 |
} |
|
117 |
break; |
|
118 |
case KXmlParser.TEXT: |
|
119 |
|
|
120 |
break; |
|
121 |
} |
|
122 |
if (!endFeature){ |
|
123 |
currentTag = parser.next(); |
|
124 |
tag = parser.getName(); |
|
125 |
} |
|
126 |
} |
|
104 | 127 |
return coordinates; |
105 | 128 |
} |
106 | 129 |
} |
Also available in: Unified diff