/// <summary>/// Services the area./// </summary>/// <param name="networkDataset">The network dataset.</param>public void ServiceArea(INetworkDataset networkDataset){log.WriteLog("开始创建ServiceArea...");IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();IWorkspace workspace = workspaceFactory.OpenFromFile(Functions.g_WorkSpacePath, 0);IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;CreateSolverContext(networkDataset);if (!LoadLocations(featureWorkspace, Functions.g_Hospital)){log.WriteLog("LoadLocations失败!");}log.WriteLog("ServiceArea创建完成!");}/// <summary>/// Geodatabase function: get network dataset/// </summary>/// <param name="networkDataset">Input network dataset</param>/// <returns>DE network dataset</returns>public IDENetworkDataset GetDENetworkDataset(INetworkDataset networkDataset){// Cast from the network dataset to the DatasetComponent
IDatasetComponent dsComponent = networkDataset as IDatasetComponent;// Get the data elementreturn dsComponent.DataElement as IDENetworkDataset;}/// <summary>/// Create NASolver and NAContext/// </summary>/// <param name="networkDataset">Input network dataset</param>private void CreateSolverContext(INetworkDataset networkDataset){if (networkDataset == null) return;//Get the Data Element
IDENetworkDataset deNDS = GetDENetworkDataset(networkDataset);INASolver naSolver = new NAServiceAreaSolverClass();m_NAContext = naSolver.CreateContext(deNDS, naSolver.Name);((INAContextEdit)m_NAContext).Bind(networkDataset, new GPMessagesClass());}/// <summary>/// Loads the locations./// </summary>/// <param name="featureWorkspace">The feature workspace.</param>/// <param name="inputFacilities">The input facilities.</param>/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>private bool LoadLocations(IFeatureWorkspace featureWorkspace, string inputFacilities){IFeatureClass inputFeatureClass = null;try{inputFeatureClass = featureWorkspace.OpenFeatureClass(inputFacilities);}catch (Exception){log.WriteLog("Specified input feature class does not exist");return false;}INamedSet classes = m_NAContext.NAClasses;INAClass naClass = classes.get_ItemByName("Facilities") as INAClass;// delete existing locations, except barriers
naClass.DeleteAllRows();// Create a NAClassLoader and set the snap tolerance (meters unit)
INAClassLoader naClassLoader = new NAClassLoaderClass();naClassLoader.Locator = m_NAContext.Locator;((INALocator3)naClassLoader.Locator).MaxSnapTolerance = 500;naClassLoader.NAClass = naClass;// Create field map to automatically map fields from input class to NAClass
INAClassFieldMap naClassFieldMap = new NAClassFieldMapClass();naClassFieldMap.CreateMapping(naClass.ClassDefinition, inputFeatureClass.Fields);naClassLoader.FieldMap = naClassFieldMap;// Avoid loading network locations onto non-traversable portions of elements
INALocator3 locator = m_NAContext.Locator as INALocator3;locator.ExcludeRestrictedElements = true;locator.CacheRestrictedElements(m_NAContext);// load network locationsint rowsIn = 0;int rowsLocated = 0;IQueryFilter qf = new QueryFilterClass();qf.WhereClause = "aaaaaaaaaaa";  naClassLoader.Load(inputFeatureClass.Search(qf, true) as ICursor, null, ref rowsIn, ref rowsLocated);if (rowsLocated <= 0){log.WriteLog("Facilities were not loaded from input feature class");return false;}// Message all of the network analysis agents that the analysis context has changed
INAContextEdit naContextEdit = m_NAContext as INAContextEdit;naContextEdit.ContextChanged();return true;}

创建ServiceArea相关推荐

  1. git的详细用法和基础教程

    Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project  # 创建项目目录  cd project  # 进入 ...

  2. 创建数据库,指定数据库的字符集和编码顺序

    创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则} 举例: create database co ...

  3. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多

    Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多. 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径. 如: ln -s / ...

  4. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  5. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  6. etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)

    1. etcd 客户端 etcdctl 是一个命令行客户端,便于我们进行服务测试或手动修改数据库内容,etcdctl 在两个不同的 etcd 版本(v2 和 v3)下的功能和使用方式也完全不同. 一般 ...

  7. Go 学习笔记(78)— Go 标准库 net/http 创建服务端(接收 GET、POST 请求)

    使用 net/http 标准库创建一个 http 的 restful api 的服务端,用来处理 GET.POST 等请求. 源代码如下: package mainimport ("enco ...

  8. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)

    1. 链接器 链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件. 在链接过程中,它必须把符号(变量名.函数名等一些列标识符)用对应的数据的内存地址(变量地址.函数地址等 ...

  9. Go 学习笔记(64)— Go error.New 创建接口错误对象、fmt.Errorf 创建接口错误对象、errors.Is 和 errors.As

    1. error 接口定义 除用 panic 引发中断性错误外,还可返回 error 类型错误对象来表示函数调用状态.error 接口是 Go 原生内置的类型,它的定义如下: // $GOROOT/s ...

最新文章

  1. JDBC操作MySQL Lob字段记实
  2. Java锁有哪些种类,以及区别
  3. php实现tcp连接esp8266,ESP8266之TCP透传
  4. L2-006 树的遍历
  5. php date 有warning,php提示PHP Warning: date(): It is not safe to rely on the......错误的解决办法...
  6. Java LinkedHashMap forEach()方法与示例
  7. centos7 ftp服务器搭建_CentOS7下搭建Jellyfin个人流媒体服务器
  8. 3个框框带你理解EventLoop
  9. mysql学习资料_PHP程序员2020学习方向:高并发、性能调优、分布式、微服务...
  10. for/map循环里面进行异步操作async/await后返回数据,for里不能直接return执行方法函数...
  11. 华为linux服务器系统安装,linux服务器系统安装
  12. 使用JavaScript开发IE浏览器本地插件实例
  13. PHP算法之斗牛游戏牛型判断
  14. 产业分析:东方甄选vs罗永浩直播间
  15. 如何将静图制作成动图?教你一招快速合成GIF动图的方法
  16. 如何利用注册表修改开机启动程序并提高电脑开机速度!
  17. wps office 办公软件下载
  18. 自建数据库与云数据库RDS具体内容的优缺点
  19. HiBench算法简介
  20. (转载)NB-IoT和eMTC异同

热门文章

  1. Drools环境搭建
  2. JSP_tomcat_mysql_注冊验证用户;
  3. 信息图:iOS 7开发者需要知道的事
  4. mysql忘记命令后半部分_MySQL常用命令
  5. 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS-系统概述
  6. python随机生成中文句子_python – 如何使用NLTK从诱导语法中生成句子?
  7. 理光打印机如何设置邮件服务器,技术员帮您win10系统网络共享理光打印机的设置方法的操作办法...
  8. mask rcnn 召回率_搜索推荐召回amp;amp;粗排相关性优化最新进展—2020
  9. python数据加载常规教程_Python加载数据的5种不同方式(收藏)
  10. java 类加载器卸载,【深入明白Java虚拟机 】类加载器的命名空间以及类的卸载...