代码执行前:

代码执行后:

影像叠加代码:

        /// <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);

ArcEngine DEM叠加影像的更多相关文章

  1. ArcEngine 栅格数据

    1.ArcEngine中的栅格数据组织方式(详细信息见:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/009t0000 ...

  2. 【FLUENT案例】04:利用DDPM+DEM模拟鼓泡流化床

    1 引言2 问题描述3 准备4 FLUENT前处理 1 引言 DEM碰撞模型扩展了DPM模型的功能,能够用于稠密颗粒流动的模拟.该模型可以与DDPM(Dense DPM)模型何用以模拟颗粒对主相的阻碍 ...

  3. Arcgis, ArcEngine, Arcgis Server使用开发汇总 索引

    ArcGIS系列软件license及安装: Arcgis SDE10.1 和 Arcgis server10.1的授权文件license tnt_esri.dat Arcgis8.1安装license ...

  4. 海拔高度图*.dem文件的读取—vtkDEMReader

    vtkDEMReader reads digital elevation files and creates image data. Digital elevation files are produ ...

  5. geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践

    眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表. 一.BUG调试 首先记录一天的BUG调试,简单copy了 ...

  6. 关于印发利用DEM确定耕地坡度分级技术规定(试行)的通知

    下载:http://files.cnblogs.com/files/gisoracle/%E5%88%A9%E7%94%A8DEM%E7%A1%AE%E5%AE%9A%E8%80%95%E5%9C%B ...

  7. 【转载】Arcengine效率探究之二——属性的更新

    文转载自hymyjl2010<Arcengine效率探究之二——属性的更新>   修改一批要素的属性有多种方法,当数据量较大时,若选择不当可能会大大影响速度. 一.IRowBuffer 方 ...

  8. 【ESRI论坛6周年征文】ArcEngine注记(Anno/ Label/Element等)处理专题 -入门篇

    原发表于ESRI中国社区,转过来.我的社区帐号:jhlong http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=122097 ----------- ...

  9. ArcGIS 10与ArcEngine 10安装及破解

    1 2 3 4 5 分步阅读 一键约师傅 百度师傅高质屏和好师傅,拯救你的碎屏机 百度经验:jingyan.baidu.com 现在常见的破解方法在下面的地址中已经详细附图说明了,但是这种破解方法,想 ...

随机推荐

  1. npm镜像及配置方法

    npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...

  2. jieba分词工具的使用方法

    作为我这样的萌新,python代码的第一步是:#coding=utf-8 环境:python3.5+jieba0.39 一.jieba包安装方法: 方法1:使用conda安装 conda instal ...

  3. 如何在SpringMVC项目中部署WebService服务并打包生成客户端

    场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 ...

  4. 2019-1-29-C#-Task.Run-和-Task.Factory.StartNew-区别

    title author date CreateTime categories C# Task.Run 和 Task.Factory.StartNew 区别 lindexi 2019-01-29 16 ...

  5. 【t002】jam的计数法

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世 ...

  6. jekyll 如何加密博客 防止抓取

    经常会发现自己的博客被一些垃圾网站抓取,我就在博客进行加密,在访问的时候进行解密,于是爬虫如果不执行js就无法获得内容 本文告诉大家如何加密博客 加密使用把文章内容转换为 Html 之后转换为 bas ...

  7. UWP IRandomAccessStream 与 Stream 互转

    本文告诉大家如何将 IRandomAccessStream 和 Stream 互转 如果在使用网络传输文件的时候,在 UWP 经常使用将 IRandomAccessStream 和 Stream 互转 ...

  8. C# 命令行如何静默调用 del 删除文件

    如果在 C# 命令行调用 del 删除文件,很多时候会提示是否需要删除,本文告诉大家如何调用命令行的时候静默删除 在C# 命令行 调用 del 删除文件的时候,会提示是否删除,通过在命令行加上 \Q ...

  9. 用jsonp 解决跨域问题

    想自己用 js写一个原生的ajax请求,访问本地文件,json/txt.但是demo,写了一个后,发现 原来是跨域了. js 写的原生ajax 请求代码如下 html代码 将获取的txt 文件 展示出 ...

  10. 2019-4-29-C#-从-short-转-byte-方法

    title author date CreateTime categories C# 从 short 转 byte 方法 lindexi 2019-4-29 12:8:39 +0800 2019-01 ...