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

📄 gmlmultisurfaceparser.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.GMLLinearRing;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLMultiSurface;

public class GMLMultiSurfaceParser {
	public GMLMultiSurfaceParser() {
	}
	
	/*
	 * Polygon Example:
	 * 
	 <gml:MultiSurface>
	 	<gml:surfaceMember>
	 		<gml:Polygon>
	 			<gml:exterior>
	 				<gml:LinearRing>
	  					<gml:posList>48.5466792935697 -95.3428312927359 48.7151719818551 -95.3410528986394 48.7173575306641 -95.0943590413198 48.911762409631 -95.0949103591175 48.8944847749398 -95.1338212265542 48.8794465165983 -95.2195784949877 48.9029495836267 -95.2902601906278 48.9320720044932 -95.3141717474895 48.9459389204173 -95.3037572953002 48.9609770120568 -95.3209164322569 48.9789563350931 -95.3232358732832 48.9933954555909 -95.3101205798877 48.999991212244 -95.2766571152866 48.9999959148723 -95.1577498893628 49.3717301437862 -95.1518673347568 49.3308059165428 -94.8320392613248 48.8771613109608 -94.6812499456836 48.7776155300334 -94.6944320224136 48.7136762635816 -94.5703127368143 48.7107852810124 -94.4306344734039 48.3682124544205 -94.4316900480531 48.369004737338 -95.2117880162934 48.5443577612451 -95.2198397975193 48.5466792935697 -95.3428312927359</gml:posList> 
	  				</gml:LinearRing>
	  			</gml:exterior>
	  		</gml:Polygon>
	  	</gml:surfaceMember>
	  </gml:MultiSurface>
	 */
	public GMLMultiSurface parse(XMLEventReader xmler, XMLEvent currentEvent) throws XMLStreamException {			
		GMLMultiSurface surface = new GMLMultiSurface();
		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();
					}
					
					buildMultiSurfaceRing(surface, coords);
				}
			}
			
			if (event.isEndElement()) {
				endElementName = event.asEndElement().getName().getLocalPart();			
				if (endElementName.equalsIgnoreCase("MultiSurface")) {
					break;
				}
			}			
		}
		
		return surface;
	}
	
	protected void buildMultiSurfaceRing(GMLMultiSurface surface, String rawGmlPoint) {
		GMLLinearRing ring = new GMLLinearRing();
		ring.setPostList(rawGmlPoint);
		surface.addRing(ring);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -