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

前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题。

由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料...

以前的研究中,创建网络数据集是根据IDatasetContainer2.CreateDataset()方法创建的,参数是一个IDEDataset对象,返回一个IDataset引用。

IDatasetContainer2可以根据IFeatureDataset接口(若为地理数据库要素数据集创建网络)或IWorkspace接口(若为shp文件创建单一网络)转换而来。

读取shp文件,转换接口为IFeatureClass后,将IFeatureClass as IDataset,利用IDataset的Workspace接口访问其工作空间IWorkspace

将IWorkspace as IWorkspaceExtensionManager,使用其FindExtension()方法获取IWorkspaceExtension

将IWorkspaceExtension as IDatasetContaner2即可。


读取要素数据集IFeatureDataset后,IFeatureDataset as IFeatureDatasetExtensionContainer,利用其FindExtension()方法获取IFeatureDatasetExtension

将IFeatureDatasetExtension as IDatasetContainer2即可。

但是,总是会在IDatasetContainer2.CreateDataset()方法处报错。

究其原因,是IDEDataset的子接口引用IDENetworkDataset的一个设置有误。

IDENetworkDataset是掌管网络数据集的数据组织的接口,是数据元素网络数据集的具体描述。

其升级接口是IDENetworkDataset2。

它继承自IDEDataset。

实例化一个数据元素网络数据集类只需:

IDENetworkDataset deNetworkDataset = new DENetworkDatasetClass();

属于ESRI.ArcGIS.Geodatabase类库。

如何设置IDENetworkDataset接口下的各种属性,参考我网络分析系列博客。

在桌面Catalog窗口创建网络数据集时,大家都知道有一步是设置点线等数据源的高程信息:

关键就在这里。

直接给出结论:

  • 若用代码创建shp文件的网络数据集,且对高程无需求(即选择无),必须对IDENetworkDataset2.ElevationModel设置为None;
  • 若用代码创建地理数据库中要素数据集的网络数据集,且对高程无需求(即选择无),默认IDENetworkDataset2.ElevationModel就是None,无需设置;

代码即:

// 假如shp创建单一网络
// 并且需求中无需指定网络数据集的高程信息
// 则必须如下设置
IDENetworkDataset2 deNetworkDataset2 = deNetworkDataset as IDENetworkDataset2;
deNetworkDataset2.ElevationModel = esriNetworkElevationModel.esriNEMNone;

否则会报0x8004228E的错误。

参考资料:

[1]. AE网络分析; http://jhlong12345.blog.163.com/blog/static/12306312920134811529595/

[2]. How to create a shapefile-based network dataset(使用AO 9.3); http://resources.esri.com/help/9.3/arcgisengine/dotnet/06443414-d0a7-455d-a199-dfd49aca7d98.htm

原文地址:https://www.cnblogs.com/onsummer/p/9005696.html

时间: 2024-08-03 16:19:56

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

Winsock网络编程笔记(3)----基于UDP的server和client

在上一篇随笔中,对Winsock中基于tcp面向连接的Server和Client通信进行了说明,但是,Winsock中,Server和Client间还可以通过无连接通信,也就是采用UDP协议.. 因此,这一篇随笔也简单的列举基于UDP的Server和Client的实现.. 和基于TCP的实现相比,其主要的不同点包括: ①接收端(简单地说就是服务器)/发送端(简单地说就是客户端)在创建Socket时候,参数要选择SOCK_DGRAM, IPPROTO_UDP: ②接收端不需要调用listen和ac

VSTO学习笔记(七)基于WPF的Excel分析、转换小程序

原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然后进行转换. 概述 小程序主界面如下: 首先选择一个日期和类别,从命名上对待分析的Excel文件进行过滤.点击[浏览]选择待分析的Excel文件所在的目录, 程序中会获取所有子目录.然后点击[执行分析]就会按照左边CheckBox中的选择进行分析,分析结果显示在每一行中间.[修改配置]可以对分析规则

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

