上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法。

这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDataset()方法创建网络数据集。

涉及到的接口(全在Geodatabase类库中)

IDatasetContainer2、IDataset、INetworkDataset、IDEDataset、IDENetworkDataset4(重点)

涉及到的枚举类型(全在Geodatabase类库中)

esriDatasetType(本例使用枚举值为esriDTNetworkDataset)

涉及到的类(全在Geodatabase类库中)

DENetworkDataset(实现了IDEDataset、IDENetworkDataset接口)

1. DENetworkDataset类和IDENetworkDataset接口介绍

DENetworkDataset是一个轻量级的对象,保存有关网络数据集的信息(在内存中)。

它可以与更新网络数据集的INetworkBuild接口的UpdateSchema()方法配合使用。

IDENetworkDataset4接口,是IDENetworkDataset的升级版,过程还有2、3两个接口。IDENetworkDataset接口用于访问网络数据集中的某些网络属性,例如道路等级信息。IDENetworkDataset接口与InetworkBuild接口的UpdateSchema方法结合使用,如添加多个网络数据源或网络属性到网络数据集中。这些操作的过程与在Catalog中创建网络数据集的设置过程大体一致。访问网络数据集中的数据元素将使用IDatasetComponent接口及DataElement方法。

IDENetworkDataset接口的属性表如下:

这个接口几乎可以说是创建网络数据集的核心。有了IDENetworkDataset接口,才能在内存中组织网络数据集的各种复杂的数据,它的类DENetworkDataset的实例才是网络数据集的数据本身,而INetworkDataset只是存在于数据库中的数据集。

他们两个接口的关系是:

IDENetworkDataset作为数据元素,被IDatasetContainer2的CreateDataset()方法作用,产生的结果就是INetworkDataset,如下代码:

 1         /// <summary>
 2         /// 根据要素数据集与数据元素网络数据集,创建网络数据集。
 3         /// </summary>
 4         /// <param name="_pFeatureDataset">包含网络数据集的要素数据集</param>
 5         /// <param name="_pDENetDataset">数据元素网络数据集</param>
 6         /// <returns></returns>
 7         public INetworkDataset CreateBuildingDataset(IFeatureDataset _pFeatureDataset, IDENetworkDataset2 _pDENetDataset)
 8         {
 9             IFeatureDatasetExtensionContainer featureDatasetExtensionContainer = (IFeatureDatasetExtensionContainer)_pFeatureDataset;
10             IFeatureDatasetExtension featureDatasetExtension = featureDatasetExtensionContainer.FindExtension(esriDatasetType.esriDTNetworkDataset);
11             IDatasetContainer2 datasetContainer2 = (IDatasetContainer2)featureDatasetExtension;
12             IDEDataset deNetDataset = _pDENetDataset as IDEDataset;
13             //创建网络数据集
14             INetworkDataset networkDataset = (INetworkDataset)datasetContainer2.CreateDataset(deNetDataset);
15             return networkDataset;
16         }

于是,所有的任务就交给了如何创建一个数据元素网络数据集(DENetworkDataset,接口是IDENetworkDataset)。

有关数据元素网络数据集和网络数据集的区别,官方的解释也不是很明确,我个人的理解就是,如果要访问网络数据集中各个元素,就要访问其数据元素网络数据集,网络数据集只不过是后者+构建出来的一些拓扑法则而已。也可能是我翻译水平不够...

下篇文章继续研究INetworkDataset和IDENetworkDataset的各种属性如何设置。

总之,构建网络数据集是一个坑,基于INetworkDataset做NetworkAnalyst又是一个坑。两个坑填完,也就是所谓的AO二次开发之网络分析了。

