1. /// <summary>
  2.  
  3. /// Services the area.
  4.  
  5. /// </summary>
  6.  
  7. /// <param name="networkDataset">The network dataset.</param>
  8.  
  9. public void ServiceArea(INetworkDataset networkDataset)
  10.  
  11. {
  12.  
  13. log.WriteLog("开始创建ServiceArea...");
  14.  
  15. IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();
  16.  
  17. IWorkspace workspace = workspaceFactory.OpenFromFile(Functions.g_WorkSpacePath, );
  18.  
  19. IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
  20.  
  21. CreateSolverContext(networkDataset);
  22.  
  23. if (!LoadLocations(featureWorkspace, Functions.g_Hospital))
  24.  
  25. {
  26.  
  27. log.WriteLog("LoadLocations失败!");
  28.  
  29. }
  30.  
  31. log.WriteLog("ServiceArea创建完成!");
  32.  
  33. }
  34.  
  35. /// <summary>
  36.  
  37. /// Geodatabase function: get network dataset
  38.  
  39. /// </summary>
  40.  
  41. /// <param name="networkDataset">Input network dataset</param>
  42.  
  43. /// <returns>DE network dataset</returns>
  44.  
  45. public IDENetworkDataset GetDENetworkDataset(INetworkDataset networkDataset)
  46.  
  47. {
  48.  
  49. // Cast from the network dataset to the DatasetComponent
  50.  
  51. IDatasetComponent dsComponent = networkDataset as IDatasetComponent;
  52.  
  53. // Get the data element
  54.  
  55. return dsComponent.DataElement as IDENetworkDataset;
  56.  
  57. }
  58.  
  59. /// <summary>
  60.  
  61. /// Create NASolver and NAContext
  62.  
  63. /// </summary>
  64.  
  65. /// <param name="networkDataset">Input network dataset</param>
  66.  
  67. private void CreateSolverContext(INetworkDataset networkDataset)
  68.  
  69. {
  70.  
  71. if (networkDataset == null) return;
  72.  
  73. //Get the Data Element
  74.  
  75. IDENetworkDataset deNDS = GetDENetworkDataset(networkDataset);
  76.  
  77. INASolver naSolver = new NAServiceAreaSolverClass();
  78.  
  79. m_NAContext = naSolver.CreateContext(deNDS, naSolver.Name);
  80.  
  81. ((INAContextEdit)m_NAContext).Bind(networkDataset, new GPMessagesClass());
  82.  
  83. }
  84.  
  85. /// <summary>
  86.  
  87. /// Loads the locations.
  88.  
  89. /// </summary>
  90.  
  91. /// <param name="featureWorkspace">The feature workspace.</param>
  92.  
  93. /// <param name="inputFacilities">The input facilities.</param>
  94.  
  95. /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
  96.  
  97. private bool LoadLocations(IFeatureWorkspace featureWorkspace, string inputFacilities)
  98.  
  99. {
  100.  
  101. IFeatureClass inputFeatureClass = null;
  102.  
  103. try
  104.  
  105. {
  106.  
  107. inputFeatureClass = featureWorkspace.OpenFeatureClass(inputFacilities);
  108.  
  109. }
  110.  
  111. catch (Exception)
  112.  
  113. {
  114.  
  115. log.WriteLog("Specified input feature class does not exist");
  116.  
  117. return false;
  118.  
  119. }
  120.  
  121. INamedSet classes = m_NAContext.NAClasses;
  122.  
  123. INAClass naClass = classes.get_ItemByName("Facilities") as INAClass;
  124.  
  125. // delete existing locations, except barriers
  126.  
  127. naClass.DeleteAllRows();
  128.  
  129. // Create a NAClassLoader and set the snap tolerance (meters unit)
  130.  
  131. INAClassLoader naClassLoader = new NAClassLoaderClass();
  132.  
  133. naClassLoader.Locator = m_NAContext.Locator;
  134.  
  135. ((INALocator3)naClassLoader.Locator).MaxSnapTolerance = ;
  136.  
  137. naClassLoader.NAClass = naClass;
  138.  
  139. // Create field map to automatically map fields from input class to NAClass
  140.  
  141. INAClassFieldMap naClassFieldMap = new NAClassFieldMapClass();
  142.  
  143. naClassFieldMap.CreateMapping(naClass.ClassDefinition, inputFeatureClass.Fields);
  144.  
  145. naClassLoader.FieldMap = naClassFieldMap;
  146.  
  147. // Avoid loading network locations onto non-traversable portions of elements
  148.  
  149. INALocator3 locator = m_NAContext.Locator as INALocator3;
  150.  
  151. locator.ExcludeRestrictedElements = true;
  152.  
  153. locator.CacheRestrictedElements(m_NAContext);
  154.  
  155. // load network locations
  156.  
  157. int rowsIn = ;
  158.  
  159. int rowsLocated = ;
  160.  
  161. IQueryFilter qf = new QueryFilterClass();
  162.  
  163. qf.WhereClause = "aaaaaaaaaaa";
  164.  
  165. naClassLoader.Load(inputFeatureClass.Search(qf, true) as ICursor, null, ref rowsIn, ref rowsLocated);
  166.  
  167. if (rowsLocated <= )
  168.  
  169. {
  170.  
  171. log.WriteLog("Facilities were not loaded from input feature class");
  172.  
  173. return false;
  174.  
  175. }
  176.  
  177. // Message all of the network analysis agents that the analysis context has changed
  178.  
  179. INAContextEdit naContextEdit = m_NAContext as INAContextEdit;
  180.  
  181. naContextEdit.ContextChanged();
  182.  
  183. return true;
  184.  
  185. }

创建ServiceArea的更多相关文章

  1. Arcgis, ArcEngine, Arcgis Server使用开发汇总 索引

    ArcGIS系列软件license及安装: Arcgis SDE10.1 和 Arcgis server10.1的授权文件license tnt_esri.dat Arcgis8.1安装license ...

  2. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  3. 创建 OVS flat network - 每天5分钟玩转 OpenStack(134)

    上一节完成了 flat 的配置工作,今天创建 OVS flat network.Admin -> Networks,点击 "Create Network" 按钮. 显示创建页 ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  6. 记一次tomcat线程创建异常调优:unable to create new native thread

    测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...

  7. 在WPF中使用依赖注入的方式创建视图

    在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...

  8. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

  9. TODO:GitHub创建组织的步骤

    TODO:GitHub创建组织的步骤 使用GitHub进行团队合作,写这个步骤主要作用是为了OneTODO作为一个团队组织进行代码的分享,让更多人来参与. 使用帐号.密码登录GitHub 2.右上角加 ...

随机推荐

  1. JavaWeb开发环境准备之Linux篇

    01 Linux环境准备 (本文在win10上使用 VMware12 + Ubuntu14.04)   1.JDK安装及相关配置 参考:http://blog.csdn.net/sxdtzhaoxin ...

  2. MySQL 插入数据时,中文乱码问题的解决(转)

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  3. mysql 常用sql

    1.查询数据库.表的情况 show engines; #数据库的存储引擎show create TABLE User_Base_Info;#显示create table的sql语句show table ...

  4. android 获取应用的当前版本号&获取当前android系统的版本号

    (转自:http://www.cnblogs.com/qsl568/archive/2012/03/14/2395636.html) 获取当前应用的版本号: private String getVer ...

  5. Java连接SQLServer2008终极解决办法(亲身上机演练版)

    今天我一学妹问我,Java连接SQLServer2008数据库的问题,一直无法连接成功.想起自己刚开始学习的时候,在网上找各种文章,然后实际上机验证操作,花了一两天时间才搞定,一把辛酸泪呀!记得当时是 ...

  6. 【WPF高级】Cue or Hint or Watermark or Placehoder in Controls(为控件添加提示,水印,占位符)

      通过Style实现对Texbox添加水印 <Style x:Key="placeHolder" TargetType="{x:Type TextBox}&quo ...

  7. Linux Core Dump

    当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”).我们可以认为 core dump 是“内存快 ...

  8. Serial Port Programming using Win32 API(转载)

    In this tutorial we will learn How to communicate with an external device like a microcontroller boa ...

  9. AC日记——约瑟夫问题 codevs 1282

    1282 约瑟夫问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Description 有编号从1到N的N个小 ...

  10. 使用scrollpagination实现页面底端自动加载无需翻页功能

    当阅读到页面最底端的时候,会自动显示一个"加载中"的功能,并自动从服务器端无刷新的将内容下载到本地浏览器显示. 这样的自动加载功能是如何实现的?jQuery的插件 ScrollPa ...