ArcGis flex 应用GP 实现最短路径

本文详细介绍如何利用ArcGIS进行最短路径分析,包括数据准备、模型制作及测试、GP服务发布与测试等步骤。此外还介绍了如何汉化路径描述。

最近用arcgis GP服务做了几个Demo,为了不丢失自己的实践经验,我决定把过程记下来!!!

 

 

 

 

(一)最短路径分析

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
  以上为效果图,在此感谢http://www.tzwhx.com/newOperate/html/5/51/514/15549.html博文给我的启发,我用自己的数据做了实验,并且汉化了路径描述(因为从英文直接汉化,因此可能有点Ehinese的不足),下面描述整个模型制作和程序实现过程:

(1)数据准备

   这里必须是使用网络数据集,我从ShapeFile生成,在ArcCatalog里面操作,首先建立一个叫TestRouting的空文件夹,同时建立Scrach和ToolData子文件夹,Scrach用来存放模型生成的脚本结果,ToolData饱含制作模型的原数据,再建立一个叫TestRouting的工具箱,像下图这样子:ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

   在ToolData文件夹里放入我们的实验数据,并制作网络数据集,当然这个实验数据不是简单的道路数据,包括一些网络数据集必须的字段(zbcov.shp),单击右键,选择New Network Dataset...ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
    一些基本设置都是默认的,但是有一点必须注意,在下面这个窗口中,需要对elevation数据做以下设置,field要选择自己数据中对应的字段。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

  一路next,生成下面的两个数据,zbcov_ND和zbcov_ND_Junctions。
ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

(2)模型制作
  在ArcMap中打开zbcov_ND,并在ArcToolBox中加入刚才新建的TestRouting,在TestRouting上点击右键,new一个model,命名为ShortestRoute,按照下面的pic制作最短路径分析的模型.

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

    
  制作模型需要注意很多,直接用Arcgis例子里的当然不是不行,但是制作模型本来也是一种乐趣,并且有助于理解ArcGIS的一些算法过程,由于我自己在这个过程碰到了很多问题,因此打算一步步把过程写下来。首先要加入Network的扩展模块,Tools->Extension,选择Network Analyst复选框。

  A.将Network Analyst Tools工具箱打开,选择Analysisi->Make Route Layer,拖入Model窗口,当然如果找不到这个工具也不必郁闷,直接在Search里面搜就行了。双击Make Route Layer工具,在Input analysis network中选择我们在ArcMap中添加的图层zbcov_ND,其他的选项可以都选择默认。这时在模型中,输入项变成蓝色,工具变成黄色,输出为绿色。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
 B. 再找到Add Locations工具,拖入Model窗口。右键单击工具,选择Make Variable->From Parameter-> Input locations。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

C.在Input locations这个输入项上单击右键,选择properties...,给这个数据项做如下参数设置,data type是Feature Set,symbology from选择zbcov_ND_Junctions.shp,其实后面这个是确定你在输入Feature时的样式和包含字段,可以选择ArcGIS里面保存的样式,我这个为了方便随便选的一个点数据层,表明样式随选择的数据层而定,加入的点数据和zbcov_ND_Junctions的字段是一样的。ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
 D.双击Add locations工具,Input network analysis layer选择之前生成的Route层,Sub layer为Stops,表明我们要在Route层加入最短路径的站点,此外,还有barriers,表明障碍物。Input locaations为上一步加入的层,同时在Field mappings做字段匹配,因为我们选择了zbcov_ND_Junctions作为Input locations的symbol层,因此只有两个字段FID,和Zelev,因此我们只在Name中选择FID这个字段。其他字段可以选择默认。
ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
F.在Model窗口内再拖一个Add Locations工具,步骤和添加站点的步骤差不多,是为路径分析添加障碍物的过程。为了区分添加站点,为添加障碍物的子模型修改名字,变为Add Barriers,输入项变为Input Barriers,另一个输入项为之前生成的结果图层Route (2)。在Add Barriers中的设置sub layer要选择barriers。Fields mapping仍然只设置name为FID。如下。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
G.在Model窗口拖入Solve工具,双击,在Input network Analysis layer中选择上一步生成的Network Analyst Layer图层,如下图。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

H.生成的结果做两个处理,一种直接把路径结果作为附加图层显示出来,一种生成路径描述xml,将select data工具和Directions工具拖入Model窗口,select data工具用ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)直接与上一步生成的Route (3)连起来,双击select data工具,Child Data Element (optional)选择Routes,表明输出的结果图层是路径,双击Directions工具,Output file type选择xml,Output directions file选择生成的xml路径,即为我们最开始生成的Scratch文件夹。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

   当然生成的xml文件路径还有另外一种设置方式,在ArcMap窗口选择Tools->Options->Geoprocessing选项卡,做如下设置,Overwrite...表明每生成新的xml文件将覆盖以前的结果;log...表明有覆盖操作会有警告。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

   同时在Environments选择Scratch Workspace为最开始生成的Scrach文件夹。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

    这时Model窗口里的Direnctions工具的xml生成路径可以直接设置如下。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)
    一般我们会选择第二种路径设置方式,便于多个生成文件的统一管理。

I.开始做模型的时候以为这样就完事了,其实疏忽了一个非常容易丢掉但又很重要的环节,就是确定模型的输入输出项,如果我们不做这一步,模型就是空的。这个模型有两个输入项,Input locations(设置站点),Input barriers(设置障碍),两个输出项,ShortestRoute和Route_Directions.xml,zbcov_ND其实也是一个输入项,但是因为我们制作模型时就已经设置了,不作为用户输入。设置方式如下,右键单击设置项,选择Model Parameter。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

       最后的模型如下图:

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

(3)测试模型

    保存刚生成的模型,在工具箱中双击模型,可以看到模型框框。在ArcMap的图层上点击,输入两个站点和一个障碍,运行后就可以看到结果作为一个图层显示出来。
ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)


ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

 (4)发布GP服务

    将刚刚做好的ShortestRoute模型拖入ArcMap中的Layers里,作为第一个图层,zbcov_ND作为分析层为第二层,保存为一个mxd(TestRoutingService.mxd)。同时zbcov.shp原数据单独保存为一个mxd(TestRoutingBasemap.mxd),作为路径分析的底图,如果有其他数据也可以加进去,这个不是重点。在ArcCatalog中可以看到文件的格局如下。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

   TestRoutingBasemap直接发布为一个MapService,不做赘述;TestRoutingService发布为一个GeoprocessingService,具体步骤如下:

  A.之前要Add ArcGIS Server,然后Add GIS Service,Type选择Geoprocessing Service,并给服务起一个名字。下一步。。。

   ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

B.选择Synchronous执行方式,选择发布一个map的方式,并在Data Frame中选择Layers,选中Show Messages复选框。至于Synchronous和Asynchronous的区别,前者是同步执行,用于不很复杂的GP服务,效率较高;后者是异步执行,不做赘述。下一步。。。选择默认设置,完成。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

(5)测试GP服务

    打开一个空的ArcMap,从catalog中直接把刚刚发布的BaseMap拖入Layers,在ArcToolBox中将刚发布的Geoprocessing服务加载进来,这时可以看到模型的图标变为一个小斧头ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)


    双击这个模型,进行参数输入,执行ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

    如果发布的模型没有问题,将会出现如下的结果。

 ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

   (6)在Flex中调用模型。

     底图的服务url为"http://localhost/arcgis/rest/services/testRoutingBm/MapServer";

     GP服务的url为"http://localhost/arcgis/rest/services/DriveTime/GPServer/ShortestRoute2".

     因为是在自己的机器上发布的,因此都是localhost...

     代码直接参考http://www.tzwhx.com/newOperate/html/5/51/514/15549.html的博文,贴不下就不贴了。

  GP调用的关键为下面的语句:

  var params:Object = {
                    "Input_locations":featureSet,
                    "Input_barriers":featureSet2
                    };
                    //进行分析成功调用onResult方法,失败调用onFault方法
                    gp.execute(params, new AsyncResponder(onResult,onFault));

 这里的Input_locations和Input_barriers就是模型的两个输入项,通过GP服务的URL可以直接看到详细的描述,如下为Input_barriers的详细描述。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

 gp.execute执行结果通过AsyncResponder传入onResult,如果出错,通过onFault执行。

 (7)汉化输入路径

   输出路径的描述默认是英文,这是比较郁闷,因此想办法汉化一下。找到%ArcGIS安装路径%/NetworkAnalyst/Directions,我的是C:/Program Files/ArcGIS/NetworkAnalyst/Directions,将里面的directions.lng文件英文的描述全部改为中文,虽然比较麻烦琐碎,但是这时一个过程(最好备份一下以前的directions.lng以防不测)。另存为需要注意选择UTF-8的编码方式。

最上面改成下面的

[General]
Encoding = UTF-8
Default = zh_cn


   再次运行程序,会发现Directions表格里面的路径描述都变为中文。

 

    终于写完了第一篇,下一篇将是最近设施查找……有时间再写,先贴个效果图。

ArcGIS <wbr>Flex(9.3)+GP服务完成最短路径分析(1)

C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照和温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性和准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础和电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)​ 内容概要:本文围绕动态环境下多无人机系统的协同路径规划与防撞问题展开研究,提出基于Matlab的仿真代码实现方案。研究重点在于在复杂、动态环境中实现多无人机之间的高效协同飞行与避障,涵盖路径规划算法的设计与优化,确保无人机集群在执行任务过程中能够实时规避静态障碍物与动态冲突,保障飞行安全性与任务效率。文中结合智能优化算法,构建合理的成本目标函数(如路径长度、飞行高度、威胁规避、转弯角度等),并通过Matlab平台进行算法验证与仿真分析,展示多机协同的可行性与有效性。; 适合人群:具备一定Matlab编程基础,从事无人机控制、路径规划、智能优化算法研究的科研人员及研究生。; 使用场景及目标:①应用于灾害救援、军事侦察、区域巡检等多无人机协同任务场景;②目标是掌握多无人机系统在动态环境下的路径规划与防撞机制,提升协同作业能力与自主决策水平;③通过Matlab仿真深入理解协同算法的实现逻辑与参数调优方法。; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注目标函数设计、避障策略实现与多机协同逻辑,配合仿真结果分析算法性能,进一步可尝试引入新型智能算法进行优化改进。
先展示下效果 https://pan.quark.cn/s/a4b39357ea24 StudentInfo 基于SSM的学生信息管理系统(选课) 已停更 项目简介: 由SpringMVC+MyBatis为主要框架,mysql8.0配置主从复制实现读写分离,主机丛机分别为腾讯云的服务器,而项目部署在阿里云上。 前端主要由bootstrap完成,背景用particles.js插件。 数据库交互查询用到pagehelper分页。 在添加修改相关功能时通过ajax来验证其主键是否存在可用。 代码层次清晰,输入框约束较高,已配置登录拦截。 一、应用技术 #### 工具:eclipse、navicat 环境:JDK1.8、tomcat9.0、mysql8.0 前端:JavaScript、jQuery、bootstrap4、particles.js 后端:maven、SpringMVC、MyBatis、ajax、mysql读写分离、mybatis分页 二、功能 #### 这是在上个springmvc选课系统的基础上进行修改完善的,目前功能基本相同,修复诸多bug,上个系统中有详细介绍:B/S基于springMVC的网上选课系统 主要功能模块图: 新增: 增加分页查询 输入框约束 学号、身份证、课程编号、教师编号只能输入数字,并且有最大输入限制,其中学号固定12位,若小于12位将会有提示。 姓名只能输入中文。 几乎所有输入框不能输入空格等约束 下拉框联动 添加、修改课程采用二级联动,即所属系别——所属专业; 添加、修改学生采用三级联动,即系别——专业——班级。 (三级联动代码有些复杂,因为JavaScript学的不好=-=)。 ajax+springmvc验证 用于验证学号、课程编号、教师...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值