ArcEngine下一个TIN生成的轮廓

太晚了,直接连接的源代码:

    /// <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功能说明参考帮助文档。

版权声明:本文博主原创文章,博客,未经同意,不得转载。

时间: 2024-10-07 01:30:28

ArcEngine下一个TIN生成的轮廓的相关文章

获取数据表里的下一个自增序号

查询table 下一个将要生成的id值 SELECT IDENT_CURRENT('table') + IDENT_INCR('table'); 查询table当前最大的id值,自增序号 SELECT IDENT_CURRENT('table') : 当前表设置的递增数,默认为1. SELECT IDENT_INCR('table'); 原文地址:https://www.cnblogs.com/ming-blogs/p/10625420.html

ArcEngine下TIN生成等高线

时间太晚了,直接附上源码: /// <summary> /// TIN生成等高线 /// </summary> /// <param name="pInterval">等高线间距</param> public void Tin2Contour(string path_,string name_,double pInterval) { //获取TIN ITinLayer pTinlayer = GetLayerByName(pScene ,

Linux系统下使用pwgen生成密码的使用教程

pwgen生成的密码易于记忆且相当安全.从技术上来说,容易记忆的密码不会比随机生成的密码更加安全.但是,在大多数情况下,pwgen生成的密码已经足够安全,除了网银密码等需要高安全等级的情况外.使用易于记忆的密码的好处就是你不会把这些密码写下来或者存到电脑上的某个地方,这样做本来就是不安全的. 安装pwgen,在终端窗口输入(适用于Debian系列的Linux系统): sudo apt-get install pwgen 不带任何参数就运行pwgen,将会输出满屏幕的密码.你可以从中选择一个作为自

asp.net下调用Matlab生成动态链接库

对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库.至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置的博客,配置问题搞了我们差不多2周多的时间,各种编译不通过,各种链接出问题,各种头疼,甚至都有放弃asp.net下建工程,转用matlab的gui来实现前端界面的念头了.但是在队友的强烈要求下,我不得不硬着头皮搞下这配置问题,最终总结出这4篇配置博客.其中艰辛,恐怕连队友都不甚了解. 当然在实验室同

虚拟现实真的是近几年游戏的下一个浪潮吗

作为游戏发展的另一个方向,虚拟现实近些年也越来越受到大众的目光聚焦.最近召开的2016年游戏开发者大会GDC,各大游戏厂商都在虚拟现实方面都有所动作.来自GDCONF的一份调查上,已经有16%的采访者表示基于虚拟现实平台开发游戏. “虚拟实境(Virtual Reality),简称VR技术,也称人工环境,是利用电脑模拟产生一个三度空间的虚拟世界,提供用户关于视觉.听觉.触觉等感官的模拟,让用户如同身历其境一般,可以及时.没有限制地观察三度空间内的事物.用户进行位置移动时,电脑可以立即进行复杂的运

Windows7下使用sphinx生成开源文档(原)

作者这里以osgearth文档为例,感觉这种生成文档的方式比较好,生成的html文档是支持搜索的,感谢开源工作者的奉献.赞一个 1. 下载并安装python for windows:https://www.python.org/downloads/windows/ 2.下载安装setup tools下载easy_stall.py 并运行https://pypi.python.org/pypi/setuptools#windows-7-or-graphical-install,可以找到window

windows下使用openssl生成证书

一:下载 使用的是0.9.8 1:openssl下载,http://www.openssl.org/source/ 2:安装vs2010,并安装 3:下载perl,http://www.activestate.com/ActivePerl,并安装. 二:安装openssl 1:解压到系统盘C:\openssl-0.9.8v 2.配置WIN32环境 打开CMD命令行,进入C:\openssl-0.9.8v目录,执行命令 perl Configure VC-WIN32 注意区分大小写 3.进入VC

AngularJS - 下一个大框架

AngularJS AngularJS是web应用的下一个巨头. AngularJS如果为创建web应用而设计,那它就是HTML的套路了.具有数据绑定, MVW, MVVM, MVC, 依赖注入的声明式模板和出色的可测试性都是用纯客户端 JavaScript来实现的! AngularJS 是一个创建富客户端应用的JavaScript MVC框架,它组织良好,经过严格测试,多功能,强大并且十分灵活.你仍然需要具有服务端后台,但大多数的用户交互逻辑将优雅地放到客户端上处理. AngularJS是一个

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题. 因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux