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

📄 gmlgeometryparser.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.IGMLGeometry;
import com.esri.solutions.jitk.datasources.ogc.wfs.parsing.stax.IElementParser;
import com.esri.solutions.jitk.datasources.ogc.wfs.parsing.stax.ParsingException;

public class GMLGeometryParser  implements IElementParser{
	protected GMLMultiCurveParser _gmlMultiCurveParser = new GMLMultiCurveParser();
	protected GMLMultiSurfaceParser _gmlMultiSurfaceParser = new GMLMultiSurfaceParser();
	protected GMLPointParser _gmlPointParser = new GMLPointParser();
	protected IGMLGeometry _currentGeometry = null;
	
	public GMLGeometryParser() {
	}
	
	/*
	 * Point Example:
	 * 
	 * <gml:Point>
	   	    <gml:pos>-122.457766445736 37.7633529139773</gml:pos> 
	   </gml:Point>
	   
	 * 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>

	 * 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 void parse(XMLEventReader xmler, XMLEvent currentEvent) throws XMLStreamException, ParsingException {
		XMLEvent event;
		String currentElementName = "";
		boolean firstElementAfterShape = true;
		
		while (xmler.hasNext()) {
			event = xmler.nextEvent();
			
			if (event.isStartElement()) {
				currentElementName = event.asStartElement().getName().getLocalPart();
				
				if (currentElementName.equals("MultiSurface")) {
					_currentGeometry = _gmlMultiSurfaceParser.parse(xmler, currentEvent);
				}	
				else if (currentElementName.equals("MultiCurve")) {
					_currentGeometry = _gmlMultiCurveParser.parse(xmler, currentEvent);
				}
				else if (currentElementName.equals("Point")) {
					_currentGeometry = _gmlPointParser.parse(xmler, currentEvent);
				}
				else {
					if (firstElementAfterShape) {
						throw new UnsupportGmlGeometryException(currentElementName + " GML Geometry type not supported");
					}
				}
				
				firstElementAfterShape = false;
			}
			
			if (event.isEndElement()) {
				String endElement = event.asEndElement().getName().getLocalPart();			

				if (endElement.equalsIgnoreCase("Shape")) {
					break;
				}				
			}			
		}		
	}
	
	public IGMLGeometry getGeometry() {
		return _currentGeometry;
	}
}

⌨️ 快捷键说明

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