📄 gmlmulticurveparser.java
字号:
package com.esri.solutions.jitk.datasources.ogc.gml.parsing;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLLineString;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLMultiCurve;
public class GMLMultiCurveParser {
public GMLMultiCurveParser() {
}
/*
* Line Example:
*
<gml:MultiCurve>
<gml:curveMember>
<gml:LineString>
<gml:posList>45.7600546588558 -119.168868672517 45.7638769627002 -119.215334347072 45.7773470144612 -119.339828005814 45.8163032256863 -119.612312147489 45.8243941523025 -119.666856095153 45.8072387037575 -119.857573706345 45.767942206243 -120.043920042746 45.7522859126155 -120.12872332364 45.7013363442887 -120.194169498599 45.6757913969963 -120.397697283718 45.6715257192266 -120.493334772811 45.6846631136783 -120.533802656017 45.7169959964628 -120.574667570018 45.7216875915251 -120.621910523352 45.6912458132687 -120.681574076247 45.6544368634817 -120.804723734685 45.6186886841224 -120.903038860253 45.6319290030582 -120.967036410793 45.6343695574925 -121.05453236267 45.626396553557 -121.076207830131 45.5921664817446 -121.118421988557 45.5832852516356 -121.154349511484 45.5839293682508 -121.192825311942 45.5929929675775 -121.210327464259 45.6468609437721 -121.229378231081 45.6541505600154 -121.274186114305 45.6718698751035 -121.307282498605 45.6756881365808 -121.345368596442 45.6865409730422 -121.363686800664 45.6770113735346 -121.403512478945 45.67465753537 -121.419671626101 45.6983578579702 -121.506074799898 45.690609724483 -121.573420096403 45.6667976580193 -121.693774938913 45.6741481634062 -121.810430702612 45.6599574370579 -121.861595027014 45.632850330585 -121.889618621242 45.5978583882015 -121.982867702459 45.5853961316371 -122.059491945563 45.5674751207184 -122.097876518452 45.5635539409591 -122.152962421922 45.5329191598635 -122.22353639063 45.5304092201467 -122.322979140533 45.5406819001248 -122.398709044705 45.5263196996411 -122.471142666611 45.5311906986007 -122.531469320803 45.518365661064 -122.553846667738 45.5170265366317 -122.575224771977 45.5182009369125 -122.635246826224 45.5386969540394 -122.648698097972 45.5486720736045 -122.672998467939</gml:posList>
</gml:LineString>
</gml:curveMember>
</gml:MultiCurve>
*/
public GMLMultiCurve parse(XMLEventReader xmler, XMLEvent currentEvent) throws XMLStreamException {
GMLMultiCurve multiCurve = new GMLMultiCurve();
String currentElementName = "";
String endElementName = "";
while (xmler.hasNext()) {
XMLEvent event = xmler.nextEvent();
if (event.isStartElement()) {
currentElementName = event.asStartElement().getName().getLocalPart();
}
if (event.isCharacters()) {
if (currentElementName.equalsIgnoreCase("posList")) {
String coords = event.asCharacters().getData();
// The posList data can be larger than 10,916 bytes, which appears to
// be the limit for a single event read. Continue reading unitl all
// positions are read.
while (xmler.peek().isCharacters()) {
event = xmler.nextEvent();
coords += event.asCharacters().getData();
}
buildMultiCurveLine(multiCurve, coords);
}
}
if (event.isEndElement()) {
endElementName = event.asEndElement().getName().getLocalPart();
if (endElementName.equalsIgnoreCase("MultiCurve")) {
break;
}
}
}
return multiCurve;
}
protected void buildMultiCurveLine(GMLMultiCurve multiCurve, String rawGmlPoints) {
GMLLineString line = new GMLLineString();
line.setPostList(rawGmlPoints);
multiCurve.addLineString(line);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -