完整方法ArcGIS Flex93+GP服务完成最短路径分析.docx
- 文档编号:7327600
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:19
- 大小:896.58KB
完整方法ArcGIS Flex93+GP服务完成最短路径分析.docx
《完整方法ArcGIS Flex93+GP服务完成最短路径分析.docx》由会员分享,可在线阅读,更多相关《完整方法ArcGIS Flex93+GP服务完成最短路径分析.docx(19页珍藏版)》请在冰豆网上搜索。
完整方法ArcGISFlex93+GP服务完成最短路径分析
最近用arcgisGP服务做了几个Demo,为了不丢失自己的实践经验,我决定把过程记下来!
!
!
(一)最短路径分析
以上为效果图,在此感谢
(1)数据准备
这里必须是使用网络数据集,我从ShapeFile生成,在ArcCatalog里面操作,首先建立一个叫TestRouting的空文件夹,同时建立Scrach和ToolData子文件夹,Scrach用来存放模型生成的脚本结果,ToolData饱含制作模型的原数据,再建立一个叫TestRouting的工具箱,像下图这样子:
在ToolData文件夹里放入我们的实验数据,并制作网络数据集,当然这个实验数据不是简单的道路数据,包括一些网络数据集必须的字段(zbcov.shp),单击右键,选择NewNetworkDataset...
一些基本设置都是默认的,但是有一点必须注意,在下面这个窗口中,需要对elevation数据做以下设置,field要选择自己数据中对应的字段。
一路next,生成下面的两个数据,zbcov_ND和zbcov_ND_Junctions。
(2)模型制作
在ArcMap中打开zbcov_ND,并在ArcToolBox中加入刚才新建的TestRouting,在TestRouting上点击右键,new一个model,命名为ShortestRoute,按照下面的pic制作最短路径分析的模型.
制作模型需要注意很多,直接用Arcgis例子里的当然不是不行,但是制作模型本来也是一种乐趣,并且有助于理解ArcGIS的一些算法过程,由于我自己在这个过程碰到了很多问题,因此打算一步步把过程写下来。
首先要加入Network的扩展模块,Tools->Extension,选择NetworkAnalyst复选框。
A.将NetworkAnalystTools工具箱打开,选择Analysisi->MakeRouteLayer,拖入Model窗口,当然如果找不到这个工具也不必郁闷,直接在Search里面搜就行了。
双击MakeRouteLayer工具,在Inputanalysisnetwork中选择我们在ArcMap中添加的图层zbcov_ND,其他的选项可以都选择默认。
这时在模型中,输入项变成蓝色,工具变成黄色,输出为绿色。
B.再找到AddLocations工具,拖入Model窗口。
右键单击工具,选择MakeVariable->FromParameter->Inputlocations。
C.在Inputlocations这个输入项上单击右键,选择properties...,给这个数据项做如下参数设置,datatype是FeatureSet,symbologyfrom选择zbcov_ND_Junctions.shp,其实后面这个是确定你在输入Feature时的样式和包含字段,可以选择ArcGIS里面保存的样式,我这个为了方便随便选的一个点数据层,表明样式随选择的数据层而定,加入的点数据和zbcov_ND_Junctions的字段是一样的。
D.双击Addlocations工具,Inputnetworkanalysislayer选择之前生成的Route层,Sublayer为Stops,表明我们要在Route层加入最短路径的站点,此外,还有barriers,表明障碍物。
Inputlocaations为上一步加入的层,同时在Fieldmappings做字段匹配,(勾选捕捉到网络),因为我们选择了zbcov_ND_Junctions作为Inputlocations的symbol层,因此只有两个字段FID,和Zelev,因此我们只在Name中选择FID这个字段。
其他字段可以选择默认。
F.在Model窗口内再拖一个AddLocations工具,步骤和添加站点的步骤差不多,是为路径分析添加障碍物的过程。
为了区分添加站点,为添加障碍物的子模型修改名字,变为Add Barriers,输入项变为InputBarriers,另一个输入项为之前生成的结果图层Route
(2)。
在AddBarriers中的设置sublayer要选择barriers。
Fieldsmapping仍然只设置name为FID。
如下。
G.在Model窗口拖入Solve工具,双击,在Input networkAnalysislayer中选择上一步生成的NetworkAnalystLayer图层,如下图。
H.生成的结果做两个处理,一种直接把路径结果作为附加图层显示出来,一种生成路径描述xml,将selectdata工具和Directions工具拖入Model窗口,selectdata工具用
直接与上一步生成的Route(3)连起来,双击selectdata工具,ChildDataElement(optional)选择Routes,表明输出的结果图层是路径,双击Directions工具,Outputfiletype选择xml,Outputdirectionsfile选择生成的xml路径,即为我们最开始生成的Scratch文件夹。
当然生成的xml文件路径还有另外一种设置方式,在ArcMap窗口选择Tools->Options->Geoprocessing选项卡,做如下设置,Overwrite...表明每生成新的xml文件将覆盖以前的结果;log...表明有覆盖操作会有警告。
同时在Environments选择ScratchWorkspace为最开始生成的Scrach文件夹。
这时Model窗口里的Direnctions工具的xml生成路径可以直接设置如下。
一般我们会选择第二种路径设置方式,便于多个生成文件的统一管理。
I.开始做模型的时候以为这样就完事了,其实疏忽了一个非常容易丢掉但又很重要的环节,就是确定模型的输入输出项,如果我们不做这一步,模型就是空的。
这个模型有两个输入项,Inputlocations(设置站点),Inputbarriers(设置障碍),两个输出项,ShortestRoute和Route_Directions.xml,zbcov_ND其实也是一个输入项,但是因为我们制作模型时就已经设置了,不作为用户输入。
设置方式如下,右键单击设置项,选择ModelParameter。
最后的模型如下图:
(3)测试模型
保存刚生成的模型,在工具箱中双击模型,可以看到模型框框。
在ArcMap的图层上点击,输入两个站点和一个障碍,运行后就可以看到结果作为一个图层显示出来。
(4)发布GP服务
将刚刚做好的ShortestRoute模型拖入ArcMap中的Layers里,作为第一个图层,zbcov_ND作为分析层为第二层,保存为一个mxd(TestRoutingService.mxd)。
同时zbcov.shp原数据单独保存为一个mxd(TestRoutingBasemap.mxd),作为路径分析的底图,如果有其他数据也可以加进去,这个不是重点。
在ArcCatalog中可以看到文件的格局如下。
TestRoutingBasemap直接发布为一个MapService,不做赘述;TestRoutingService发布为一个GeoprocessingService,具体步骤如下:
A.之前要AddArcGISServer,然后AddGISService,Type选择GeoprocessingService,并给服务起一个名字。
下一步。
。
。
B.选择Synchronous执行方式,选择发布一个map的方式,并在DataFrame中选择Layers,选中ShowMessages复选框。
至于Synchronous和Asynchronous的区别,前者是同步执行,用于不很复杂的GP服务,效率较高;后者是异步执行,不做赘述。
下一步。
。
。
选择默认设置,完成。
(5)测试GP服务
打开一个空的ArcMap,从catalog中直接把刚刚发布的BaseMap拖入Layers,在ArcToolBox中将刚发布的Geoprocessing服务加载进来,这时可以看到模型的图标变为一个小斧头
。
双击这个模型,进行参数输入,执行
如果发布的模型没有问题,将会出现如下的结果。
(6)在Flex中调用模型。
底图的服务url为"http:
//localhost/arcgis/rest/services/testRoutingBm/MapServer";
GP服务的url为"http:
//localhost/arcgis/rest/services/DriveTime/GPServer/ShortestRoute2".
因为是在自己的机器上发布的,因此都是localhost...
代码直接参考
GP调用的关键为下面的语句:
varparams:
Object={
"Input_locations":
featureSet,
"Input_barriers":
featureSet2
};
//进行分析成功调用onResult方法,失败调用onFault方法
gp.execute(params,newAsyncResponder(onResult,onFault));
这里的Input_locations和Input_barriers就是模型的两个输入项,通过GP服务的URL可以直接看到详细的描述,如下为Input_barriers的详细描述。
gp.execute执行结果通过AsyncResponder传入onResult,如果出错,通过onFault执行。
(7)汉化输入路径
输出路径的描述默认是英文,这是比较郁闷,因此想办法汉化一下。
找到%ArcGIS安装路径%NetworkAnalystDirections,我的是C:
ProgramFilesArcGISNetworkAnalystDirections,将里面的directions.lng文件英文的描述全部改为中文,虽然比较麻烦琐碎,但是这时一个过程(最好备份一下以前的directions.lng以防不测)。
另存为需要注意选择UTF-8的编码方式。
最上面改成下面的
[General]
Encoding=UTF-8
Default=zh_cn
陆晓春:
点查询,审核入库
再次运行程序,会发现Directions表格里面的路径描述都变为中文。
终于写完了第一篇,下一篇将是最近设施查找……有时间再写,先贴个效果图。
分享:
分享到新浪Qing
0
喜欢
阅读
(2)┊评论(0)┊收藏(0)┊转载原文┊喜欢▼┊打印┊举报
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整方法ArcGIS Flex93+GP服务完成最短路径分析 完整 方法 ArcGIS Flex93 GP 服务 完成 路径 分析