为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于Shp文件组成的网络数据集)。

当你拥有了合适的对象后,就可以使用IDatasetContainer2接口去创建或者打开网络数据集了。

如果当前打开的Map对象中有网络数据集图层,那么就可以通过访问INetworkLayer接口的NetworkDataset字段来访问网络图层中的网络数据集。

IDatasetContainer2接口的CreateDataset方法可以用于创建网络数据集。网络数据集创建完成后应立即用INetworkBuild接口的BuildNetwork方法构建。

网络数据集的NetworkDatasetName对象可以被IDatasetContainer2接口的DatasetNames方法访问。

涉及到的重要接口:

IDatasetContainer2(Geodatabase类库中)、INetworkLayer(Carto类库中)

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

NetworkDatasetFDExtension、NetworkDatasetWorkspaceExtension

NetworkDatasetNameClass

1. 寻找IDatasetContainer2变量(要素数据集、Shp文件、SDC文件)

下面的代码就演示了如何在给定数据库的要素数据集(要素数据集名称为fds)中打开网络数据集。

 IFeatureDatasetExtensionContainer fdsExtCont = fds as IFeatureDatasetExtensionContainer;  //要素数据集身份转化
IFeatureDatasetExtension fdsExt = fdsExtCont.FindExtension(esriDTNetworkDataset); //从要素数据集中找到IFeatureDatasetExtension对象
IDatasetContainer2 dsCont = fdsExt as IDatasetContainer2; //将IFeatureDatasetExtension对象身份转化为IDatasetContainer2

下面的代码就演示了如何在给定shp文件(shp文件对象的名称为shpWS)中打开网络数据集。

 IWorkspaceExtensionManager wsExtMgr = shpWS as IWorkspaceExtensionManager;
UID myUID = new UIDClass();
myUID.Value = "esriGeoDatabase.NetworkDatasetWorkspaceExtension";
IWorkspaceExtension wsExt = wsExtMgr.FindExtension(myUID); //与上面类似
IDatasetContainer2 dsCont = wsExt as IDatasetContainer2; //与上面类似

下面的代码演示了如何从给定的SDC文件中获取网络数据集(SDC文件对象名为sdcWS)

 IWorkspaceExtensionManager wsExtMgr = sdcWS as IWorkspaceExtensionManager;
UID myUID = new UIDClass();
myUID.Value = "esriGeoDatabase.NetworkDatasetWorkspaceExtension";
IWorkspaceExtension wsExt = wsExtMgr.FindExtension(myUID);
IDatasetContainer2 dsCont = wsExt as IDatasetContainer2;

打开SDC中的网络数据集

2. 使用IDatasetContainer2访问网络数据集

一旦获取了用于访问合适的数据源(文件地理数据库或shp文件)的网络数据集扩展对象后,你就可以访问网络数据集了。例如,下面的代码就演示了如何打开名为“Street_ND”的网络数据集。

 // 上面的IDatasetContainer2变量 dsCont 的方法DatasetByName()找到名为"Street_ND"的网络数据集,返回一个IDataset对象
IDataset dataset = dsCont.DatasetByName(esriDTNetworkDataset, "Street_ND");
// 使用INetworkDataset变量 networkDataset 接住IDataset对象(经身份转换为INetworkDataset)
INetworkDataset networkDataset = dataset as INetworkDataset;

这样,就拿到了INetworkDataset,有了NetworkDataset(网络数据集),就可以转入NetworkAnalyst类库中的网络分析了。

ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】的更多相关文章

  1. ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径

    上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...

  2. 【AO笔记】有关使用AO基于shp文件创建网络数据集的一个细节

    前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题. 由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料... 以前的研究中,创建网络数据集是根据IDatasetC ...

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

    上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...

  4. ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

    前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何"使用自己的数据"创建"网络数据集"的文章. 有介绍几何网络的,有介绍如何用官方SanFrancis ...

  5. ArcGIS 网络分析[8.3] 设置IDENetworkDataset的属性及INetworkDataset的对比/创建网络数据集

    创建网络数据集就得有各种数据和参数,这篇文章很长,慎入. 网络分析依赖于网络数据集的质量,这句话就在这里得到了验证:复杂.精确定义. 本节目录如下: 1. INetworkDataset与IDENet ...

  6. ArcGIS 网络分析[1] 利用自定义点线数据(shp或数据库)创建网络数据集【小白向】

    前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何“使用自己的数据”创建“网络数据集”的文章. 究其原因,是因为当前的高质量的线数据或保密,或采集困难. 有介绍几何网络的,有介绍如何用官方S ...

  7. ArcGIS 网络分析[1.5] 使用点线数据一起创建网络数据集(如何避免孤立点/点与线的连通性组合结果表)

    ArcGIS中最基本的三种矢量数据是什么?点线面. 网络中除了路网之外,还会有地物点. 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网.但是在大型的决策任务中,网络数据集就不只是公路 ...

  8. ArcGIS 网络分析[1.3] 在个人地理数据库中创建网络数据集/并简单试验最佳路径

    上篇使用shp文件创建网络数据集,然而在ArcGIS 9中就支持地理数据库了,数据库的管理更为科学强大. 本篇就使用个人地理数据库进行建立网络数据集,线数据仍然可以是1.1中的线数据,但是我做了一些修 ...

  9. ArcGIS 网络分析[8.5] 资料5 网络分析拓展模块及各种接口说明

    说完了网络数据集如何用AO来创建,接下来就说说如何用另一个类库--NetworkAnalyst来做网络分析. 区别于NetworkAnalysis,这个是几何网络分析用的类库. 本篇先做类库和有关接口 ...

随机推荐

  1. C语言之二维数组棋盘游戏

    #include<iostream> #include<stdio.h> using namespace std; int main() { //-1 没人赢 0:O赢 1:X ...

  2. Java(概略篇)

    准备 下载并安装Java jdk 和 编辑器(eclipse或Netbeans) 配置环境变量 第一个程序 public class test{ public static void main(Str ...

  3. 小程序采坑系列-this.setData

    今天踩了大坑,坑里还都是碎瓶渣子.. 先说一下基本使用.官网也有. 比如说你在main.js里面有这些变量.想修改某些值. data: { main_view_bgcolor: "" ...

  4. mysql主从复制笔记

    一:测试环境介绍 主从复制测试环境是ubuntu+mysql5.7,master服务器ip是192.168.71.135,slave服务器ip是192.168.71.137,ubuntu环境是从一台已 ...

  5. 翻译连载 | 附录 C:函数式编程函数库-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  6. mysql 各数据类型的 大小及长度

    数字型 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0, ...

  7. JavaScript参考

    要查看英语原文,请勾选"英语"复选框.也可将鼠标指针移到文本上,在弹出窗口中显示英语原文. 翻译 英语 JavaScript 语言参考 JavaScript 是一种可嵌入网页和其他 ...

  8. dubbo源码—dubbo自定义spring xml标签

    dubbo为了和spring更好的集成,提供了一些xml配置标签,也就是自定义标签 spring自定义标签 spring自定义标签的方式如下: 设计配置属性和JavaBean 编写xsd文件,校验xm ...

  9. Python的集合

    1. Python的集合 1.1 集合的定义 在Python中, 集合set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.Python中的集合set类 ...

  10. idea/eclipse下Maven工程集成web服务(tomcat、jetty)

     idea/eclipse下Maven工程集成web服务 转载请注明出处:http://www.cnblogs.com/funnyzpc/p/8093554.html 应用服务器最常用的一般有这哥仨: ...