用MATLAB绘制三维地形高程图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用MATLAB绘制三维地形高程图相关的知识,希望对你有一定的参考价值。
参考技术A具体方法如下:
1、将已知的海拔数据放入一个矩阵A中。
2、从矩阵A中获取x,y,z坐标数据
3、根据x,y,z坐标数据,利用griddata函数,进行插值,并绘制伪彩色图。
4、绘制等高线图,代码如下:figure(3),contourf(X,Y,Z)
绘制山地曲面图,代码如下:figure(4),surf(X,Y,Z)
完整的MATLAB代码如图所示。
5、运行结果如下:
散点图
6、伪彩色图
7、等高线图
8、山地三维曲面图
ArcEngine下SceneControl叠加影像数据(构建三维地形)
载入完TIN数据后。须要在三维物体上描绘细节。即纹理;建立DEM表面点与纹理空间点的关系,即纹理映射。叠加影像数据就是把影像看作纹理。将其贴在地形表面,让其具有地形起伏的三维效果。
这里与GlobeControl下三维场景的构建有所不同,在前面的博文中我们提到过,globe下图层主要有三种类型:Floating、Draped、Elevation(浮动、叠加和高程图层),即仅仅须要设置图层的属性就可以。叠加图层与浮动图层从高程图层获取高程值。SceneControl中实现影像的叠加,參照ArcScene中的操作:“右键”——>“属性”——>“基本高度”——>“从表面获取的高程”,设置为浮动在自己定义表面。
这里主要使用I3DProperties接口,代码例如以下:
ISceneGraph pSceneGraph = axSceneControl1.SceneGraph; IScene pScene = pSceneGraph.Scene; ITinLayer pTinLayer = null; IRasterLayer pRasterlayer = null; //获取TIN、DOM for (int i = 0;i < pScene.LayerCount;i++) { ILayer pLayer = pScene.get_Layer(i); if (pLayer is ITinLayer) { pTinLayer = pLayer as ITinLayer; } if (pLayer is IRasterLayer) { pRasterlayer = pLayer as IRasterLayer; } } //设置3D属性 ITinAdvanced tinAdvanced = pTinLayer.Dataset as ITinAdvanced; ISurface surface = tinAdvanced.Surface; ILayerExtensions layerExtensions = pRasterlayer as ILayerExtensions; I3DProperties p3DProperties = null; for (int i = 0;i < layerExtensions.ExtensionCount;i++) { if (layerExtensions.get_Extension(i) is I3DProperties) { p3DProperties = layerExtensions.get_Extension(i) as I3DProperties; } } p3DProperties.BaseOption = esriBaseOption.esriBaseSurface; p3DProperties.BaseSurface = surface; p3DProperties.Apply3DProperties(pRasterlayer);
以上是关于用MATLAB绘制三维地形高程图的主要内容,如果未能解决你的问题,请参考以下文章