【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模 ...
随机推荐
- 机器学习之正则化(Regularization)
1. The Problem of Overfitting 1 还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图. 如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上 ...
- iOS URL Schemes与漏洞的碰撞组合
iOS URL Schemes与漏洞的碰撞组合 前言 iOS URL Schemes,这个单词对于大多数人来说可能有些陌生,但是类似下面这张图的提示大部分人应该都经常看见: 今天要探究的就是:了解iO ...
- 流媒体协议(一):HLS 协议
一.HLS 概述 HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输.目前HLS协议被广泛的应用于视频点播 ...
- [Swift]LeetCode112. 路径总和 | Path Sum
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...
- [Swift]LeetCode119. 杨辉三角 II | Pascal's Triangle II
Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note t ...
- [Swift]LeetCode129. 求根到叶子节点数字之和 | Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- [Swift]LeetCode311. 稀疏矩阵相乘 $ Sparse Matrix Multiplication
Given two sparse matrices A and B, return the result of AB. You may assume that A's column number is ...
- [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays
Given an array A of non-negative integers, return the maximum sum of elements in two non-overlapping ...
- idea设置代码颜色主题(同Sublime Text 3的代码颜色一样)
1.下载主题的网址:http://color-themes.com,主题种类多,总有适合你的主题.在这个网址下载的主题是jar文件,直接导入,如下图file->import Setting,找 ...
- 关于ML.NET v0.8的发布说明
ML.NET允许您创建和使用针对场景的机器学习模型,以实现常见任务,如情绪分析,问题分类,预测,推荐,欺诈检测,图像分类等.您可以使用ML.NET示例在GitHub仓库中查看这些常见任务 .ML.NE ...