为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于Shp文件组成的网络数据集). 当你拥有了合适的对象后,就可以使用IDatasetContainer2接口去创建或者打开网络数据集了. 如果当前打开的Map对象中有网络数据集图层,那么就可以通过访问INetworkLayer接口的NetworkDataset字段来访问网络图层中的网络数据集. IDat

利用Openfiler配置基于文件系统的网络存储

一.Openfiler简介 Openfiler是一个操作系统,其提供基于文件的网络附加存储和基于块的存储区域网络功能. Openfiler支持的网络协议包括:NFS,SMB/CIFS,HTTP/WebDAV,FTP和iSCSI. Openfiler支持的网络目录包括:NIS,LDAP(支持SMB/CIFS密码加密),Active Directory(本地和混合模式),基于Windows NT的域控制器和Hesiod.认证协议包括Kerberos 5. Openfiler支持基于卷的分区技术:如本

使用PhoneGap开发基于Html5应用二:第一个PhoneGap应用:百度

上一篇博文使用PhoneGap开发基于Html5应用一:PhoneGap简介 中我介绍了如何从phonegap官网上下载源码并启动第一个应用,今天我们把phonegap的应用稍微改一下,让他实现几个比较牛叉的功能: 1.启动一个网页 2.启动摄像头 3.启动定位 老规矩,在实现这几个功能之前我们先讲一下原理性的东西: 首先我们先回顾一下上次说的,其实phonegap应用中有个特别的webview,它就是CDVViewController,关于这个类我们后面再详细描述,现在我们先了解这个类到底做了

基于c++11新标准开发一个支持多线程高并发的网络库

背景 新的c++11标准出后,c++语法得到了很多的扩展,比起以往任何时候都要灵活和高效,提高了程序编码的效率,为软件开发人员节省了不少的时间. 之前我也写过基于ACE的网络服务器框架,但ACE毕竟有些臃肿,内部对象关系错综复杂,容易给人造成只见树木不见森林的错觉. 所以打算用c++11开发一个较为简洁,高效,支持高并发的网络库. 开源         花了两三周,终于把基础的结构开发完成,代码也开源在github上,网址是 https://github.com/lichuan/fly 欢迎各位

缓存篇~第七回 Redis实现基于方法签名的数据集缓存(可控更新,分布式数据缓存)

返回目录 本篇文章可以说是第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存(可控更新,WEB端数据缓存)的续篇,事实上,有EnterpriseLibrary.Caching也只是实现缓存持久化的一种方式,而Redis做为成熟的分布式存储中间件来说,实现这个数据集缓存功能显得更加得心应手,也更加满足大型网站的设计规则.(在多web服务器时(web端实现负载均衡,反向代理),EnterpriseLibrary.Cachin

基于图卷积网络的图深度学习

基于图卷积网络的图深度学习 先简单回顾一下,深度学习到底干成功了哪些事情! 深度学习近些年在语音识别,图片识别,自然语音处理等领域可谓是屡建奇功.ImageNet:是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库,并且被业界熟知. 我们先回顾一下,没有大数据支撑的欧式深度学习技术.对于一个字母"Z"的识别,我们通常是建立一个2D网格(点阵),如果将其中的点连接起来,定义这样的连接方式所形成的就是"Z".然后是用其他字母来测试,这个模型的正确性. 传统

【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

详细可参考 (1)书箱:<这就是搜索引擎><自己动手写网络爬虫><解密搜索引擎打桩实践> (2)[搜索引擎基础知识1]搜索引擎的技术架构 (3)[搜索引擎基础知识2]网络爬虫的介绍 (一)搜索引擎的开发一般可分为以下三大部分 1.数据采集层:一般使用爬虫获取互联网的数据,重要的开源项目有Heritrxi 2.数据分析处理层:将从互联网上获取到的数据进行提取归类.分词.语义分析得出索引得内容,等待用户查询使用,重要的开源项目有Lucene 3.视图层:也用户的交互界面,如