代码执行前:

代码执行后:

影像叠加代码:

        /// <summary>
/// 叠加DEM
/// </summary>
/// <param name="pRasterLayer">DEM栅格</param>
/// <param name="pOutRastLay">影像栅格</param>
private void SufraceDEM(IRasterLayer pRasterLayer, IRasterLayer pOutRastLay)
{
IRasterSurface pRasterSurface = new RasterSurface();
pRasterSurface.PutRaster(pRasterLayer.Raster, );
ISurface pSurface = pRasterSurface as ISurface;
ILayerExtensions pLayExtensions = pOutRastLay as ILayerExtensions;
I3DProperties p3DProperties = null;
for (int i = ; i < pLayExtensions.ExtensionCount; i++)
{
if (pLayExtensions.get_Extension(i) is I3DProperties)
{
p3DProperties = pLayExtensions.get_Extension(i) as I3DProperties;
}
}
p3DProperties.ZFactor =; //夸张系数
p3DProperties.BaseOption = esriBaseOption.esriBaseSurface;
p3DProperties.BaseSurface = pSurface;
p3DProperties.Apply3DProperties(pOutRastLay);
}

按钮调用代码:

 ILayer pLayer = getLayerByname("dem_project.tif");
IRasterLayer pDemRasterLayer = pLayer as IRasterLayer;
ILayer pImgLayer = getLayerByname("sx_img_3857.tif");
IRasterLayer pImgRasterLayer = pImgLayer as IRasterLayer;
SufraceDEM(pDemRasterLayer, pImgRasterLayer);
axSceneControl1.SceneGraph.RefreshViewers();
getLayerByname方法:
    /// <summary>
/// 获取指定图层通过名称
/// </summary>
private ILayer getLayerByname(String name)
{
ILayer layer = null;
int count = axSceneControl1.Scene.LayerCount;
if (count == ) MessageBox.Show("请加载图层");
for (int i = ; i < count; i++)
{
layer = axSceneControl1.Scene.get_Layer(i);
if (name == layer.Name.ToString())
{
break;
}
}
return layer; }

另外扩展一下影像叠加TIN的方法:

       /// <summary>
/// 叠加TIN
/// </summary>
private void AddTINSufrace(IRasterLayer pOutRastLay, ITin tin)
{
ITinAdvanced pTINAdvanced = tin as ITinAdvanced;
ISurface pSurface = pTINAdvanced.Surface;
ILayerExtensions pLayExtensions = pOutRastLay as ILayerExtensions;
I3DProperties p3DProperties = null;
for (int i = ; i < pLayExtensions.ExtensionCount; i++)
{
if (pLayExtensions.get_Extension(i) is I3DProperties)
{
p3DProperties = pLayExtensions.get_Extension(i) as I3DProperties;
}
}
p3DProperties.ZFactor =;
p3DProperties.BaseOption = esriBaseOption.esriBaseSurface;
p3DProperties.BaseSurface = pSurface;
p3DProperties.Apply3DProperties(pOutRastLay);
}

TIN叠加调用:

ILayer layer = getLayerByname("Tin");
ITinLayer tinlayer = layer as ITinLayer;
ILayer pImgLayer = getLayerByname("sx_img_3857.tif");
IRasterLayer pImgRasterLayer = pImgLayer as IRasterLayer;
AddTINSufrace(pImgRasterLayer, tinlayer.Dataset);

最新文章

  1. 中国式商业智能报表ActiveReports免费公开课,10月20日开讲
  2. 解读ASP.NET 5 &amp; MVC6系列(10):Controller与Action
  3. 【06-18】CentOS使用笔记
  4. 从一个ISP移至另一个ISP而不改变IP的方案
  5. 最短JS判断是否为IE6(IE的写法)
  6. boost 1.57.0安装
  7. [转]Java获取当前路径
  8. POJ 1270 Following Orders (拓扑排序,dfs枚举)
  9. swift开发:试玩 Apple 站点的 playground
  10. 从assemblyer Instructure deepth understander C principle
  11. ubuntu下安装svn
  12. OpenGL中glRotatef()函数究竟对矩阵做了什么
  13. 基于visual Studio2013解决面试题之1002公共子串
  14. android 使用asm.jar将android手机屏幕投射到电脑
  15. 吴恩达《机器学习》课程笔记——第七章:Logistic回归
  16. 第八节:常见安全隐患和传统的基于Session和Token的安全校验
  17. python3+ 简单爬虫笔记
  18. c# post方法亲测可用
  19. C/C++中volatile关键字详解
  20. spring cloud 使用spring cloud bus自动刷新配置

热门文章

  1. JavaScript 拖曳和居中问题
  2. PHP程序员技术职业生涯,你是如何规划的?
  3. jq常用事件
  4. c语言中的字节数关系、
  5. H3C RIPv2配置任务
  6. 解决 el-autocomplete 不显示及没数据时闪一下的问题
  7. 51nod 1287加农炮
  8. 手把手教你用ngrx管理Angular状态
  9. ES安装&amp;常见错误
  10. eclipse中如何配置tomcat