在MATLAB的m_map工具箱中,m_image和m_pcolor都是用于绘制地理数据的函数
主要区别
1. m_pcolor
- 工作原理 :创建伪彩色图,数据点位于网格顶点
- 数据结构:对于m×n的数据矩阵,会生成(m-1)×(n-1)个色块
- 坐标要求:需要提供网格点坐标(X, Y矩阵)
- 特点 :
- 更适合不规则网格数据
- 需要
shading flat或shading interp来获得平滑效果 - 默认会在色块之间显示网格线(可通过
shading flat消除) - 数据维度与网格维度相同
2. m_image
- 工作原理 :直接显示图像,数据点位于色块中心
- 数据结构:对于m×n的数据矩阵,会显示m×n个色块
- 坐标要求:可以指定图像在地图上的位置范围
- 特点 :
- 更适合规则网格的快速显示
- 自动处理坐标对齐
- 显示效果更接近实际图像
- 不会产生网格线
代码示例对比
matlab
% 创建示例数据
lon = 120:0.5:130;
lat = 20:0.5:30;
[LON, LAT] = meshgrid(lon, lat);
data = sin(LON/5) .* cos(LAT/5);
% 初始化地图
figure(1)
m_proj('mercator', 'lon', [120 130], 'lat', [20 30]);
m_gshhs_i('color', 'k');
% 使用 m_pcolor
subplot(2,1,1)
m_pcolor(LON, LAT, data);
shading flat; % 需要shading命令
colorbar;
title('m\_pcolor');
m_grid;
% 使用 m_image
subplot(2,1,2)
m_image(lon, lat, data); % 注意:这里传入的是向量而非矩阵
colorbar;
title('m\_image');
m_grid;
关键差异总结
| 特性 | m_pcolor | m_image |
|---|---|---|
| 数据位置 | 网格顶点 | 色块中心 |
| 色块数量 | (m-1)×(n-1) | m×n |
| 网格线 | 默认有(可去除) | 无 |
| 坐标输入 | 需要X,Y矩阵 | 可接受向量 |
| 性能 | 稍慢 | 较快 |
| 适用场景 | 不规则网格、科学数据 | 规则网格、图像数据 |
| 需要shading | 是 | 否 |
使用建议
-
选择 m_pcolor 当:
- 数据在网格顶点上定义
- 需要精确控制每个数据点的位置
- 处理不规则间隔的网格数据
- 需要与其他基于顶点的绘图函数(如
m_contour)保持一致
-
选择 m_image 当:
- 数据代表规则网格的像元值
- 快速显示地理参考图像
- 需要保持数据矩阵的原始维度
- 显示卫星图像或遥感数据
-
注意事项:
- 对于相同的经纬度范围,
m_image和m_pcolor显示的数据会有半个网格的偏移 m_pcolor需要配合shading flat或shading interp使用以获得最佳效果m_image在坐标处理上更简洁,适合快速绘图
- 对于相同的经纬度范围,
实际选择取决于数据结构和具体的可视化需求。