这两天替别人写一个三维校园的展示程序。用的是SceneControl二次开发。

须要利用DOM和TIN构建三维地形。如今说下依据高程点生成TIN的过程:

(1)依据高程点文件(Excel)生成点shapefile

(2)使用ITinEdit的AddFromFeatureClass方法生成TIN

高程点数据格式例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2lzZXJfd2h1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

操作界面例如以下:

生成TIN效果图:

代码非常easy理解,例如以下:

   #region 创建TIN
private void button_ok_Click(object sender , EventArgs e)
{
try
{
strTinName=textBox_TINName.Text;
outFolder=textBox_outpath.Text;
if (strTinName=="")
{
MessageBox.Show("请输入TIN名称!");
}
else if (outFolder=="")
{
MessageBox.Show("请选择TIN保存路径");
}
else
{
//生成点shape
Excel2Shape excel2shape = new Excel2Shape(textBox_point.Text);
excel2shape.CreateShapeFromExcel(); //获取shapefile
string path = excel2shape.path;
string name = excel2shape.name; IWorkspaceFactory pWSFac = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFeatureWS = pWSFac.OpenFromFile(path , 0) as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatureWS.OpenFeatureClass(name);
IField pField = pFeatureClass.Fields.get_Field(pFeatureClass.FindField("Z"));
//创建TIN
ITin pTin = Create_TIN(pFeatureClass , pField , outFolder);
ITinLayer pTinlayer = new TinLayerClass();
pTinlayer.Dataset = pTin;
pTinlayer.Name = strTinName; pSceneControl.SceneGraph.Scene.AddLayer(pTinlayer as ILayer , true); this.Close();
} }
catch (System.Exception ex)
{
MessageBox.Show(ex.Message + "创建TIN失败。");
} }
/// <summary>
/// 创建TIN
/// </summary>
/// <param name="pFeatureClass">点要素类</param>
/// <param name="pField">Z字段</param>
/// <param name="pPath">路径</param>
public ITin Create_TIN(IFeatureClass pFeatureClass , IField pField , string pPath)
{
IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
ITinEdit pTinEdit = new TinClass();
pTinEdit.InitNew(pGeoDataset.Extent);
object pObj = Type.Missing; pTinEdit.AddFromFeatureClass(pFeatureClass , null , pField , null ,
esriTinSurfaceType.esriTinMassPoint , ref pObj);
if (System.IO.File.Exists(pPath))
{
_3DCampus.helper.FolderHelper.DeleteFolder(pPath);
}
pTinEdit.SaveAs(pPath , ref pObj);
pTinEdit.Refresh();
return pTinEdit as ITin; }
#endregion

ArcEngine由点生成TIN的更多相关文章

  1. 【AO例子】生成TIN

    当然,通过GP生成也是可以的.这里介绍的是已经烂大街的生成方法. 上代码: public ITin CreateTin(IFeatureClass featureClass, IField Z, st ...

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

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

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

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

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

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

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

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

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

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

  7. arcgis如何制作DEM数据

    DEM描述的是地面高程信息,它在测绘.水文.气象.地貌.地质.土壤.工程建设.通讯.军事等国民经济和国防建设以及人文和自然科学领域有着广泛的应用.如在工程建设上,可用于如土方量计算.通视分析等:在防洪 ...

  8. skyline TerraBuilder 制作MPT方法与技巧(1)

    MPT是skyline独有的三维地形数据格式,可简单理解为 影像图+高程=三维地形(三维底图),以下介绍用skyline TerraBuilder(以下简称TB)制作MPT的方法与技巧 用TB制作MP ...

  9. AE+SceneControl源代码共享

    近来的,博友发私信或邮件交换,第一次使用前SceneControl代做一点project股票,做的很粗糙.我们希望对大家有帮助,欢迎留言交流哈萨克斯坦. 除了主开.保存.数据加载.询价,几个功能主要是 ...

随机推荐

  1. java+spark-sql查询excel

    Spark官网下载Spark Spark下载,版本随意,下载后解压放入bigdata下(目录可以更改) 下载Windows下Hadoop所需文件winutils.exe 同学们自己网上找找吧,这里就不 ...

  2. shutdown---系统关机

    shutdown命令用来系统关机命令.shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作. 语法 shutdown(选项)(参数) 选项 -c:当执行“shutdown - ...

  3. [Redux-Observable && Unit Testing] Use tests to verify updates to the Redux store (rxjs scheduler)

    In certain situations, you care more about the final state of the redux store than you do about the ...

  4. 缩放文本框ExpandTextView

    效果图: 代码: import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import ...

  5. 利用淘宝ip库限制地区访问

    https://sss.one/97.html 利用淘宝ip库限制地区访问 有些应用可能需要对某些地区的用户进行限制访问 在采用才此方法的时候,可以利用一些ip库对访问者的ip进行判断 淘宝ip库地址 ...

  6. js36---函数嵌套

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  7. mysql 造1亿条记录的单表--大数据表

    读写文件 背景及木:现有数据1000w单表,为压力测试准备1亿条数据. 步骤: 1.将1000w条记录,除id外都导入到多个文件中: //DELIMITER DROP PROCEDURE if EXI ...

  8. HDU4630-No Pain No Game(离线,线段树)

    Problem Description Life is a game,and you lose it,so you suicide. But you can not kill yourself bef ...

  9. Spider_selenium

    json模块 什么是json? javascript中的对象和数组 对象:{key:value}取值:对象名.key 数组:[...,...]取值:数组[索引值] 作用 json格式的字符串和Pyth ...

  10. C++ 复制到粘贴板

    网上好多教程讲如何复制到剪切板,但是有可能复制的是乱码,为了方便,将CString类型的复制到剪切板 CString source;if (OpenClipboard()){//防止非ASCII语言复 ...