当然,通过GP生成也是可以的。这里介绍的是已经烂大街的生成方法。

上代码:

public ITin CreateTin(IFeatureClass featureClass, IField Z, string outputPath)
{
ITinEdit tinEdit = new TinClass();
object _ = Type.Missing;
tinEdit.InitNew((featureClass as IGeoDataset).Extent);
tinEdit.AddFromFeatureClass(featureClass, null, Z, null, esriTinSurfaceType.esriTinMassPoint, ref _);
tinEdit.SaveAs(outputPath, ref _);
tinEdit.Refresh(); return tinEdit as ITin;
}

解释:

  • 传入featureClass,这个是地理数据库中的某个要素类。
  • 传入Z,这个是该要素类的高程字段。
  • 传入outputPath,这个是生成的Tin的完整路径。

ITinEdit是Geodatabase类库下的接口,是TinClass这个类中用于编辑Tin数据集的部分功能。

这个ITinEdit对象tinEdit做了四件事:初始化、添加要素类、保存、生成(刷新)。

之所以返回ITin,是为了方便以后对ITin的调用。

例子

/// <summary>
/// 测试生成TIN
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Btn_CreateTin_Click(object sender, EventArgs e)
{
IMap nowMap = (ArcMap.Application.Document as IMxDocument).FocusMap;
IFeatureClass fc = (nowMap.Layer[] as IFeatureLayer).FeatureClass;
IField f = fc.Fields.Field[fc.FindField("Z")];
TOOL.CreateTin(fc, f, @"D:\Code\My");
}

我在Addins的浮动窗上弄了这么一个按钮:

以上是这个按钮的点击事件:在D盘的Code文件夹下生成名称为My的Tin数据集(结果并没有大写,只生成了tin数据集,形状是文件夹)。

其中TOOL是我写的工具类,里面的CreateTin()方法是文章开头的方法。TOOL类已经被实例化了。

这个按钮是测试用的,没有写严密的逻辑判断,要求事先加载一个点或者线图层并且其高程字段的名称必须是“Z”。路径也写死了。

测试结果是成功的,并不比用工具箱慢多少。

闲聊

其实传入IFeatureLayer也可以,通过IFeatureLayer接口的FeatureClass属性亦可访问到IFeatureClass,Layer在Carto类库下主管显示,FeatureClass在Geodatabase类库下主管存储管理数据,没毛病。

【AO例子】生成TIN的更多相关文章

  1. ArcEngine由点生成TIN

    这两天替别人写一个三维校园的展示程序.用的是SceneControl二次开发. 须要利用DOM和TIN构建三维地形.如今说下依据高程点生成TIN的过程: (1)依据高程点文件(Excel)生成点sha ...

  2. 【AO笔记】有关TIN数据集的常用介绍

    写论文查了很多TIN的接口和属性,特此来记录一下. 转载请注明出处:博客园@秋意正寒,B站同名. 未完待续 1. Tin数据集在ArcGIS中的描述 Tin数据集在磁盘中,被ArcGIS以文件夹形式管 ...

  3. Matlab绘图基础——散点生成三角网(TIN)

    %例一:二维三角网TIN模型的生成 X=rand(10,2)*5; dt=DelaunayTri(X(:,1),X(:,2));       %生成三角网 triplot(dt);hold on;   ...

  4. ArcGIS地形分析--TIN及DEM的生成,TIN的显示

    DEM是对地形地貌的一种离散的数字表达,是对地面特性进行空间描述的一种数字方法.途径,它的应用可遍及整个地学领域.通过对本次实习的学习,我们应加深对TIN建立过程的原理.方法的认识:熟练掌握ArcGI ...

  5. node生成自定义命令(yargs/commander)

    第一部分可以生成一个自定义命令,例如常见的”express”,yargs和commander则可以在生成的自定义命令上做扩展,yargs将命令扩展成类似express --l xx的形式;而comma ...

  6. fastjson生成json时Null属性不显示

    举个例子 生成JSON代码片段 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonM ...

  7. 不规则三角网(TIN)(转)

    来自:http://blog.csdn.net/kikitamoon/article/details/8217641 Ⅰ 数字高程模型(DEM) 地球表面高低起伏,呈现一种连续变化的曲面,这种曲面无法 ...

  8. 在AcGIS随着大数据的生成DEM

    在ArcGIS产生DEM时间.数据来源是经常有的高程点.轮廓线,该高程点.等高线密集,可能有几千万.甚至亿高程点.轮廓线. 如果您使用这些矢量数据生成TIN.不能实现的,由于生成TIN时,支持的最大结 ...

  9. 关于Gen生成try-catch-finally

    例1: class TestExc extends Exception{} void tryItOut () throws TestExc{} void handleExc(Object o){} v ...

随机推荐

  1. javascript深入理解--作用域,作用域链,闭包的面试题解

    一.概要 作用域和作用域链是js中非常重要的特性,关系到理解整个js体系,闭包是对作用域的延伸,其他语言也有闭包的特性. 那什么是作用域?作用域指的是一个变量和函数的作用范围. 1.js中函数内声明的 ...

  2. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  3. C# 获取系统当前IE版本号

    1. 注册表中,IE的位置: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer 2. 通过注册表读取IE配 ...

  4. 调用pymysql模块操作数据库

    1.创建数据库表: def create_table(tb_name): import pymysql#导入模块 #连接数据库 db = pymysql.Connect(','zabbix_db') ...

  5. Vue.js 学习笔记 第2章 数据绑定和第一个Vue应用

    本篇目录: 2.1 Vue实例与数据绑定 2.2 指令与事件 2.3 语法糖 学习任何一种框架,从一个Hello World应用开始是最快了解该框架特性的途径. 我们先从一段简单的HTML代码开始,感 ...

  6. 如何使用 Enterprise Architect 画 UML

    本文同时发布于http://fantasylion.github.io/tools/How-to-use-EA 重识 EA (Enterprise Architect) 公司使用的 OMS 是从外面买 ...

  7. Oracle AWR报告详细分析--比较详细

    https://blog.csdn.net/demonson/article/details/79474133

  8. SQL Server2008进程堵塞处理方法

    进程堵塞处理方法: select * from sys.sysprocesses where blocked <>0 and DB_NAME(dbid)='GSHCPDB'   ##查询堵 ...

  9. Ginger的第一篇博客

    怀着无感的心情,没有技术的身体,写下第一篇博客作为标记. 目前应该会搞清楚数据结构上相关的操作.算法,然后用c语言实现后记录在博客. 我是有目标的咸鱼! 2019/4/19

  10. jquery操作iframe的方法:父页面和子页面相互操作的方法

    今天在弄jquery操作iframe中元素:先由iframe中的子页面b.html给外面的父页面a.html页面传值,再将a.html页面计算机的值放到b.html页面上,这里就用到子页面和父页面相互 ...