【AO例子】生成TIN

当然,通过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[0] 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类库下主管存储管理数据,没毛病。

原文地址:https://www.cnblogs.com/onsummer/p/8677053.html

时间: 2024-12-12 04:28:59

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

ArcEngine由点生成TIN

这两天替别人写一个三维校园的展示程序,用的是SceneControl二次开发.需要利用DOM和TIN构建三维地形.现在说下根据高程点生成TIN的过程: (1)根据高程点文件(Excel)生成点shapefile (2)使用ITinEdit的AddFromFeatureClass方法生成TIN 高程点数据格式如下: 操作界面如下: : 生成TIN效果图: 代码很容易理解,如下: #region 创建TIN private void button_ok_Click(object sender , E

C# arcengine 由FeatureClass生成TIN

IFields pFields = m_FeatureClass.Fields;            int index = pFields.FindField(m_strHeight);            if (index == -1) return;            IField pField = pFields.get_Field(index); IGeoDataset pGeoDataset = m_FeatureClass as IGeoDataset;         

random库使用例子——生成随机验证码

用于生成4位随机验证码 #_*_coding:utf-8_*_ #__author__ = "csy" import random checkcode='' for i in range(4): current=random.randrange(0,4) #生成随机数与循环次数比对 current1 = random.randrange(0,4) if current == i: tmp=chr(random.randint(65,90)) #65~90为ASCii码表A~Z elif

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

第一部分可以生成一个自定义命令,例如常见的”express”,yargs和commander则可以在生成的自定义命令上做扩展,yargs将命令扩展成类似express --l xx的形式;而commander则可以扩展成类似 ‘express install xx’形式,也可以扩展成express -e xx的形式,前者写法简单,后者扩展性更好. 生成自定义命令 yargs commander 完整例子 生成自定义命令 新建文件夹test,并进入; 执行npm init 生成package.js

在AcGIS中用大数据生成DEM

在ArcGIS中生成DEM时,采用的数据源往往是一些高程点.等高线,这些高程点.等高线比较密集,可能有好几千万个,甚至上亿个高程点.等高线.若利用这些矢量数据生成TIN,一般是不能实现的,因为生成TIN时,支持的最大结点数只能有几千万个(依据电脑性能,受限于内存).另外矢量信息的存储也是比较讲究的,如果把这些矢量信息存储在shp文件中,往往会出现问题(比如在arcmap中加载时出现的绘制错误).综合以上问题,感觉采用如下办法比较可取. 1. 矢量信息存储在Geodatabase中 把矢量信息用统

散点生成三角网

%例一:二维三角网TIN模型的生成 X=rand(10,2)*5; dt=DelaunayTri(X(:,1),X(:,2));       %生成三角网 triplot(dt);hold on;                 %绘图 scatter(X(:,1),X(:,2),'o'),hold off  %将结点展示出来(散点) %例二:三维TIN的生成(由规则点生成) [x,y]=meshgrid(1:15,1:15);z=peaks(15); tri=delaunay(x,y);   

ffmpeg文档35-音频源

35 音频源 下面介绍当前可用的音频源 abuffer 缓冲音频帧,作为滤镜链图中有效的组成(起点) 它主要编程使用,特别是通过libavfilter/asrc_abuffer.h中的接口进行调用. 接受如下参数: time_base 用于提交帧的时间戳时基.是浮点数或者分数形式. sample_rate 进入音频缓冲的采样率. sample_fmt 进入音频缓冲的采样格式.libavutil/samplefmt.h下AVSampleFormat枚举值中的一个格式名称或者对应的整数 channe

论文翻译之--- 软件设计师怎样使用标记来帮助提醒和重新查找

最近以来有个学习任务,就是翻译一篇关于软件工程相关的论文.我选择了一篇How Software Developers Tagging to Support Remingding and Refinding.由于本人水平有限,基本直译,有很多不准确不通之处.希望读到文章的人批评指导,大家交流改进,在此基础之上使得翻译和我个人的能力得以提高.我记录了自己工作的时间,确实这篇文章的翻译耗费了我一定的时间.文章来自IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VO

第04章-VTK基础(5)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第63页至第70页] 4.11 文本标注 VTK提供了两种方法用于标注图像