写论文查了很多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数据集的常用介绍的更多相关文章

  1. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  2. Nodejs学习笔记(十六)--- Pomelo介绍&入门

    目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...

  3. Nodejs学习笔记(十六)—Pomelo介绍&入门

    前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...

  4. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

  5. RDD(弹性分布式数据集)及常用算子

    RDD(弹性分布式数据集)及常用算子 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据 处理模型.代码中是一个抽象类,它代表一个 ...

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

    前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题. 由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料... 以前的研究中,创建网络数据集是根据IDatasetC ...

  7. python笔记-python编程优化:常用原则和技术介绍

    本人翻译自<Exper Python Programming> 'Premature optimization is the root of all evil in programming ...

  8. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...

  9. ansible笔记(9):常用模块之包管理模块

    ansible笔记():常用模块之包管理模块 yum_repository模块 yum_repository模块可以帮助我们管理远程主机上的yum仓库. 此处我们介绍一些yum_repository模 ...

随机推荐

  1. 机器学习之正则化(Regularization)

    1. The Problem of Overfitting 1 还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图. 如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上 ...

  2. iOS URL Schemes与漏洞的碰撞组合

    iOS URL Schemes与漏洞的碰撞组合 前言 iOS URL Schemes,这个单词对于大多数人来说可能有些陌生,但是类似下面这张图的提示大部分人应该都经常看见: 今天要探究的就是:了解iO ...

  3. 流媒体协议(一):HLS 协议

    一.HLS 概述 HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输.目前HLS协议被广泛的应用于视频点播 ...

  4. [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 ...

  5. [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 ...

  6. [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 ...

  7. [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 ...

  8. [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 ...

  9. idea设置代码颜色主题(同Sublime Text 3的代码颜色一样)

    1.下载主题的网址:http://color-themes.com,主题种类多,总有适合你的主题.在这个网址下载的主题是jar文件,直接导入,如下图file->import  Setting,找 ...

  10. 关于ML.NET v0.8的发布说明

    ML.NET允许您创建和使用针对场景的机器学习模型,以实现常见任务,如情绪分析,问题分类,预测,推荐,欺诈检测,图像分类等.您可以使用ML.NET示例在GitHub仓库中查看这些常见任务 .ML.NE ...