| |
WebGeometry webGeometry;
IGeometry buffer;
IServerContext serverContext;
IMapServerObjects imapServerObject;
int featureCounter;
RectangleToolService rectangleToolService=new RectangleToolService();
String errorMessage="";
try {
WebQuery webQuery=webContext.getWebQuery();
if(units.compareTo(bundle.getString("kilometers"))==0)
{
bufferDistance=bufferDistance*1000;
}
AGSLocalMapResource resource = (AGSLocalMapResource) webContext.getResources().get(aGSLocalMapResourceName);
serverContext = (IServerContext) resource.getServerContext();
imapServerObject=resource.getLocalMapServer();
ILayer iLayer = imapServerObject.getLayer(resource.getMapName(),activeLayer);
IFeatureLayer iFeatureLayer = new IFeatureLayerProxy(iLayer);
IPolygon polygon =null;
for(featureCounter=0; featureCounter<selectedFeatures.length; featureCounter++)
{
IFeature iFeature = iFeatureLayer.getFeatureClass().getFeature(selectedFeatures[featureCounter]);
ITopologicalOperator p = new ITopologicalOperatorProxy(iFeature.getShape());
System.out.println("iFeature.getShape():::"+iFeature.getShape().getGeometryType());
buffer = p.buffer(bufferDistance); // Assumes a Geographic projection, for simplicity.
polygon = new IPolygonProxy(buffer);
polygon.setSpatialReferenceByRef(buffer.getSpatialReference());
String soapString = com.esri.adf.web.ags.util.AGSUtil.serializeArcObject(polygon,serverContext);
soapString = soapString.replaceAll("xsi:type=\"soapenc:Array\"", "");
PolygonN polygonN=(PolygonN)AGSUtil.deserializeStub(soapString,PolygonN.class);
SpatialFilter spatialFilter = new SpatialFilter();
spatialFilter.setSpatialRel(EsriSpatialRelEnum.esriSpatialRelIntersects);
spatialFilter.setWhereClause("");
spatialFilter.setSearchOrder(EsriSearchOrder.esriSearchOrderSpatial);
spatialFilter.setSpatialRelDescription("");
spatialFilter.setGeometryFieldName("");
spatialFilter.setFilterGeometry(polygonN);
errorMessage = rectangleToolService.queryRectangleBuff(webContext,spatialFilter,targetLayer,"Features for id: "+selectedFeatures[featureCounter],aGSLocalMapResourceName,agsMapFunctionalityName);
webGeometry=AGSUtil.fromAGSGeometry(polygonN);
if(webGeometry!=null){
webQuery.addDisplayGeometry(webGeometry);
}
webContext.refresh();
}
} |