⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmlmulticurveparser.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 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 + -