转载于:https://www.cnblogs.com/onsummer/p/6994366.html

ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集...相关推荐

  1. ArcGIS教程:创建网络数据集(一)

    在本练习中,您将使用地理数据库 San Francisco 中的街道要素和转弯要素创建一个网络数据集.您还可以加入历史交通流量数据,以便求解取决于时间的路径. 创建网络数据集 步骤: 单击开始 > ...

  2. ArcGIS网络分析之常见问题分析、诊断篇

    文章目录 一.停靠点无效 二.构建网络数据集时,检测到孤立点 三.求解失败 四.分析结果不符合预期 1.AB两点间没有路 2.服务区分析,设置中断值1公里,为什么结果是1.3公里? 3.ArcGIS ...

  3. ArcGIS构建网络数据集步骤

    创建网络数据集步骤: 单击开始 > 所有程序 > ArcGIS > ArcCatalog 10.2 启动 ArcCatalog. 启用 ArcGIS Network Analyst ...

  4. ArcGIS网络分析之构建网络分析数据集(一)

    说明: 1. 本文主要用于演示网络分析服务的搭建过程.所以在此不会深入讨论网络分析服务的每一个细节,本文的目的就是让初学者学会使用网络分析服务进行基本的分析(主要针对后续的WEB开发):路径分析,最近 ...

  5. ArcGIS网络分析之Silverlight客户端最近设施点分析(四)

    ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 原文:ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 在上一篇中说了如何实现最近路径分析,本篇将讨论如何 ...

  6. 01-【介绍说明篇】Hello,ArcGIS网络分析

    先来看下什么是网络. 网络是由一系列相互连通的点和线组成,来描述地理要素(资源)的流动情况.如道路网.河流网.管线网等. 那么我们要知道从A点到B点的路线.河流的污染源在哪.水管漏水关闭哪个阀门,需要 ...

  7. ArcGIS 网络分析 warning : the delay impedance of locationXX in Facilities exceeds the cutoff impedance

    ArcGIS 网络分析 warning : the delay impedance of locationXX in Facilities exceeds the cutoff impedance 大 ...

  8. arcgis网络分析最短距离_ArcGIS 网络分析[2.1] 最短路径

    最短路径求解 [如果看到此博客还没有网络数据集的,请参考第一章的内容,点击我,看目录] 最短路径,是什么最短?时间最短?距离最短?什么距离?路程距离? 考虑到拥堵问题,限速问题,换乘问题,在现实的最短 ...

  9. 【ArcGIS风暴】ArcGIS平台上点云(.las)数据生成等高线方法案例精解

    las是点云数据常见的存储格式,摄影测量和激光雷达数据均采用此格式,点云数据常用来生成等高线,地籍测量,土方量计算等.本文讲解在ArcGIS平台上生成等高线并转换为dwg格式供CASS使用. 扩展阅读 ...

最新文章

  1. ​中国自动驾驶技术有多强?你可能还不知道
  2. Spring Cloud Sleuth 进阶实战
  3. 如何加入家庭组计算机打印机,如何使用利用win7家庭组打印机
  4. 扫码点餐小程序源码_扫码点餐小程序有什么用?怎么制作?
  5. HDU3923-Invoker-polya n次二面体
  6. Activity configChanges 含义
  7. Nested Loop,Sort Merge Join,Hash Join
  8. 2017江苏事业单位计算机类,2017年上半年江苏事业单位计算机岗真题
  9. Linux find 命令概览
  10. vivado-Matlab联合仿真FIR滤波器
  11. android Activity生命周期总结
  12. mysql建立数据库连接时出错_建立数据库连接时出错什么意思(手把手教你如何建立数据库连接)...
  13. 如何通过企业微信做精细化社群运营
  14. 机器学习导论(二)-模型评估与选择
  15. java广告投放系统_广告投放系统
  16. 使用PROJ将空间坐标点从WGS84坐标系转换到UTM坐标系
  17. css3立方体3d旋转,纯css3实现的3D立体动态旋转立方体特效
  18. 链接h5代码_H5是什么?今天给大家做一个全面的解释
  19. 转:瓦片地图TiledMap
  20. php视频降清晰度,HTML5视频播放器-video-js(带清晰度切换) | 小灰灰博客

热门文章

  1. 附加数据时出错,有关详细信息,请单击消息。
  2. dos通过for命令截取字符串
  3. 我为什么选择在北上广深打拼?
  4. 天天写业务代码?写业务代码中的成长机会!
  5. 厉害了!一文看懂各大互联网支付系统整体架构
  6. JVM 监控以及内存分析
  7. 如何实现一个Java Class解析器
  8. 框架:Hibernate和Mybatis的区别
  9. keyshot渲染图文教程_一篇文章教你学会3D建模和渲染 反正我是信了
  10. 基于python的语料库数据处理电子版_基于 Python 自然语言处理工具包在语料库研究中的运用...