ArcEngine下一个TIN生成的轮廓
一个 生成 轮廓
2023-09-14 09:08:07 时间
太晚了,直接连接的源代码:
/// <summary> /// TIN生成等高线 /// </summary> /// <param name="pInterval">等高线间距</param> public void Tin2Contour(string path_,string name_,double pInterval) { //获取TIN ITinLayer pTinlayer = GetLayerByName(pScene , comboBox_TIN.Text) as ITinLayer; ITin pTin = pTinlayer.Dataset as ITin; //创建Contour shape IWorkspaceFactory pWSFac = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWS = pWSFac.OpenFromFile(path_ , 0) as IFeatureWorkspace; if (System.IO.File.Exists(path_+"\\"+name_+".shp")) { System.IO.File.Delete(path_ + "\\" + name_ + ".shp"); System.IO.File.Delete(path_ + "\\" + name_ + ".dbf"); System.IO.File.Delete(path_ + "\\" + name_ + ".shx"); } IFields pFields = CreateShapeFields(esriGeometryType.esriGeometryPolyline); pFeatureWS.CreateFeatureClass(name_ , pFields , null , null , esriFeatureType.esriFTSimple , "Shape" , null); IFeatureClass pContourFeatureClass = pFeatureWS.OpenFeatureClass(name_); //生成等高线 ITinSurface pTinSurface = pTin as ITinSurface; pTinSurface.Contour(0 , pInterval , pContourFeatureClass , "Contour" , 0); //加入等高线图层 IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pContourFeatureClass; IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.DisplayAnnotation = true; pGeoFeatureLayer.DisplayField = "Contour"; pGeoFeatureLayer.Name = pContourFeatureClass.AliasName + "_Contour"; //设置线样式 ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); pLineSymbol.Color = GetRGBColor(32 , 47 , 247); pLineSymbol.Width = 2; ISimpleRenderer pRender = pGeoFeatureLayer.Renderer as ISimpleRenderer; pRender.Symbol = pLineSymbol as ISymbol; pScene.AddLayer(pFeatureLayer as ILayer); }
#region 创建几何字段 /// <summary> /// 创建几何字段 /// </summary> /// <param name="p_esriGeotype"></param> /// <returns></returns> public IFields CreateShapeFields(esriGeometryType p_esriGeotype) { IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit = pFields as IFieldsEdit; IGeometryDef pGeoDef = new GeometryDefClass(); IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit; pGeoDefEdit.GeometryType_2 = p_esriGeotype; pGeoDefEdit.SpatialReference_2 = (ISpatialReference) new UnknownCoordinateSystem(); IField pFld = new FieldClass(); IFieldEdit pFldEdit = pFld as IFieldEdit; pFldEdit.Name_2 = "shape"; pFldEdit.IsNullable_2 = false; pFldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; pFldEdit.GeometryDef_2 = pGeoDef; pFieldsEdit.AddField(pFld); return pFields; } #endregion #region 依据名称获取图层 //依据名称获取图层 public ILayer GetLayerByName(IScene scene , string strLayerName) { ILayer pLayer = null; for (int i = 0;i < scene.LayerCount;i++) { pLayer = scene.get_Layer(i); if (strLayerName == pLayer.Name) { break; } } return pLayer; } #endregion
Contour功能说明参考帮助文档。
版权声明:本文博主原创文章,博客,未经同意,不得转载。
相关文章
- 线上一个数组查询遇到的坑
- 将活动窗口从一个屏幕移动到另一个屏幕
- 【一】设计一个类,我们只能生成该类的一个实例。
- 【一】设计一个类,我们只能生成该类的一个实例。
- 如何学习一个新的PHP框架
- 一个进程间同步和通讯的 C# 框架
- SAP UI5 应用开发教程之五十 - 如何使用 Cordova 将 SAP UI5 应用生成一个能在 Android 手机上安装的混合应用试读版
- Fiori Globalization实现的一个具体例子 - 关于数字显示格式的处理
- SAP ABAP 一个有用的程序正确性辅助工具,Checkpoint group 的使用方法介绍试读版
- 一个传入自定义 user.properties 文件生成 jMeter 执行报表出错的错误消息
- 推荐一个免费的生成词云(word cloud)的在线工具
- 发现 postman 自动生成接口调用代码的一个问题
- Angular Lazy Load 的一个局限性以及解决办法
- 每个施加在HTML元素上的Angular Directive,运行时都会生成一个新的实例
- rxjs里使用from operator从一个generator里生成Observable
- 指数随机变量的一个不怎么合理但还能看的例子
- 【华为OD机试Python实现】HJ1 字符串最后一个单词的长度(简单)
- 习题 4.11 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
- UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"
- 算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了
- (一个)AngularJS获取贴纸Hello World
- 为什么有些结构体中会定义一个字节的数组