版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 HYPERLINK /flyingis/archive/2008/12/31/1366170.html ArcGIS Server 开发系列(七)-物流配送2008-12-31 15:58 by Flyingis, 5230 visits, 作者: HYPERLINK /flyingis Flyingis ArcGIS Server开发系列的文章至今已经一年多了,虽然文章只有短短六篇,也比较基础,但值得高兴的是帮助了不少第一次接触ArcGIS Server的开发者,现在不少都已经完成一两个项目了,相信收获不小,有时间可以和大家一起分享经验。今天开始,我们将继续这个系列教程,争取覆盖ADF开发
2、常用功能,以帮助更多的人轻松入门ADF开发。 目标: 实现简易的物流配送(VRP) 准备工作: 1.重新复习ArcGIS Server 开发系列(六)-自定义 Tasks 2.准备数据%ArcGISInstallDir%DeveloperKitSamplesNETServerdataSanFranciscoNetwork 3.发布NATasks.mxd地图服务,添加Network Analyst功能服务 4.MapResourceManager中添加一个ArcGIS Server Local类型服务 在这个应用中,多车配送的功能封装为一个自定义的Task,然后生成一个dll添加到ASP.Net
3、工具箱中,由Web Mapping Application的Task Manager调用,更改自定义Task的Task Results Container为模板应用中的TaskResults1控件。 Web Mapping Application大家已经非常熟悉,现在的重点就在如何利用ArcGIS Server实现VRP功能。VRP全称vehicle routing problem,属于NP难问题,基本没有统一的方法来解决所有的VRP问题,只能根据具体的情况采用最合适的算法,咱们下面就利用ArcGIS Server模拟一个简单的应用场景,实现多车物流的配送计算。 自定义Task,需要构建Tas
4、k的UI和业务逻辑,UI构建通过重写方法CreateChildControls完成,咱们最终实现的效果:相应的代码码比较容容易看懂懂,结合合上面实实现的UUI效果果图和代代码注释释就能明明白每部部分代码码所完成成的功能能,实现现代码:proteecteedoveerriidevoiidCCreaateCChilldCoontrrolss()Coontrrolss.Cllearr();basse.CCreaateCChilldCoontrrolss();#rregiionCreeateetooplleveelttablleSSysttem.Webb.UII.WeebCoontrrolss.Taa
5、bleetaablee=newwSyysteem.WWeb.UI.WebbConntrools.Tabble();tabble.Widdth=SSysttem.Webb.UII.WeebCoontrrolss.Unnit.Pixxel(2400);CConttrolls.AAdd(tabble);TTablleRoowttr;TabbleCCellltdd;#enndreegioon#reegioonOOrdeersLabbeltr=nnewTabbleRRow();td=nnewTabbleCCelll();tdd.Teext=Sellecttorrderrsttosservvicee;tr
6、r.Ceellss.Addd(ttd);taablee.Roows.Addd(trr);#enndreegioon#rregiionCreeateeanndppopuulatteoordeersLisstboox_oidds=neewLListt();_orrderrsChheckkBoxxLisst=neewCChecckBooxLiist();_orrderrsChheckkBoxxLisst.IID=OOrdeersCChecckBooxLiist;_oordeersCChecckBooxLiist.Widdth=SSysttem.Webb.UII.WeebCoontrrolss.Unn
7、it.Poiint(2000);IISerrverrConntexxtsservverCConttextt=MappRessourrceLLocaal.SServverCConttexttInffo.SServverCConttextt;IIMappvrrpMaap=Uttiliity.GettCarrtoIIMapp(MaapInnstaancee,NA_MappRessourrceIItemm);IFFeattureeLayyerordderssInpputFFLayyer=UUtillityy.GeetFeeatuureLLayeer(Stooress,vrppMapp);IFeeatu
8、ureCClasssoordeersIInpuutFCClasss=orrderrsInnputtFLaayerr.FeeatuureCClasss;inttnaameIIndeex=orrderrsInnputtFCllasss.FiindFFielld(Namme);IIFeaaturreCuursooroordeersIInpuutFCCurssor=oordeersIInpuutFCClasss.SSearrch(nulll,fallse);IIFeaaturreoordeerFeeatuure=oordeersIInpuutFCCurssor.NexxtFeeatuure();whi
9、ile(orrderrFeaaturre!=nnulll)LiistIItemmlii=newwLiistIItemm(orrderrFeaaturre.gget_Vallue(nammeInndexx).TToSttrinng();li.Sellectted=ttruee;_oordeersCChecckBooxLiist.Iteems.Addd(lii);_oiids.Addd(orrderrFeaaturre.OOID);oordeerFeeatuure=oordeersIInpuutFCCurssor.NexxtFeeatuure();#enndreegioon#reggionnOrr
10、derrsPaanelltrr=newwTaableeRoww();tdd=newwTaableeCelll();PPaneeloordeersPPaneel=neewPPaneel();oordeersPPaneel.HHeigght=2200;orrderrsPaanell.Wiidthh=2400;orrderrsPaanell.BoordeerCoolorr=Sysstemm.Drrawiing.Collor.Blaack;orrderrsPaanell.BoordeerSttylee=BorrderrStyyle.Insset;orrderrsPaanell.BoordeerWiid
11、thh=1;orrderrsPaanell.SccrolllBaars=SScroollBBarss.Veertiicall;oordeersPPaneel.CConttrolls.AAdd(_orrderrsChheckkBoxxLisst);tdd.Coontrrolss.Addd(oordeersPPaneel);trr.Ceellss.Addd(ttd);taablee.Roows.Addd(trr);#enndreegioon#reegioonGGetDirrecttionnsBButttontr=nnewTabbleRRow();tr.Atttribbutees.AAdd(alli
12、gnn,riightt);tdd=newwTaableeCelll();ttd.CColuumnSSpann=2;HttmlIInpuutBuuttoonbbuttton=nnewHtmmlInnputtButttonn();buuttoon.VValuue=GGetDirrecttionns;buuttoon.IID=eexeccutee;tdd.Coontrrolss.Addd(bbuttton);ttr.CCellls.AAdd(td);ttablle.RRowss.Addd(ttr);#enndreegioon#reggionnOnnCliickEveentforrexxecuutin
13、ngttaskkstrringgarrgummentt=strringg.Foormaat(seeleccteddInddexees=+gettCheeckeedIttemIIndeexess(0,1),_ordderssCheeckBBoxLListt.CllienntIDD,_ordderssCheeckBBoxLListt.Ittemss.Coountt);strringgonnCliick=sstriing.Forrmatt(eexeccuteeTassk(0,1);,arrgummentt,CCalllbacckFuuncttionnStrringg);butttonn.Atttri
14、ibuttes.Addd(ooncllickk,onCClicck);#enndreegioon/AcccesssthheggrapphiccsllayeerssoiitiisccreaateddanndsshowwniinttheTOCCEllemeentGGrapphiccsLaayerrpoointtsGrraphhicssLayyer=PPoinntsGGrapphiccsLaayerr; CCreaateCChilldCoontrrolss用于构构建VRRPTaask UI,除除了界面面要素之之外,还还需要从从源数据据中读取取商店信信息,如如读取商商店名称称显示在在界面上上,当VVR
15、PTTaskk中的商商店被勾勾选上时时,车辆辆将为该该商店送送货。商商店供货货信息存存储在数数据源中中单独的的一个图图层中sstorres.shpp,包含含商店所所需的货货物数量量和预计计提供服服务的时时间。 VVRPTTaskk UII完成之之后,接接下来要要设计VVRP的的业务逻逻辑,AArcGGIS 9.33 Neetwoork Exttenssionn提供了了一个基基本的VVRP解解决方案案,因此此我们在在发布NNATaaskss服务的的时候需需要勾选选Nettworrk AAnallystt功能,通通过SeerveerCoonteext去去远程调调用AOO方法。 第一步步,获取取VR
16、PP分析图图层。IServverCConttexttseerveerCoonteext=MMapRResoourcceLoocall.SeerveerCoonteextIInfoo.SeerveerCoonteext;IMaapvvrpMMap=UUtillityy.GeetCaartooIMaap(MMapIInsttancce,NAA_MaapReesouurceeIteem);IGGPMeessaagessgppMesssagges=sservverCConttextt.CrreatteObbjecct(esrriGeeodaatabbasee.GPPMesssagges)aasIIGP
17、MMesssagees;IINALLayeer2vrppNALLayeer=Uttiliity.GettNALLayeer(VehhiclleRRouttinggPrrobllem,vvrpMMap);INNACoonteextvrppNACConttextt=vrppNALLayeer.CCopyyConntexxt();INNACoonteextEEdittvrrpNAAConntexxtEddit=vvrpNNACoonteextasINAAConntexxtEddit;vrppNACConttexttEdiit.BBindd(vrrpNAALayyer.Conntexxt.NNetww
18、orkkDattaseet,gpMMesssagees); 第第二步,获获取配送送中心信信息、商商店信息息、车辆辆信息和和司机午午餐时间间。IFeattureeLayyerdeppotssInpputFFLayyer=UUtillityy.GeetFeeatuureLLayeer(DisstriibuttionnCennterrs,vrrpMaap);IFeeatuureCClasssddepootsIInpuutFCClasss=deepottsInnputtFLaayerr.FeeatuureCClasss;IIFeaaturreCuursoorddepootsIInpuutFCCurss
19、or=ddepootsIInpuutFCClasss.SSearrch(nulll,fallse);LooadAAnallysiisCllasss(seerveerCoonteext,vrrpNAAConntexxt,Deepotts,deepottsInnputtFCuursooraasIICurrsorr);/LLoaddOrrderrsIFFeattureeLayyerordderssInpputFFLayyer=UUtillityy.GeetFeeatuureLLayeer(Stooress,vrppMapp);IIFeaaturreCllasssorrderrsInnputtFCll
20、asss=ordderssInpputFFLayyer.FeaaturreCllasss;IFFeattureeCurrsorrorrderrsInnputtFCuursoor=orrderrsInnputtFCllasss.GeetFeeatuuress(oiids,trrue);LooadAAnallysiisCllasss(seerveerCoonteext,vrrpNAAConntexxt,Orrderrs,orrderrsInnputtFCuursooraasIICurrsorr);/LLoaddthheRRouttesIITabblerouutessInpputTTablle=Ut
21、tiliity.GettStaandaalonneTaablee(VVehiiclees,vrrpMaap).Tabble;ICuursoorrrouttesIInpuutCuursoor=roouteesInnputtTabble.Seaarchh(nuull,trrue);LooadAAnallysiisCllasss(seerveerCoonteext,vrrpNAAConntexxt,Rooutees,roouteesInnputtCurrsorrassICCurssor);/LooadtheeBrreakksITTabllebbreaaksIInpuutTaablee=Utiilit
22、ty.GGetSStanndalloneeTabble(LuunchhBreeakss,vrppMapp).TTablle;IICurrsorrbrreakksInnputtCurrsorr=breeakssInpputTTablle.SSearrch(nulll,truue);LoaadAnnalyysissClaass(serrverrConntexxt,vrppNACConttextt,Breeakss,breeakssInpputCCurssorasICuursoor);/Messsaggeaalloftheeneetwoorkanaalyssisageentssthhattheean
23、nalyysisscoonteexthasschhanggedvvrpNNACoonteextEEditt.CoonteextCChanngedd(); 配配送中心心、商店店信息均均存储在在物理图图层中,分分别对应应DisstriibuttionnCennterrs.sshp、Stooress.shhp,车车辆信息息和司机机午餐时时间存储储于Taablee表中。车车辆Taablee包含物物流配送送过程中中和车辆辆相关的的一切信信息,如如起止配配送中心心、承载载量、最最多订单单数、发发车时间间、最长长驾驶时时间、最最长行驶驶距离等等,司机机午餐TTablle包含含允许的的午餐持持续时间间、允许许
24、的午餐餐时间范范围等,这这些都将将用于AArcGGIS VRPP模型的的计算中中。 第第三步,路路径计算算,做过过ArccEngginee Neetwoork Anaalysst开发发的工程程师对IINASSolvver、INAAVRPPSollverr一定非非常熟悉悉了,调调用过程程比较简简单,路路径计算算的同时时处理系系统反馈馈的消息息信息。gpMesssagges.Cleear();IINASSolvvernaSSolvver=vvrpNNACoonteext.Sollverr;INNAVRRPSoolveervvrpSSolvver=nnaSoolveeraasIINAVVRPSSol
25、vver;vrppSollverr.GeenerrateeIntternnalRRoutteCoonteext=ttruee;/RRequuireedffortruue-sshappeaanddirrecttionnsvrrpSoolveer.DDefaaulttDatte=DaateTTimee.Toodayy;/SettthheddefaaulttdaatetobetoddaybboollpaartiialRResuultss=naSSolvver.Sollve(vrppNACConttextt,ggpMeessaagess,nnulll);/rrepoorterrrorssif(paar
26、tiialRResuultss|gppMesssagges.Couunt00)SttrinngBuuilddersErrrorrs=neewSStriingBBuillderr();foor(intti=00;iigpMMesssagees.CCounnt;i+)ssErrrorss.ApppenndLiine(gpMMesssagees.GGetMMesssagee(i).Deescrripttionn);Ressultts=sEErroors.ToSStriing();retturnn; 第第四步,处处理结果果,VRRP计算算后最重重要的结结果就是是生成的的车辆分分配情况况、配送送顺序和和
27、车辆配配送路径径,将车车辆行驶驶的详细细信息以以图文并并茂的方方式展示示出来。/GeetMMapsSSpattiallReeferrencce(toproojecctooutpputgeoomettrieesESSRI.ArccGISS.ADDF.WWeb.DattaSoourcces.ArccGISSSerrverr.MaapFuuncttionnaliitymf=(ESRRI.AArcGGIS.ADFF.Weeb.DDataaSouurcees.AArcGGISSServver.MappFunnctiionaalitty)MMapIInsttancce.GGetFFuncctioonall
28、ityy(NNA_MMapRResoourcceIttem);SSpattiallReffereenceemaapSppatiialRRefeerennce=mmf.MMapDDesccripptioon.SSpattiallReffereencee;/OuutpuutrresuultRouutessanndSStoppsUttiliity.OuttputtRouutessAsGGrapphiccs(sservverCConttextt,vvrpNNACoonteext,RoouteesGrraphhicssLayyer,maapSppatiialRRefeerennce);Uttiliity
29、.OuttputtOrdderssAsGGrapphiccs(sservverCConttextt,vvrpNNACoonteext,PoointtsGrraphhicssLayyer,maapSppatiialRRefeerennce);/CrreatterresuultssnoodeTTaskkRessulttNoddeppareentTTaskkRessulttNodde=Uttiliity.CreeateeTasskReesulltNoode(VRRPRResuultss);parrenttTasskReesulltNoode.Exppandded=ttruee;/GeetttheRo
30、uuteConntexxtffrommthherresuultsstoousseffordirrecttionnsINNAVRRPReesulltvvrpRResuult=vvrpNNACoonteext.RessulttassINNAVRRPReesullt;IINACConttexttroouteeNACConttextt=vrppRessultt.InnterrnallRouuteCConttextt;/Looopthrrougghttheressulttinggroouteesaandadddittemssfooreeachhrooutee(vvehiiclee)ISSetrouute
31、SSet=sservverCConttextt.CrreatteObbjecct(esrriSyysteem.SSet)aasIISett;IFFeattureeClaassrouuteRRouttesFFClaass=rroutteNAAConntexxt.NNACllassses.gett_IttemBByNaame(Rooutees)assIFFeattureeClaass;inttroouteeNammeInndexx=rouuteRRouttesFFClaass.FinndFiieldd(NNamee);IFeeatuureCCurssorrouutessRouuteFFCurrso
32、rr=rouuteRRouttesFFClaass.Seaarchh(nuull,faalsee);iintrouuteNNumbber=00;IFFeattureeroouteeFeaaturre=roouteesRoouteeFCuursoor.NNexttFeaaturre();whhilee(rroutteFeeatuure!=nulll)sttrinngrroutteNaame=rroutteFeeatuure.gett_Vaaluee(roouteeNammeInndexx).TToSttrinng();CChooosecollorforreaachrouuterouuteTTas
33、kkRessulttNodde.EExpaandeed=trrue;paarenntTaaskRResuultNNodee.Noodess.Addd(rroutteTaaskRResuultNNodee);/AdddSttatiistiicsTasskReesulltNoodevrppRouuteSStattistticssNodde=Uttiliity.GettVRPPRouuteSStattistticssNodde(sservverCConttextt,vvrpNNACoonteext,roouteeNamme);vrrpRoouteeStaatissticcsNoode.TexxtCeellSStylleAtttriibuttes.Addd(ffontt-weeighht,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年市政工程项目建议书
- 第二单元 除法(教案)2023-2024学年数学二年级下册
- 2024年水乳型涂料项目建议书
- 2024年加气混凝土砌块项目发展计划
- 2024-2030年全球及中国氨基乙醛二甲醇行业供需态势及产销规模预测报告
- 2024-2030年全球及中国低耗能冰箱行业竞争状况及投资盈利预测报告
- 2024-2030年全球与中国锡膏检测系统行业应用动态及前景趋势预测报告
- 2024-2030年全球与中国羧甲基纤维素钠(CMC)需求动态及前景趋势预测研究报告
- 2024-2030年全球与中国炼油面粉行业发展现状及趋势预测分析研究报告
- 2024-2030年全球与中国无线血糖仪行业市场深度调研及市场规模研究报告
- 110kV变电站工程建设汇报材料
- 峄山碑高清A4打印版(共37页)
- 八年级英语仁爱版下册Unit5_Topic1_SectionC优质课教案
- 浙教版初中数学知识点总结(共30页)
- 井巷工程教案第04章立井井筒的结构与设计
- 粤教版高中物理实验目录
- 充填灌浆试验施工方案
- 桥面系及附属工程施工合同
- 培训班结业式主持词
- 住院患者跌倒、坠床、压疮的风险评估及管理
评论
0/150
提交评论