代码执行前:

代码执行后:

影像叠加代码:

        /// <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. supersockets和 AppSession,AppServer 配合工作

    现在, 你已经有了 RequestInfo, ReceiveFilter 和 ReceiveFilterFactory, 但是你还没有正式使用它们. 如果你想让他们在你的程序里面可用, 你需要定义你们 ...

  2. supersockets接收过滤器(ReceiveFilter)

    接收过滤器(ReceiveFilter)用于将接收到的二进制数据转化成请求实例(RequestInfo). 实现一个接收过滤器(ReceiveFilter), 你需要实现接口 IReceiveFilt ...

  3. 搭建服务器上的GIT并实现自动同步到站点目录(www)

    https://blog.csdn.net/baidu_30000217/article/details/51327289 前言:当我们想要实现几个小伙伴合作开发同一个项目,或者建立一个资源分享平台的 ...

  4. [转]分布式监控工具Ganglia 介绍 与 集群部署.

    如果你目的很明确就是冲着标题来的,不爱看我唠叨,请直接进入第二个分割线之后的内容. 其实之前就是有做Swift监控平台的打算的,但是因为没什么硬性需求么,也不要紧的,就一直搁置了.最近实验室来了个大二 ...

  5. H3C DHCP租约更新

  6. vmware虚拟机卸载干净在注册表的也需要删除

  7. linux 内存区

    GFP_DMA 和 GFP_HIGHMEM 都有一个平台相关的角色, 尽管对所有平台它们的使用都 有效. Linux 内核知道最少 3 个内存区: DMA-能够 内存, 普通内存, 和高端内存. 尽管 ...

  8. codemirror 行高 字体 行间距 设置

    用的是 react-codemirror2 样式文件: ... .code-mirror{ font-size : 13px; line-height : 150%; } ... 引入样式文件: .. ...

  9. Jasypt加密SpringBoot配置文件

    如果 SpringBoot 的 properties 文件中含有用户名密码等敏感信息,为了安全起见需要对明文密码加密.Jasypt 是用来加密的 jar 包. 1.引入 Jasypt 在 pom.xm ...

  10. Linux 内核即插即用规范

    一些新 ISA 设备板遵循特殊的设计规范并且需要一个特别的初始化顺序, 对增加接口板 的简单安装和配置的扩展. 这些板的设计规范称为即插即用, 由一个麻烦的规则集组成, 来建立和配置无跳线的 ISA ...