webpolylineconverter.java

来自「esri的ArcGIS Server超级学习模板程序(for java)」· Java 代码 · 共 80 行

JAVA
80
字号
package com.esri.solutions.jitk.data.gml;

import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPath;
import com.esri.adf.web.data.geometry.WebPoint;
import com.esri.adf.web.data.geometry.WebPolyline;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLLineString;
import com.esri.solutions.jitk.datasources.ogc.gml.GMLMultiCurve;
import com.esri.solutions.jitk.datasources.ogc.gml.IGMLGeometry;

public class WebPolylineConverter implements IWebGeometryConverter {
	enum GMLPolylineType {
		LineString,
		GMLMultiCurve
	}
	
	protected GMLPolylineType _lineType;
	
	public WebPolylineConverter(GMLPolylineType lineType) {
		_lineType = lineType;
	}
	
	public IGMLGeometry toGMLGeometry(WebGeometry geometry) {
		switch (_lineType) {
		case LineString:
			return toGMLLineString(geometry);
		case GMLMultiCurve:
		default:
			return toGMLMultiCurve(geometry);
		}
	}
	
	public IGMLGeometry toGMLLineString(WebGeometry geometry) {
		GMLLineString gmlLineString = new GMLLineString();
		WebPolyline webPolyline = (WebPolyline) geometry;
		StringBuilder lineString = new StringBuilder();
		
		for (WebPath path : webPolyline.getPaths()) {
			for (WebPoint point : path.getPoints()) {
				if (lineString.length() > 0) {
					lineString.append(" ");
				}
				
				lineString.append(point.getY());
				lineString.append(" ");
				lineString.append(point.getX());			
			}
		}
		
		gmlLineString.setPostList(lineString.toString());
		
		return gmlLineString;
	}
	
	
	public IGMLGeometry toGMLMultiCurve(WebGeometry geometry) {
		GMLMultiCurve mc = new GMLMultiCurve();
		WebPolyline webPolyline = (WebPolyline) geometry;
		
		for (WebPath path : webPolyline.getPaths()) {
			StringBuilder lineString = new StringBuilder();
			GMLLineString gmlLineString = new GMLLineString();
			
			for (WebPoint point : path.getPoints()) {
				if (lineString.length() > 0) {
					lineString.append(" ");
				}
				
				lineString.append(point.getY());
				lineString.append(" ");
				lineString.append(point.getX());			
			}
			
			gmlLineString.setPostList(lineString.toString());
			mc.addLineString(gmlLineString);
		}
		
		return mc;
	}	
}

⌨️ 快捷键说明

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