ArcGIS Server Java ADF 案例教程 38

三 调用AO实现缓冲功能【案例】

在这个小节中,让我们通过调用AO实现一个缓冲区分析的功能。

首先,我们需要配置一个地图服务资源,还是用前面使用过的世界地图服务吧,但是这次采用的是Local方式去连接,你可以直接在打开的JSP页面上右键选择【ArcGIS】-【Configure Map Service…】菜单打开服务配置窗口:

image

图 27 使用IDE插件配置 Local方式连接的服务

下面我们在一个Tool中通过这个AGSLocalMapResource来调用AO:

public class BufferPointToolAction implements MapToolAction

{

public void execute(MapEvent event) throws Exception

{

WebContext webContext = event.getWebContext();

AGSLocalMapResource agsLocalMapResource = (AGSLocalMapResource)webContext.getResourceById("ags1");

IServerContext serverContext = agsLocalMapResource.getServerContext();

WebPoint webPoint = (WebPoint)event.getWebGeometry().toMapGeometry(webContext.getWebMap());

Point point = (Point)AGSUtil.toAGSGeometry (webPoint);

Object objPoint = AGSLocalUtil.createArcObjectFromStub (point, serverContext);

ITopologicalOperator topologicalOperator = (ITopologicalOperator)objPoint;

IPolycurve objPolygon = (IPolycurve)topologicalOperator.buffer(10);

objPolygon.densify(-1, -1);

PolygonN polygonN = (PolygonN)AGSLocalUtil.createStubFromArcObject (objPolygon, PolygonN.class , serverContext);

WebPolygon webPolygon = (WebPolygon)AGSUtil.fromAGSGeometry (polygonN);

WebSimplePolygonSymbol symbol = new WebSimplePolygonSymbol();

symbol.setAntialiasing(true );

symbol.setFillTransparency(0.7);

symbol.setColor("0,255,0");

symbol.setFillColor("255,0,0");

WebGraphics webGraphics = webContext.getWebGraphics();

GraphicElement element = new GraphicElement();

element.setGeometry(webPolygon);

element.setSymbol(symbol);

webGraphics.addGraphics(element);

webContext.refresh();

}

}

当用户在浏览器中的地图上点击的时候,我们可以获得一个WebPoint类型的ADF对象,首先需要把这个对象转化为AO对象,这里必须通过两步走的方法:第一步把ADF对象转化为SOAP对象,第二步把SOAP对象转化为AO对象。具体可以参考上面的代码,主要使用了AGSUtil和AGSLocalUtil工具类的两个方法。

当我们得到AO的点以后,就可以使用AO的方法对要素进行处理了,关于AO的处理这里就省略了,关键在于处理完成以后,你还需要把AO对象的结果转化为ADF对象,同样,也需要两步方法,具体见上面的代码。

最后,让我们看一下这个通过AO实现的点击缓冲功能的效果:

image

图 28 调用AO实现的缓冲效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值