前些日子,和群友交流时提及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的错误。

ps:有可能是破解版的问题,等正版用户测试。

参考资料:

[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

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

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

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

  2. kubernetes学习笔记之十三:基于calico的网络策略入门

    一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-star ...

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

    原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然 ...

  4. golang实现分布式缓存笔记(一)基于http的缓存服务

    目录 前言 cache 缓存服务接口 cache包实现 golang http包使用介绍 hello.go Redirect.go http-cache-server 实现 cacheHandler ...

  5. .NET MVC 学习笔记(四)— 基于Bootstarp自定义弹出框

    .NET MVC 学习笔记(四)—— 基于Bootstarp自定义弹出框 转载自:https://www.cnblogs.com/nele/p/5327380.html (function ($) { ...

  6. .NetCore学习笔记:三、基于AspectCore的AOP事务管理

    AOP(面向切面编程),通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑 ...

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

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

  8. 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法

    基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法 Siamese CNN Temporally Constrained Metrics T ...

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

    返回目录 本篇文章可以说是第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存(可控更新,WEB端数据缓存)的续篇,事实上,有 ...

随机推荐

  1. 解决VS2019中.net core WPF 暂时无法使用 Designer 的临时方法

    目录 解决 VS2019 中.net core WPF 暂时无法使用 Designer 的临时方法 安装 vs 2019 professional/enterprise版本 在vs的设置里,勾选.NE ...

  2. 游戏AI之决策结构—有限状态机/行为树(2)

    目录 有限状态机 行为树 控制节点 条件节点 行为节点 装饰节点 总结 额外/细节/优化 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行 ...

  3. 使用Nexus3构建Docker私有镜像仓库

    一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...

  4. 记录一些flutter学习网址

    字体图标生成 http://fluttericon.com/Flutter中文网 https://flutterchina.club Flutter官网 https://flutter.ioFlutt ...

  5. Sentry快速开始并集成钉钉群机器人

    Sentry(直译为:哨兵)是一个开源错误跟踪服务,帮助开发人员实时监控和修复崩溃 Sentry本质上是一种帮助您实时监控和修复崩溃的服务 1.  安装客户端SDK 这里我们安装Java平台的SDK, ...

  6. C# 将datatable导出成Excel

    public void Result( ){try{StringBuilder sql = new StringBuilder();List<SqlParameter> parameter ...

  7. Vue应用框架整合与实战--Vue技术生态圈篇

    实用框架以及工具 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 Element-UI ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 ...

  8. [计算机视觉]100行python实现摄像机偏移、抖动告警

    背景 在实际项目中,利用深度学习在检测道路车辆并分析车辆行为时,需要按照事先规定的方法绘制检测区(包含道路方向.车道区域等).由于各种原因(人为.天气),获取视频数据的摄像角度容易偏移原来设定的位置, ...

  9. 《ECMAScript6入门》___阮一峰 笔记

    let和const命令 let命令 循环体的let变量只对花括号作用域可见,花括号外不可见 循环体的语句部分是一个父作用域,而循环体内部是一个单独的子作用域 let声明的变量不存在变量提升,未声明的使 ...

  10. Android Studio导出JavaDoc时中文乱码问题解决

    导出过程中,如果出现JavaDoc中文乱码的问题,可以在Other command line arguments栏目添加命令参数:-encoding UTF-8 -charset UTF-8(如果是G ...