📄 aimsbufferutil.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 + -