当前位置: 首页 > news >正文

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实现的缓冲效果

相关文章:

  • 【ROS-Navigation】Costmap2D代价地图源码解读-障碍层ObstacleLayer
  • 通信运营商如何理性应对带号转网(2)
  • 【ROS-Navigation】Costmap2D代价地图源码解读-膨胀层InflationLayer
  • 【ROS-Navigation】Recovery Behavior恢复行为源码解读
  • 拆解组装SQL字符串全过程
  • ROS局部规划器中的轨迹模拟策略-DWA使用与否的差别
  • 商业智能在中国企业的成熟应用,还需要以业务为核心。
  • 【全局路径规划】人工势场 Artificial Potential Field
  • 用Linux替代Windows
  • 【全局路径规划】A*算法 A* Search Algorithm
  • 【局部路径规划】DWA动态窗口法 Dynamic Window Approach
  • 【运动规划】人工势场构造扩展多点人工势场组合控制高自由度机器人
  • 【运动规划】BFP搜索Best-First Planner及填充势场Local minima
  • 【运动规划】RRT快速搜索随机树 Rapidly Exploring Random Tree
  • 【路径规划】PRM 概率道路图法 Probabilistic Roadmap Method
  • ----------
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Angular Elements 及其运作原理
  • create-react-app做的留言板
  • CSS 提示工具(Tooltip)
  • HashMap ConcurrentHashMap
  • IndexedDB
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • leetcode46 Permutation 排列组合
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Meteor的表单提交:Form
  • PHP 的 SAPI 是个什么东西
  • Sass 快速入门教程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 机器学习中为什么要做归一化normalization
  • 前言-如何学习区块链
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 双管齐下,VMware的容器新战略
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 无服务器化是企业 IT 架构的未来吗?
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • ​第20课 在Android Native开发中加入新的C++类
  • #pragma once
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (1)Jupyter Notebook 下载及安装
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (五)MySQL的备份及恢复
  • (转)甲方乙方——赵民谈找工作
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./和../以及/和~之间的区别
  • .net core Swagger 过滤部分Api
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比