ArcEngine由点生成TIN
生成
2023-09-11 14:21:00 时间
这两天替别人写一个三维校园的展示程序。用的是SceneControl二次开发。
须要利用DOM和TIN构建三维地形。如今说下依据高程点生成TIN的过程:
(1)依据高程点文件(Excel)生成点shapefile
(2)使用ITinEdit的AddFromFeatureClass方法生成TIN
高程点数据格式例如以下:
操作界面例如以下:
:
生成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
相关文章
- MyBatis Generator生成DAO——序列化
- sql server 生成随机数 rand函数
- 工作总结 @Html 辅助方法 为 生成的 标签设置元素属性 htmlAttributes 一个对象,其中包含要为该元素设置的 HTML 特性。
- PHP如何生成大数组「考虑内存」
- DES加解密算法:含DES密钥生成、参数名ASCII码从小到大排序
- 【图像识别】OpenCV-sift文件无法生成及其他问题
- SQL Server复制表结构和表数据生成新表的语句
- 泛型编程是元编程的一种----模板元编程----根据模版(在编译时)生成代码
- android下基本json串的生成与解析
- LeetCode 22. 括号生成
- nodejs搭配phantomjs highcharts后台生成图表
- 基于eclipse的mybatis映射代码自动生成的插件
- C# 根据Excel生成树