matlab 地理网格数据显示的三种方式

matlab 地理网格数据显示方式

地图数据与经纬度坐标矩阵关系决定显示方式

首先确保matlab平台已经暗转Mapping Toolbox工具,它目前支持三种地理地图数据的显示,通过经纬度定位信息来决定采用何种显示方式,具体例子来自matlab帮助文档。

  • 第一种显示方式
    地图地理数据矩阵的尺寸为mxn,即是m行n列的二维数据;若经度纬度坐标信息的尺寸恰好也是mxn,那么会在相应的地理点(数据单元的中心)对数据进行地理定位。
  • 第一种显示方式的例子:
Z = [ ...
 1  2  3  4; ...
 5  6  7  8; ...
 9 10 11 12; ...
13 14 15 16];
lat = [ ...
  30  30  30  30; ...
   0   0   0   0; ...
 -30 -30 -30 -30; ...
 -60 -60 -60 -60];
lon = [ ...
 0 30 60 90;...
 0 30 60 90;...
 0 30 60 90;...
 0 30 60 90];

figure('Color','white','Colormap',autumn(64))
axesm('pcarree','Grid','on','Frame','on',...
    'PLineLocation',30,'PLabelLocation',30)
mlabel; plabel; axis off; tightmap
h = geoshow(lat,lon,Z,'DisplayType','surface');
set(h,'ZData',zeros(size(Z)))
ht = textm(lat(:),lon(:),num2str(Z(:)), ...
    'Color','blue','FontSize',14);
colorbar('southoutside')

第一种显示情况如下:
在这里插入图片描述

  • 第二种显示方式
    地图地理数据矩阵的尺寸为(m-1)x(n-1),即是m-1行n-1列的二维数据;经度纬度坐标信息的尺寸是mxn,地理数据的行的纬度以及列纬度恰好比坐标矩阵纬度小1,那么由四个相邻的纬度和经度组成的区域对应一个地图数据。请注意测试中”DisplayType“要为”texture“才能正常显示。
  • 第二种显示方式的例子:
%Z3by3为地图数据二维数组
Z3by3 = [ ...
 1  2  3; ...
 4  5  6; ...
 7  8  9];
%lat 与 lon分别为 纬度线和经度线的坐标矩阵
lat = [ ...
  30  30  30  30; ...
   0   0   0   0; ...
 -30 -30 -30 -30; ...
 -60 -60 -60 -60];
lon = [ ...
 0 30 60 90;...
 0 30 60 90;...
 0 30 60 90;...
 0 30 60 90];

figure('Color','white','Colormap',autumn(64))
axesm('pcarree','Grid','on','Frame','on',...
    'PLineLocation',30,'PLabelLocation',30)
mlabel; plabel; axis off; tightmap
h = geoshow(lat,lon,Z3by3,'DisplayType','texture');
%显示每个地图数据的对应的地理位置
tlat = [ ...
   15 15 15; ...
   -15 -15 -15; ...
   -45 -45 -45];
tlon = [ ...
    15 45 75; ...
    15 45 75; ...
    15 45 74];
textm(tlat(:),tlon(:),num2str(Z3by3(:)), ...
    'Color','blue','FontSize',14)

第二种显示情况如下图
在这里插入图片描述

  • 第三种显示方式
    地图地理数据矩阵的尺寸为mxn,即是m行n列的二维数据;纬度坐标矩阵的纬度都比地理数据行数小,即,纬度矩阵纬度可能是m-1,m-2,…1;而经度坐标矩阵纬度比地理数据列数小,即为n-1,n-2,…1。那么地图数据就会一起被框在最外围经度和纬度线所限定的网格内,有可能正常显示每个地图数据,也有可能扭曲全部地图数据,具体看经度坐标和纬度坐标的纬度,以下给出对应的例子
  • 第三种显示方式的例子:
%Z4by4为地图数据二维数组
Z4by4 = [ ...
 1  2  3 10; ...
 4  5  6 10; ...
 7  8  9 10;...
 10 10 10 10];
%lat 与 lon分别为 纬度线和经度线的坐标矩阵
lat = [ ...
  30  30  30; ...
   0   0  0;...
   -30 -30 -30];

lon = [ ...
 0 30 60;...
 0 30 60;...
 0 30 60];

figure('Color','white','Colormap',autumn(64))
axesm('pcarree','Grid','on','Frame','on',...
    'PLineLocation',30,'PLabelLocation',30)
mlabel; plabel; axis off; tightmap
h = geoshow(lat,lon,Z4by4,'DisplayType','texture');

第三种显示结果如下,注意到全部数据被限定在经度纬度内部,网格线内部有四个数据,这种显示模式是不准确的,不推荐使用。
在这里插入图片描述

数据显示顺序

应该从图中看出数据的显示顺序从图的第一行开始,但是matlab默认的数据显示模式是数据从图的底部开始,这所以有不同,是因为上面的三个例子里面,规定的lat和lon矩阵已经给定,全部地图数据按照给定的lat和lon指定的顺序进行排列。
地图方格图形标准生成函数为 meshgrat,用法参考相关手册,一般使用给定的数据矩阵和数据对应的地理光栅参考对象,即
[lat, lon] = meshgrat(Z, R) constructs a graticule for use in displaying a regular data grid, Z. In typical usage, a latitude-longitude graticule is projected, and the grid is warped to the graticule using MATLAB® graphics functions. In this two-argument calling form, the graticule size is equal to the size of Z. R can be a geographic raster reference object, a referencing vector, or a referencing matrix.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值