您的位置:首页 > 其它

ArcEngine 设置要素图层的基准高(Base Height),使其紧贴地形TIN

2017-08-13 23:35 399 查看

通常将正射影像叠加在地形表面作为纹理渲染,矢量要素图层同样可以叠加在地形表面:

设置基准高前:



设置基准高后:



核心代码:

private void 设置基准高ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            for (int lyrIndex = 0; lyrIndex < axSceneControl1.Scene.LayerCount; lyrIndex++)

            {

                ILayer pLayer = axSceneControl1.Scene.get_Layer(lyrIndex);

                //getlayerbyName获取

                if (pLayer is IFeatureLayer)

                {

                    SetlayerSurface(pLayer);

                }

            }

        }

        public I3DProperties Get3DPropsFromLayer(ILayer pLyr)

        {

            ILayerExtensions pLyrExts = (ILayerExtensions)pLyr;

            I3DProperties p3DProp = null;

            for (int i = 0; i < pLyrExts.ExtensionCount; i++)

                if (pLyrExts.get_Extension(i) is I3DProperties)

                    p3DProp = (I3DProperties)pLyrExts.get_Extension(i);

            return p3DProp;

        }

        public void SetlayerSurface(ILayer layer)

        {  

            ISurface surface=null;      

            for (int lyrIndex = 0; lyrIndex < axSceneControl1.Scene.LayerCount; lyrIndex++)

            {

                ILayer pLayer = axSceneControl1.Scene.get_Layer(lyrIndex);

                //getlayerbyName获取

                if (pLayer is ITinLayer)

                {

                  ITinLayer pTinLayer = pLayer as ITinLayer;

                   

                    ITinSurface pSurf = pTinLayer.Dataset as ITinSurface;

                    surface = pSurf as ISurface;

                }

            }

            ILayerExtensions layerextensions = layer as ILayerExtensions;

            I3DProperties properties = Get3DPropsFromLayer(layer);        

            properties.BaseOption = esriBaseOption.esriBaseSurface;

            properties.BaseSurface = surface;

            properties.Apply3DProperties(layer);

            //properties.ZFactor = 0;         

            axSceneControl1.SceneGraph.RefreshViewers();

        }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arcgis tin 三维 基本高