【Matlab】中国东海阴影立体感地图
【Matlab】中国东海阴影立体感地图
【Matlab】中国东海阴影立体感地图
【Matlab】中国东海阴影图立体感画法
以前分享过一次,链接如下:
中国海域地形图
但是以前还是有些小问题,这次修改了。
另外,增加了新的画法:
另外,本期使用数据地形数据下载教程见往期:
链接如下:【数据】你不知道20种地形数据及其精度–附数据链接及其详细介绍–以及下载教学
地形裁剪数据函数见往期海洋数据处理工具包:
链接如下:
matlab 处理海洋数据并画图的工具包–ocean_data_tools
各种样式一览:代码放最后了!
图片
更改海岸线:
其他样式:
图片
图片
陆地不显示:
图片
图片在这里插入图片描述
在这里插入图片描述
还有最后一种样式:
图片
图片
图片
最后:本公众号可提供学习交流平台:可投稿发布。可传播学术文章。代码。学术会议等。可扫码联系。
代码: 群内有全部代码数据函数等。
clear; clc; close all;% Specify path to downloaded bathymetry.
bathymetry_dir = 'D:\data\etopo\topo_20.1.nc'; % YOU MUST MODIFY LINE 17!
% bathymetry_extractregion = [0, 45.0 ,105, 135]; % [-90 90 -180 180];
[bathy] = bathymetry_extract(bathymetry_dir,region);% bathymetry_plot
% Load bathymetry data.
bath = bathy.z;
lat = bathy.lat;
lon = bathy.lon;coast = load('coast_china_shore.dat'); % 加载海岸线数据
index = find(isnan(coast(:, 1))); % 查找数据中的NaN值(海岸线分隔符)%%
close all
figure('position',[10 10 1480./4 1755./4],'color','w')
% 绘制海洋表面
surf(lon, lat, bath.', 'LineStyle', 'none', 'FaceLighting', 'none');%, 'FaceLighting', 'none'
shading interp; % 平滑着色,增加细节感
% 获取蓝色渐变色图(500个颜色,用于海洋部分)
blue_map = m_colmap('blues', 500);
% 创建白色渐变色图(6个颜色,用于陆地部分,纯白色到浅白色渐变)
white_map = [linspace(1, 1, 6)' linspace(1, 1, 6)' linspace(1, 1, 6)'];
% 合并蓝色渐变和白色渐变色图
combined_map = [blue_map; white_map];
% 设置颜色映射
colormap(combined_map);
% 设置深度范围,使深度小于0的区域显示为蓝色,大于0的区域显示为白色
caxis([-6000 1000]);
% 设置光源
l1 = light('Position', [0 0 1000000000], 'Style', 'infinite'); % 使用无限光源
l1.Color = [1 1 1]; % 设置为白色光源
% 使用 `lighting flat` 来避免光照模型影响白色部分
lighting flat; % 使用平面光照模型,避免白色部分变灰
% 设置材质为 `dull`,减少反射以避免白色部分的光泽
% material dull;
% material([0.7, 0.5, 0.5]); % 只保留环境光
material([0.7, 0.3, 0.3]); % 只保留环境光
% 聚焦光源
camlight('headlight'); % 调整光照,聚焦在视角前方
% 设置坐标轴范围
xlim([105 130])
ylim([0 45])
% 加载并绘制海岸线
hold on
% 循环遍历海岸线数据并绘制
for i = 1:length(index) - 1plot(coast(index(i) + 1:index(i + 1) - 1, 1), ...coast(index(i) + 1:index(i + 1) - 1, 2),'color',[0.68, 0.85, 0.9], 'LineWidth', 1.2); % 绘制海岸线,颜色为黑色hold on%%[0.68, 0.85, 0.9]
end
box on
% 设置视角为 2D 视图
view(2);
% 导出图像
export_fig('China_sea_version11.jpg','-r600')
% print('China_sea_version1','-dpdf','-fillpage')