【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模 ...
随机推荐
- Redis结合Lua脚本实现高并发原子性操作
从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis … 案例-实现访问频率限制: 实现访问者 $ip 在一定的时间 $time 内只能访问 $limit 次. 非脚 ...
- [Swift]LeetCode1028. 从先序遍历还原二叉树 | Recover a Tree From Preorder Traversal
We run a preorder depth first search on the root of a binary tree. At each node in this traversal, w ...
- 小程序自定义pick(日期加时间组合)
最近小程序有个需求要使用日期加时间的pick组件 翻了小程序文档似乎没有符合的 手写一个 新建组件picker.js: Component({ properties: { disabled: { t ...
- 《关于长沙.NET技术社区未来发展规划》问卷调查结果公布
那些开发者们对于社区的美好期待 2月,长沙.net 技术社区自从把群拉起来开始,做了一次比较正式.题目为<关于长沙.NET技术社区未来发展规划>的问卷调查,在问卷调查中,溪源写道: 随着互 ...
- DMA的基本概念
DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统.每一种体系结构DMA传输不同,编程接口也不同. 数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输. 在第一 ...
- 6.jQuery(实例)
1.开关灯效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 并发编程(九)—— Java 并发队列 BlockingQueue 实现之 LinkedBlockingQueue 源码分析
LinkedBlockingQueue 在看源码之前,通过查询API发现对LinkedBlockingQueue特点的简单介绍: 1.LinkedBlockingQueue是一个由链表实现的有界队列阻 ...
- 使用ML.NET实现基于RFM模型的客户价值分析
RFM模型 在众多的客户价值分析模型中,RFM模型是被广泛应用的,尤其在零售和企业服务领域堪称经典的分类手段.它的核心定义从基本的交易数据中来,借助恰当的聚类算法,反映出对客户较为直观的分类指示,对于 ...
- RabbitMQ学习笔记(二) 工作队列
什么是工作队列? 工作队列(又名任务队列)是RabbitMQ提供的一种消息分发机制.当一个Consumer实例正在进行资源密集任务的时候,后续的消息处理都需要等待这个实例完成正在执行的任务,这样就导致 ...
- 用Maxima画出一些有趣的图
Maxima可以画出Chaos.Duffing .Fern.Lorenz.Rossler .Portraits .Mandelbrot.Staircase.Triangles等有趣的图... Chao ...