zoukankan      html  css  js  c++  java
  • ArcEngine下SceneControl叠加影像数据(构建三维地形)

    载入完TIN数据后。须要在三维物体上描绘细节。即纹理;建立DEM表面点与纹理空间点的关系,即纹理映射。叠加影像数据就是把影像看作纹理。将其贴在地形表面,让其具有地形起伏的三维效果。

    这里与GlobeControl下三维场景的构建有所不同,在前面的博文中我们提到过,globe下图层主要有三种类型:Floating、Draped、Elevation(浮动、叠加和高程图层),即仅仅须要设置图层的属性就可以。叠加图层与浮动图层从高程图层获取高程值。SceneControl中实现影像的叠加,參照ArcScene中的操作:“右键”——>“属性”——>“基本高度”——>“从表面获取的高程”,设置为浮动在自己定义表面。


    这里主要使用I3DProperties接口,代码例如以下:

                    ISceneGraph pSceneGraph = axSceneControl1.SceneGraph;
                    IScene pScene = pSceneGraph.Scene;
                    ITinLayer pTinLayer = null;
                    IRasterLayer pRasterlayer = null;
                    //获取TIN、DOM
                    for (int i = 0;i < pScene.LayerCount;i++)
                    {
                        ILayer pLayer = pScene.get_Layer(i);
                        if (pLayer is ITinLayer)
                        {
                            pTinLayer = pLayer as ITinLayer;
                        }
                        if (pLayer is IRasterLayer)
                        {
                            pRasterlayer = pLayer as IRasterLayer;
                        }
    
                    }
                    //设置3D属性
                    ITinAdvanced tinAdvanced = pTinLayer.Dataset as ITinAdvanced;
                    ISurface surface = tinAdvanced.Surface;
    
                    ILayerExtensions layerExtensions = pRasterlayer as ILayerExtensions;
                    I3DProperties p3DProperties = null;
    
                    for (int i = 0;i < layerExtensions.ExtensionCount;i++)
                    {
                        if (layerExtensions.get_Extension(i) is I3DProperties)
                        {
                            p3DProperties = layerExtensions.get_Extension(i) as I3DProperties;
                        }
                    }
                    p3DProperties.BaseOption = esriBaseOption.esriBaseSurface;
                    p3DProperties.BaseSurface = surface;
                    p3DProperties.Apply3DProperties(pRasterlayer);

  • 相关阅读:
    java的泛型
    JAVA集合类--(一闪而过)
    java面向对象- -一闪而过
    进制转换之二进制与十进制转换
    跳跃表-原理及Java实现
    Excel二次开发相关代码
    程序员学炒股(7) 股市心得
    程序员学炒股(7) 股指期货收盘价对第二天开盘价有影响吗?
    程序员学炒股(6) 让我们来看一下7月份A股的表现
    程序员学炒股(5) 股指交割日效应是否存在?
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7380912.html
Copyright © 2011-2022 走看看