ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

为了创建或打开一个网络数据集,你必须使用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)中打开网络数据集。

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

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

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

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

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

打开SDC中的网络数据集

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

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

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

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

时间: 2024-10-16 20:32:54

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

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

前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题. 由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料... 以前的研究中,创建网络数据集是根据IDatasetContainer2.CreateDataset()方法创建的,参数是一个IDEDataset对象,返回一个IDataset引用. IDatasetContainer2可以根据IFeatureDataset接口(若为地理数据库要素数据集创建网络)或IWorkspace接口(若为shp文件创建单一网络)

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

ArcGIS中最基本的三种矢量数据是什么?点线面. 网络中除了路网之外,还会有地物点. 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网.但是在大型的决策任务中,网络数据集就不只是公路网那么简单了. 在城市与城市之间,有高速公路,国道,高铁,普铁,甚至还有水路. 如此复杂的网络模型是如何连通的呢?他们之间的交点又有什么样的连通方式呢?在这里,我仍然卖个关子,在以后的连通性一章,会详细说明.在文末,就会看到点作为网络数据集中十分强大而关键的一员出现,其意义是多连通组的时候,作为媒介

ArcGIS教程:创建网络数据集(三)

现在,默认情况下 Network Analyst 不会穿过 RestrictedTurns 要素类中的任何转弯要素.这是对要避开的违法转弯或危险转弯进行建模的好方法.街道源的赋值器为空,因此当使用 RestrictedTurns 进行限制时,这些街道源仍然是可穿过的. 单击确定返回新建网络数据集 向导. 右键单击 Hierarchy 行,然后选择默认情况下使用.蓝色符号将从属性中移除.这意味着使用此网络数据集创建分析图层时不会默认使用等级. 单击下一步. 单击是设置方向. 单击方向. 将打开网络

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

在本练习中,您将使用地理数据库 San Francisco 中的街道要素和转弯要素创建一个网络数据集.您还可以加入历史交通流量数据,以便求解取决于时间的路径. 创建网络数据集 步骤: 单击开始 > 所有程序 > ArcGIS > ArcCatalog 10.1 启动 ArcCatalog. 启用 ArcGIS Network Analyst 扩展模块. 单击自定义 > 扩展模块. 将打开扩展模块 对话框. 选中 Network Analyst. 单击关闭. 在标准工具 工具条上,单

ArcGIS教程:创建网络数据集(二)

此数据集带高程字段,因此请确保选择使用高程字段选项. 网络数据集中的高程设置进一步定义了连通性.为了帮助理解,假设两条边在 x 和 y 空间内端点重合,但高程不同(一个端点高于另一个).此外,假设连通性策略设置为端点.如果忽略高程,两条边相连.但如果考虑高程,它们就不相连. 构建高程模型的方式有两种:使用几何中的实际高程值或使用高程字段中的逻辑高程值. Streets 要素类具有整数形式的逻辑高程值,存储在 F_ELEV 和 T_ELEV 字段中.例如,如果两个重合端点的字段高程值为 1,则边会

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

上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDataset()方法创建网络数据集. 涉及到的接口(全在Geodatabase类库中) IDatasetContainer2.IDataset.INetworkDataset.IDEDataset.IDENetworkDataset4(重点) 涉及到的枚举类型(全在Geodatabase类库中) esr

ArcGIS 网络分析[1] 介绍与博文目录【更新中】

网络分析是个热点,理论上是属于计算机图形学和数据结构的,GIS以此为基础做出应用. 以下列举本人在学习中遇到的网络分析问题与经验总结. 平台:Windows 10操作系统,ArcGIS for Desktop 10.2或更高版本 用到的软件和SDK:VisualStudio 2012或更高版本.ArcGIS Objects 10.2或更高版本.Microsoft.NET Framework 3.5或更高版本 [网络分析介绍] [博文目录] 1. ArcGIS 网络分析[2] 利用自定义基础数据创

ArcGIS 网络分析[8] ArcObjects二次开发之底层网络分析开发

基于现有的线要素类.转弯要素类(在地理数据库的要素数据集中),要用AO做两件事: 1. 创建网络数据集(使用Geodatabase类库) 2. 执行网络分析(使用NetworkAnalyst类库) 在8.1-8.4,着重介绍如何用AO创建网络数据集,这部分十分重要. 在8.5-8.6,利用创建好的数据库去做路径分析. 具体细节就不细说了,大家可以往下看,这个过程相当复杂头疼,我会尽力图文并茂写清楚,没有一年以上AO开发能力的慎入.

ArcGIS 网络分析[1.4] 制作点线要素时需要注意的地方

有很多同学虽然成功做好了网络数据集,但是分析时会出现这样的问题: 这是为什么呢? 这有三个可能的原因: 1. 两个点之间所有的道路没有连通(问题出在点.线数据上). 2. 网络数据集出现了孤立的点位置. 3. 网络数据集的连通性有问题. 我就从这三个方面说说,如何避免这些问题.因为标题起的是点线要素的制作情况,我就着重讲第一点了,后两个情况简单说说,在第四章网络数据集的连通性会详细说. 1. 问题出在点线数据上 还分两个简单的情况: 一个是点不在线上: 另一个比较复杂:线之间二维没有由折点连通.