/// <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的更多相关文章

  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. Linux笔记:使用Vim编辑器

    Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进. 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improv ...

  2. PHP+Apache+Zend Studio+MySql+Navicat+phpAdmin

    本文章介绍整个PHP开发环境的搭建 数据库:MySql  5.5.50 数据库软件:Navicat 11.1.20和phpAdmin 4.6.5.1任选 php库:PHP 7.0.13 服务器:Apa ...

  3. Source Insight常用功能设置

    熟悉工具的使用能在一定程度上提高工作效率,但工具永远只是工具,大家要把重点放在内功的修炼上. 符号导航 符号(变量.宏定义.结构定义.枚举.函数等等)在SI 中的检索非常方便.Ctrl+鼠标左键或Ct ...

  4. jni调试3(线程调试env变量问题)

    jni层调试线程死机原因 一,导致死机原因:   jni层中  线程函数中  只要添加调用env 的函数 ,,就会死机     二,解决方法 第一我们应该理解: ①(独立性) JNIEnv 是一个与线 ...

  5. 【转】能否用讲个故事的方式,由浅入深,通俗易懂地解释一下什么是天使投资,VC,PE.

    能否用讲个故事的方式,由浅入深,通俗易懂地解释一下什么是天使投资,VC,PE 今天在知乎上看到一篇文章,觉得值得一转的,Here. 我给楼主讲个完整点的故事吧.长文慎点,前方高能,自备避雷针.18岁以 ...

  6. Hibernate核心技术简介

    Hibernate核心技术简介 1.Hibernate映射文件开发     Hibernate映射文件就是项目中*.hbm.xml文件,其主要是完成各元素的配置,包括根元素.类元素.定义主键.设置主键 ...

  7. 一个完整的TCP连接

    当我们向服务器发送HTTP请求,获取数据.修改信息时,都需要建立TCP连接,包括三次握手,四次分手. 什么是TCP连接? 为实现数据的可靠传输,TCP要在应用进程间建立传输连接.它是在两个传输用户之间 ...

  8. google的云盘与公司网盘

    很多人都很期待Google推出的云存储服务,也就是公司网盘.因为多数人相信,没有比google更适合做云存储的公司了,作为一个标准的Web公司或者说互联网公司,云端理所应当的优秀.但比起几年前听传言时 ...

  9. 科学计算器(JAVA实现)

    前记: 大二学 Java 的时候写的,现在贴上来,只为留念. 再翻代码,自己看着都头疼.一重重的 if 嵌套,当时写得费劲,现在看着更费劲. 代码思想: 代码的大致思想是这样: 首先定义一个算式字符串 ...

  10. [No000074]C#创建桌面快捷方式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...