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

📄 agslocalbuffercalculator.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.common.analysis.buffer;

import com.esri.adf.web.ags.data.AGSLocalMapResource;
import com.esri.adf.web.ags.util.AGSUtil;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPolygon;
import com.esri.arcgis.geometry.IGeometry;
import com.esri.arcgis.geometry.IPolygon2;
import com.esri.arcgis.geometry.ISpatialReference;
import com.esri.arcgis.geometry.ITopologicalOperator;
import com.esri.arcgis.geometry.Point;
import com.esri.arcgis.server.IServerContext;
import com.esri.arcgisws.Geometry;
import com.esri.arcgisws.PolygonN;
import com.esri.solutions.jitk.common.geometry.DistanceConverter;

public class AgsLocalBufferCalculator implements IBufferCalculator {
	protected AGSLocalMapResource agsLocalMapResource;
	
	public AgsLocalBufferCalculator(AGSLocalMapResource agsResource) {
		this.agsLocalMapResource = agsResource;
	}
	
	public WebGeometry calculateBuffer(WebGeometry geoOrigin, double dDistance, int iUnits) 
		throws  Exception {
		WebGeometry geoBuffer = null;
		
		if (dDistance > 0) {
			IServerContext serverContext = agsLocalMapResource.getServerContext();
			
			//Convert the origin to an ArcObjects feature
			Geometry agsPt = (Geometry)AGSUtil.toAGSGeometry(geoOrigin);
			Point pointOrigin = (Point)AGSUtil.createArcObjectFromStub(agsPt, serverContext);
			
			//Convert the distance from an ADF distance to ArcObject distance
			ISpatialReference ipSpatRef = pointOrigin.getSpatialReference();
			double projDist = DistanceConverter.convertDistance(
					ipSpatRef, iUnits, dDistance, serverContext);
			
			//Buffer origin feature and densify
			ITopologicalOperator ipTopoOp = (ITopologicalOperator) pointOrigin;
			IGeometry ipGeoBuffer = (IGeometry) ipTopoOp.buffer(projDist);
			IPolygon2 ipPolyBuffer = (IPolygon2) ipGeoBuffer;
			ipPolyBuffer.densify(0, 0);

			PolygonN poly = (PolygonN) AGSUtil.createStubFromArcObject(ipPolyBuffer, PolygonN.class, serverContext);
			WebPolygon webPoly = (WebPolygon) AGSUtil.fromAGSGeometry(poly);
			geoBuffer = (WebGeometry) webPoly;
		}		
		else {
			//If the distance is 0, then the buffer origin is the geometry
			geoBuffer = geoOrigin;
		}
		
		return geoBuffer;
	}
}

⌨️ 快捷键说明

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