如何代码实现ArcGlobe中TOC右键菜单下Elevation选项卡中的Floating on a custom surface功能...

首先,标题要长……

其次,很无奈,找这个东西找了一天……网上都没有明确的代码示例或解释。快要遍历官方的Developer Help文档了。各种搜Floating on神马的都没有。最后经语法分析,觉得

How to drape a layer on an elevation surface in globe

这个标题有点意思。于是尝试了一下,还真是……无语啊,文档就不能跟右键菜单设置里的说明保持一致么……

最无奈的是 直接搜索 How to drape a layer on an elevation surface in globe 一个搜索结果都没有!

搜drape才能找到该文档……无了个语的。

 

问题描述:

我现在有高程数据,也就是有一个IRasterLayer elevationRasterLayer。

我生成了一个栅格数据,渲染之后要贴在地球表面上。要贴的图层是IRasterLayer coverageRasterLayer。

最后就剩怎么贴了。

 

贴法:

  借鉴官方的示例。

// 搞到globeDisplayLayers

IGlobeDisplayLayers2 pGlobeDisplayLayers2 = axGlobeCtrl.GlobeDisplay as IGlobeDisplayLayers2;

// 找到要贴的图层的属性
IGlobeLayerProperties drapeLayerGlobeLayerProperties = pGlobeDisplayLayers2.FindGlobeProperties(coverageRasterLayer);

// 获取高度属性设置
IGlobeHeightProperties drapeLayerGlobeHeightProperties = drapeLayerGlobeLayerProperties.HeightProperties;

// 设置baseLayer为原来的高程底图
drapeLayerGlobeHeightProperties.BaseLayer = elevationRasterLayer;

// 设置一下BaseOption 属性
drapeLayerGlobeHeightProperties.BaseOption =
ESRI.ArcGIS.GlobeCore.esriGlobeLayerBaseOption.esriGlobeLayerBaseLayer;

// 将配置好的高度属性应用到被贴的图层
drapeLayerGlobeHeightProperties.Apply(axGlobeCtrl.GlobeDisplay.Globe, coverageRasterLayer);

// 刷刷刷
axGlobeCtrl.GlobeDisplay.RefreshViewers();

 

转载于:https://www.cnblogs.com/reaver21/archive/2012/08/28/2660652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值