创建ServiceArea
- /// <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, );
- 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 element
- return 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 = ;
- 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 locations
- int rowsIn = ;
- int rowsLocated = ;
- IQueryFilter qf = new QueryFilterClass();
- qf.WhereClause = "aaaaaaaaaaa";
- naClassLoader.Load(inputFeatureClass.Search(qf, true) as ICursor, null, ref rowsIn, ref rowsLocated);
- if (rowsLocated <= )
- {
- 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的更多相关文章
- Arcgis, ArcEngine, Arcgis Server使用开发汇总 索引
ArcGIS系列软件license及安装: Arcgis SDE10.1 和 Arcgis server10.1的授权文件license tnt_esri.dat Arcgis8.1安装license ...
- In-Memory:在内存中创建临时表和表变量
在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...
- 创建 OVS flat network - 每天5分钟玩转 OpenStack(134)
上一节完成了 flat 的配置工作,今天创建 OVS flat network.Admin -> Networks,点击 "Create Network" 按钮. 显示创建页 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ABP入门系列(2)——通过模板创建MAP版本项目
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...
- 记一次tomcat线程创建异常调优:unable to create new native thread
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
- TODO:GitHub创建组织的步骤
TODO:GitHub创建组织的步骤 使用GitHub进行团队合作,写这个步骤主要作用是为了OneTODO作为一个团队组织进行代码的分享,让更多人来参与. 使用帐号.密码登录GitHub 2.右上角加 ...
随机推荐
- JavaWeb开发环境准备之Linux篇
01 Linux环境准备 (本文在win10上使用 VMware12 + Ubuntu14.04) 1.JDK安装及相关配置 参考:http://blog.csdn.net/sxdtzhaoxin ...
- MySQL 插入数据时,中文乱码问题的解决(转)
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...
- mysql 常用sql
1.查询数据库.表的情况 show engines; #数据库的存储引擎show create TABLE User_Base_Info;#显示create table的sql语句show table ...
- android 获取应用的当前版本号&获取当前android系统的版本号
(转自:http://www.cnblogs.com/qsl568/archive/2012/03/14/2395636.html) 获取当前应用的版本号: private String getVer ...
- Java连接SQLServer2008终极解决办法(亲身上机演练版)
今天我一学妹问我,Java连接SQLServer2008数据库的问题,一直无法连接成功.想起自己刚开始学习的时候,在网上找各种文章,然后实际上机验证操作,花了一两天时间才搞定,一把辛酸泪呀!记得当时是 ...
- 【WPF高级】Cue or Hint or Watermark or Placehoder in Controls(为控件添加提示,水印,占位符)
通过Style实现对Texbox添加水印 <Style x:Key="placeHolder" TargetType="{x:Type TextBox}&quo ...
- Linux Core Dump
当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”).我们可以认为 core dump 是“内存快 ...
- Serial Port Programming using Win32 API(转载)
In this tutorial we will learn How to communicate with an external device like a microcontroller boa ...
- AC日记——约瑟夫问题 codevs 1282
1282 约瑟夫问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 有编号从1到N的N个小 ...
- 使用scrollpagination实现页面底端自动加载无需翻页功能
当阅读到页面最底端的时候,会自动显示一个"加载中"的功能,并自动从服务器端无刷新的将内容下载到本地浏览器显示. 这样的自动加载功能是如何实现的?jQuery的插件 ScrollPa ...