ArcGIS Server 开发系列(七)--物流配送2024-12-31 15:58 by Flyingis, 5230 visits, 作者:Flyingis ArcGIS Server 开发系列的文章至今已经一年多了,虽然文章只有短短六篇,也比较基础,但值得兴奋的是帮助了不少第一次接触 ArcGIS Server 的开发者,现在不少都已经完成一两个项目了,信任收获不小,有时间可以和大家一起分享经验。今日开始,我们将继续这个系列教程,争取覆盖 ADF 开发常用功能,以帮助更多的人轻松入门 ADF 开发。 目标: 实现简易的物流配送(VRP) 准备工作: 1.重新复习《ArcGIS Server 开发系列(六)--自定义 Tasks》 2.准备数据"%ArcGISInstallDir%\DeveloperKit\SamplesNET\Server\data\SanFranciscoNetwork" 3.发布 NATasks.mxd 地图服务,添加 Network Analyst 功能服务 4.MapResourceManager 中添加一个 ArcGIS Server Local 类型服务 在这个应用中,多车配送的功能封装为一个自定义的 Task,然后生成一个 dll 添加到ASP.Net 工具箱中,由 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 , 需 要 构 建 Task 的 UI 和 业 务 逻 辑 , UI 构 建 通 过 重 写 方 法CreateChildControls完成,咱们最终实现的效果:相应的代码比较容易看懂,结合上面实现的 UI 效果图和代码注释就能明白每部分代码所完成的功能,实现代码:protected override void CreateChildControls(){ Controls.Clear(); base.CreateChildControls(); #region Create top level table System.Web.UI.WebControls.Table table = new System.Web.UI.WebControls.Table(); table.Width = System.Web.UI.WebControls.Unit.Pixel(240); Controls.Add(table); TableRow tr; TableCell td; #endregion #region Orders Label tr = new TableRow(); td = new TableCell(); td.Text =...