【AO笔记】有关TIN数据集的常用介绍
写论文查了很多TIN的接口和属性,特此来记录一下。
转载请注明出处:博客园@秋意正寒,B站同名。
未完待续
1. Tin数据集在ArcGIS中的描述
Tin数据集在磁盘中,被ArcGIS以文件夹形式管理。Tin数据集比较特殊,点、线、三角面根据一定拓扑关系组成,与栅格数据集(一张影像)、一个Shapefile平级。暂且不管其在代码层结构如何,总之,它就在硬盘里长得跟普通的文件夹是一样的,并且奇怪的是,其命名只支持小写(在ArcMap中)。
// 补充一下,超图、MapGIS、QGIS等软件不知道对Tin数据的组织如何,但是除却公认的一些矢量格式(dwg、shp等)和一些公认的栅格格式(tif等),用文件夹组织高级别的数据集是一种折中的解决方案,当然,我本人尚未查阅OGC标准...
2. Tin数据集在ArcObjects中的描述
有关数据和数据库的部分,当然是Geodatabase类库了。
Tin数据集在AO中由Tin类(或TinClass类)组织,由ITinWorkspace接口打开现有Tin数据集(但是创建却不是这个东西创建,与IFeatureWorkspace不同)。
3. AO/AE中Tin数据集的常用接口
- IWorkspaceFactory
- ITinWorkspace
- ITin、ITinEdit、ITinSurface及升级接口、ITinAdvanced及升级接口
- ITinNode、ITinTriangle、ITinEdge
- ITinFeatureEdit
以下逐一进行简单介绍。
4. 一些案例
4.1 打开Tin
IWorkspaceFactory workspaceFactory = new TinWorkspaceFactoryClass();
// 工作空间工厂的OpenFromFile()方法的第一个参数需要注意,如果是gdb则具体写到gdb的全名
ITinWorkspace tinWorkspace = workspaceFactory.OpenFromFile(@"Tin数据集所在的文件夹", ) as ITinWorkspace;
ITin tin = tinWorkspace.OpenTin("Tin数据集的名称");
4.2 创建Tin数据集
ITin tin = new TinClass();
ITinEdit tinEdit = tin as ITinEdit;
// 用IEnvelope初始化,此步必须,否则抛异常
tinEdit.InitNew(IEnvelope变量);
// 如果需要加入数据或赋予空间参考,请使用以下注释的代码
// tinEdit.Add*(); // 此处代表7个添加数据源的方法
// tinEdit.Refresh();
tinEdit.SaveAs(@"包括Tin名称的路径,名称全英文小写为佳", true);
7个添加数据源的方法详见参考文档,此处截图
- 第一个方法添加一个IFeatureClass以生成Tin,可以是点线面要素;
- 第二个方法添加一个IFeatureCursor,使用IFeatureClass.Search()返回的查询型指针即可。
- 第三个不知道,可以不管;
- 第四个添加有Z字段的IPoint,测试中发现此方法不稳定;
- 第五个添加IGeometry,需要指定Z字段;
- 第六个添加有Z字段的IGeometry;
- 第七个不知道,可以不管;
七种方法中,第一、第二种方法最稳定,但是参数比较复杂;第四、五、六种方法较为简洁,可以用于局部刷新时使用。
4.3 更新Tin
主要是使用ITinEdit.Refresh()和Save()方法。
// ITin转ITinEdit
public void FreshTin(ITin tin){
ITinEdit tinEdit = tin as ITinEdit;
tinEdit.Refresh(); //Tin重新构网
tinEdit.Save(); //Tin在硬盘上的数据更新
}
4.4 Tin数据集有关信息读取
主要使用ITin接口与IGeoDataset接口。
ITin接口可以获取Tin数据集的描述信息,例如顶点数、三角形数、边数等
4.5 Tin数据集高级操作
主要使用ITinAdvanced、ITinSurface接口。
4.6 其他(编辑等)
【AO笔记】有关TIN数据集的常用介绍的更多相关文章
- Kinect开发学习笔记之(一)Kinect介绍和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- Nodejs学习笔记(十六)--- Pomelo介绍&入门
目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...
- Nodejs学习笔记(十六)—Pomelo介绍&入门
前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
- RDD(弹性分布式数据集)及常用算子
RDD(弹性分布式数据集)及常用算子 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据 处理模型.代码中是一个抽象类,它代表一个 ...
- 【AO笔记】有关使用AO基于shp文件创建网络数据集的一个细节
前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题. 由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料... 以前的研究中,创建网络数据集是根据IDatasetC ...
- python笔记-python编程优化:常用原则和技术介绍
本人翻译自<Exper Python Programming> 'Premature optimization is the root of all evil in programming ...
- ansible笔记(8):常用模块之系统类模块(二)
ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...
- ansible笔记(9):常用模块之包管理模块
ansible笔记():常用模块之包管理模块 yum_repository模块 yum_repository模块可以帮助我们管理远程主机上的yum仓库. 此处我们介绍一些yum_repository模 ...
随机推荐
- .NET Core的依赖注入[1]: 控制反转
写在前面:我之前写过一系列关于.NET Core依赖注入的文章,由于.NET Core依赖注入框架的实现原理发生了很大的改变,加上我对包括IoC和DI这些理论层面的东西又有了一些新的理解,所以我在此基 ...
- 企业IT管理员IE11升级指南【9】—— IE10与IE11的功能对比
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- ASP.NET MVC 中读取项目文件的路径
MVC中获取某一文件的路径,来进行诸如读取写入等操作. 例:我要读取的文件是新生模板.doc,它在如下位置. 获取它的全路径:string path = HttpContext.Current.Ser ...
- [Bash]LeetCode193. 有效电话号码 | Valid Phone Numbers
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- [Swift]LeetCode955. 删列造序 II | Delete Columns to Make Sorted II
We are given an array A of N lowercase letter strings, all of the same length. Now, we may choose an ...
- ActiveMQ嵌入Tomcat
在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐.所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ.由此我们需要掌握三个个重要的知 ...
- Identity Server 4登陆后返回登录前页面
- arm-none-eabi-gcc编译报错:exit.c:(.text.exit+0x16): undefined reference to `_exit'
该问题的出现是链接文件导致的,是不同的gcc交叉编译器支持的链接文件不同造成的,有几种方法可以解决这个问题. 方法一:更换arm-none-eabi-gcc的版本,这个一般是新的gcc编译器才会抱着错 ...
- 如何设置使chrome新标签页中打开链接自动跳转到新标签页?
在新标签打开链接的时候这样点选 Ctrl+左键 或者 鼠标中键 或者 右键链接选择'新标签页中打开链接', 可实现出现新标签页但不自动跳转 但是这个有问题, 即, 新标签只是在背景打开, 操作后并不会 ...
- SQLplus下命令输入错误如何删掉重新输入
如下当我们输入命令出错时想删掉重新输入,按delete或者backspace键无法删除且出现如下情况: SQL> show urerej ^H^H^H^H^H 可以是使用ctrl+backsp ...