1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > MATLAB绘制地形图和等高线图

MATLAB绘制地形图和等高线图

时间:2019-12-18 06:53:18

相关推荐

MATLAB绘制地形图和等高线图

文章目录

前言一、绘制规则格网DEM和等高线图原理二、代码实现1.代码2.运行结果

前言

MATLAB作为强大的绘图和数学计算的编程性软件,其功能渐渐也被广泛应用于地理地形图绘制中。相比于传统的arcGIS、3Dmax、南方cass绘图软件来讲,MATLAB能够做到简便、宏观的展示地形的全貌。

一、绘制规则格网DEM和等高线图原理

1. 规则格网DEM绘制原理

规则格网DEM的组织形式

DEM(Digital Elevation Model,数字高程模型)是一定范围内规则格网点的平面坐标(X,Y)及其高程(Z)的数据集

需要注意的是,上述是规则格网的(x,y,z)值,与普通三维坐标值(x,y,z)不同,像我们在某些途径下载的地形数据普遍以经纬坐标(B,L,H)或是大地坐标(x,y,z)构成,其呈现出空间的无规律性,当我们直接绘制时,普遍也会采用不规则三角格网TIN进行绘制。

因此要想实现利用规则格网绘制上述的地形数据,需要实现插值转换。DEM分块内插法

如下图所示,红色点为不规则数据点集(Xi,Yi),蓝色点为规则格网点集(xi,yi)

其中可以看出,点U,G1,D1,A为特殊点,C1,A分别具有ymax,xmin,点U,D1分别具有xmax,xmin

因此便可以采用linspace函数,X=linspace(xU,xD1,4) Y=linspace(yA,xC1,2)‘,注X,Y都为向量,这样便可以知道每个格网点的坐标值。

曲面拟合

知道上述的格网坐标后,由于规则格网DEM是三维的,格网也为NNN的立方格网,因此在高程上呈现出忽高忽低,因此还需要对高程进行曲线拟合。具体拟合方法采用最小二乘拟合原理。

MATLAB采用griddata函数,其用法如下

[X,Y,Z]= griddata(x,y,v,xq,yq) 使 v = f(x,y) 形式的曲面与向量 (x,y,v) 中的散点数据拟合。griddata 函数在 (xq,yq) 指定的查询点对曲面进行插值并返回插入的值 vq。曲面始终穿过 x 和 y 定义的数据点。

其中xq,yq分别是上面的linsqace函数对x,y进行插值的结果,z=v;通过上述拟合的结果,

下面是原始的地形(B,L,H)数据

使得x由k行列向量变成了n阶矩阵(每一列的元素相同)(其中k是原始地形数据的x个数,n是插值的个数)

同理,但y插值后(即yq)要进行转置,形成n阶矩阵(每一行的元素相同)

!!!z也成为**n阶矩阵(行列各元素不相同)**其值采用的最小二乘原理,在(xq,yq)指定的查询点对曲面进行插值返回的值。

因此经过上面的的插值和曲面拟合之后,立体格网上数据点就具有了相应的坐标值,利用mesh函数进行绘图,便能实现地形的绘制。

2. 等高线绘图绘制原理

借用下面的图一和图三的俯视图可以看出,该区域为100*100的格网,每个格网点对应一个(x,y,z)坐标,我们利用matlab自带等高线函数contour或contour3函数,用法如下:

contour(X,Y,Z) 指定 Z 中各值的 x 和 y 坐标,其中 Z 包含 x-y 平面上的高度值。MATLAB® 会自动选择要显示的等高线。Z 的列和行索引分别是平面中的 x 和 y 坐标。利用这个函数便可以合理的利用高程绘制相应的等高线图。

具体细节原理还请各位查看/lweiyue/article/details/91490460

二、代码实现

1.代码

代码如下(示例):

gcd=importdata('高程点16-23-05.txt');gcd_data=gcd.datax=gcd_data(:,1);y=gcd_data(:,2);z=gcd_data(:,3);[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),"v4");%三维地形图部分image1=mesh(X,Y,Z)image1.FaceAlpha=0.5;colorbar;title('某地区地形图');%二维地形图部分image2=contour(X,Y,Z,20)colorbartitle('该地区平面等高线图');%三维地形图部分contour3(X,Y,Z,100,"Fill","on")title('该地区三维等高线图');colorbarcontour(X(1:10,1:10),Y(1:10,1:10),Z(1:10,1:10),"ShowText","on","LineWidth",3,"LabelSpacing",144)title('该地区部分等高线图');plot3(X,Y,Z,'r')title('该地区线性图')

2.运行结果

图1

图二

图三

图四

图五

具体详细绘制地形图大家可以参考/shoulinniao/p/11382305.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。