/// <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. Content-Type 之 application/json 与 text/javascript

    我们一般在服务端返回 json 格式数据给浏览器端时,会使用下面的代码: response.setContentType("text/javascript;charset=UTF-8&quo ...

  2. PHP函数整理(一)

    以下均参考自 php.net 及 W3School 1. urlencode() : 此函数便于将字符串编码并将其用于URL的请求部分,同时它还便于将变量传递给下一页. 函数语法 : string u ...

  3. windows 2003自动登录的具体步骤

    在win2003系统中,使用最多的可能就是远程操作了,关于远程操作的那些事很多用户还是有些迷茫的.如果win2003系统远程重启后,要重新登录系统十分的麻烦,如何才能实现重启后的自动登录呢?让高手告诉 ...

  4. Caffe源码解析2:SycedMem

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang loves baiyan/ 看到SyncedMem就知道,这是在做内存同步的操作.这类个类的 ...

  5. 【读书笔记《Bootstrap 实战》】6.单页营销网站

    我们已经掌握了很多实用 Bootstrap  的重要技能.现在,是时候拿出更多的创意来帮助客户实现他们全方位在线营销的愿望了.此次将带领大家做一个漂亮的单页高端营销网站. 主要任务如下: □ 一个大型 ...

  6. hdu 5652 India and China Origins 并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题目大意:n*m的矩阵上,0为平原,1为山.q个询问,第i个询问给定坐标xi,yi,表示i年后这 ...

  7. TCP 连接的建立和释放

    TCP(Transmission Control Protocol) 传输控制协议 1.三次握手协议(建立连接) TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: ...

  8. PHP实现多图片上传

    PHP实现多图片上传 今天在工作中遇到了一个需求:一个表单实现多个上传图片,类似于QQ空间上传照片的模式.即:可以一次性上传多个图片,但是封面图片只有一个. 最先,最重要的事,在服务器上对文件进行读写 ...

  9. 【C#】【Thread】BackgroundWorker的使用

    BackgroundWorker 可以用于启动后台线程. 主要的事件及参数: 1.DoWork --当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递Do ...

  10. OllyUni.dll

    OllyUni.dll 周银辉 好像很多人找不到OllyUni.dll ,下载在这里:http://www.phenoelit.org/win/index.html 注:在OllyDBG2.0中用不了 ...