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

📄 aimsbufferutil.java

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

import java.util.Iterator;
import java.util.List;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.aims.data.AIMSMapFunctionality;
import com.esri.adf.web.aims.data.AIMSMapResource;
import com.esri.aims.mtier.model.map.Map;
import com.esri.aims.mtier.model.map.layer.FeatureLayer;
import com.esri.aims.mtier.model.map.layer.Layer;
import com.esri.aims.mtier.model.map.layer.query.Filter;
import com.esri.aims.mtier.model.map.layer.query.TableDesc;
import com.esri.aims.mtier.model.map.layer.query.Recordset;
import com.esri.aims.mtier.model.acetate.Point;
import com.esri.aims.mtier.model.acetate.Points;
import com.esri.aims.mtier.model.acetate.Ring;
import com.esri.aims.mtier.model.acetate.Polygon;
import com.esri.aims.mtier.model.acetate.Polyline;
import com.esri.aims.mtier.model.acetate.Path;
import com.esri.aims.mtier.model.acetate.Shape;
import com.esri.adf.web.data.geometry.WebPoint;
import com.esri.adf.web.data.geometry.WebPolyline;
import com.esri.adf.web.data.geometry.WebPolygon;
import com.esri.adf.web.data.geometry.WebPath;
import com.esri.adf.web.data.geometry.WebRing;

/**
 * MVS-043: Buffer support class. This utility class return buffer feature from an ArcIMS
 * map service.
 */
@SuppressWarnings("unchecked")
public class AimsBufferUtil{
	private static final long MAX_LIMIT = 1000;

	public AimsBufferUtil()
	{
	}

	public Point toPoint(WebPoint webPoint){
		try{
			Point point = new Point();
			point.setX(webPoint.getX());
			point.setY(webPoint.getY());
			return point;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

	public Polyline toPolyline(WebPolyline webPolyline){
		try{
			List webPaths = webPolyline.getPaths();
			Iterator it = webPaths.iterator();
			Polyline polyline = new Polyline();
			while (it.hasNext()){
				WebPath webPath = (WebPath)it.next();
				List points = webPath.getPoints();
				Iterator pit = points.iterator();
				Points apts = new Points();
				while (pit.hasNext()){
					WebPoint pt = (WebPoint)pit.next();
					Point apt = new Point();
					apt.setX(pt.getX());
					apt.setY(pt.getY());
					apts.addPointObject(apt);
				}
				Path path = new Path();
				path.setPoints(apts);
				polyline.addPath(path);
			}
			return polyline;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

	public Polygon toPolygon(WebPolygon webPoly){
		try{
			List webRings = webPoly.getRings();
			Iterator it = webRings.iterator();
			Polygon poly = new Polygon();
			while (it.hasNext()){
				WebRing webRing = (WebRing)it.next();
				List points = webRing.getPoints();
				Iterator pit = points.iterator();
				Points apts = new Points();
				while (pit.hasNext()){
					WebPoint pt = (WebPoint)pit.next();
					Point apt = new Point();
					apt.setX(pt.getX());
					apt.setY(pt.getY());
					apts.addPointObject(apt);
				}
				Ring ring = new Ring();
				ring.setPoints(apts);
				poly.addRing(ring);
			}
			return poly;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

	public String doBuffer(String session_id, AIMSMapResource aimsMapResource, 
			AIMSMapFunctionality aimsMapFunc, String lyrId, WebGeometry webGeom){
		try{
			Shape shape = null;
			if (webGeom instanceof WebPoint)
				shape = (Shape)toPoint((WebPoint)webGeom);
			if (webGeom instanceof WebPolyline)
				shape = (Shape)toPolyline((WebPolyline)webGeom);
			if (webGeom instanceof WebPolygon)
				shape = (Shape)toPolygon((WebPolygon)webGeom);
			if (shape == null) return null;
			Layer aimsLayer = aimsMapFunc.getLayer(lyrId);

			FeatureLayer targetLayer = null;
			if (aimsLayer instanceof FeatureLayer)
				targetLayer = (FeatureLayer)aimsLayer;
			else
				return null;
	    	Filter filter = new Filter();	
    	
			Map aims_map = aimsMapFunc.getMap();
			aims_map.getLayers().setGeometry(true);

	        filter.setGlobalEnvelope(true);
			filter.setSpatialShape(shape);
			filter.setFeatureLimit(MAX_LIMIT);
	        targetLayer.getRecordset().clearRecordset();
	        targetLayer.setFilterObject(filter);	        
	        aims_map.refresh();
        	        	       
			TableDesc tableDesc = targetLayer.getRecordset().getTableDesc();

			String idField = "";
			int idIdx = -1;
			for (int i = 0; i < tableDesc.getCount(); i++){
				String fieldName = tableDesc.getFieldName(i);
				fieldName = fieldName.substring(fieldName.lastIndexOf(".") + 1);
				if (fieldName.equalsIgnoreCase("OBJECTID") ||
					fieldName.equalsIgnoreCase("FID") ||
					fieldName.equalsIgnoreCase("#ID#")){
					idField = tableDesc.getFieldName(i);
					idIdx = i;
				}
			}
			String clause = "";
			Recordset recs = targetLayer.getRecordset();
			for (int i = 0; i < recs.getFeaturesCount(); i++){
				clause += recs.getRecords(i).getFieldValue(idIdx);
				if (i < recs.getFeaturesCount() - 1) clause += ",";
			}
			clause = idField + " IN (" + clause + ")";
			targetLayer.getRecordset().clearRecordset();
			targetLayer.setFilterObject(null);
			targetLayer = null;
			aims_map = null;
			return clause;
		}
		catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
}

⌨️ 快捷键说明

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