• matlab奇技淫巧——绘制三维地图


      在数据处理工作中,常常会用到地图的绘制,最常用的自然是绘制平面的区域/全球地图,通过

    worldmap('world')           % 创建世界地图坐标区域
    load coastlines             % 导入海岸线数据
    plotm(coastlat,coastlon)
    
    • 1
    • 2
    • 3

    即可绘制,效果如下,其中经度为 − 180 ∼ 180 -180\sim180 180180 ,负为西经,正为东经,纬度为 − 90 ∼ 90 -90\sim90 9090 ,北纬为正,南纬为负。

    在这里插入图片描述

      不过本博文题目是 matlab 奇技淫巧,岂可局限于此,下面我们就画一个三维地图,就像地球仪那样的。 ๑乛◡乛๑

      首先,需要绘制一个球体,这个可以用 sphere 函数生成,然后使用 mesh 绘制,这样就获得了一个球体。随后再绘制海岸线,需要将经纬度转换成 x , y , z x,y,z x,y,z 三维坐标,然后用 plot3 绘制,代码如下

    figure('color','w')
    hold on
    
    [x,y,z]=sphere(36);             % 生成一个球,36边,即分辨率:经度10度,纬度5度
    mesh(x,y,z,'EdgeColor','k');    % EdgeColor属性设置网格颜色
    axis equal;
    
    % 绘制海岸线
    load coastlines             % 导入海岸线数据
    x2=cosd(coastlat).*cosd(coastlon);
    y2=cosd(coastlat).*sind(coastlon);
    z2=sind(coastlat);
    plot3(x2,y2,z2,'k')
    
    hold off
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    就可以得到三维地球了,如下

    在这里插入图片描述

    在这个地图上,可以用 scatter 或 plot3 绘制自己需要的散点数据,譬如绘制 WWLLN 闪电定位数据如下

    在这里插入图片描述

      但有时我们不止需要绘制散点数据,还要绘制场强等数据(类似 surf 的绘制结果),这时就要用到纹理贴图了,如下

    [x,y,z]=sphere(36);
    h=surface(x,y,z);
    set(h,'CData',map,'FaceColor','texturemap');	%texturemap纹理贴图
    
    • 1
    • 2
    • 3

    其中 map 数据就是需要绘制的场强数据,map 为 180*360 的二维矩阵,对应 9 0 ∘ S ∼ 9 0 ∘ N ,   18 0 ∘ W ∼ 18 0 ∘ E 90^\circ S\sim90^\circ N,\ 180^\circ W\sim180^\circ E 90S90N, 180W180E ,利用这一方法绘制的 CHAMP 卫星观测的地球磁场强度图如下

    在这里插入图片描述

    (完)

  • 相关阅读:
    SpringBoot+Vue项目旅游信息推荐系统【源码开源】
    day14学习总结
    HTML区块、布局
    批量测试ip连通性shell脚本
    优雅的MVC思想
    融云「百幄」之数字人,升级交互体验的「新同事」
    dreamweaver作业静态HTML网页设计——我的家乡海南旅游网站
    数模电路基础知识 —— 7. PN结与二极管的工作原理
    web UI自动化介绍
    计算机三级 网络技术 大题第一题 答题技巧分享
  • 原文地址:https://blog.csdn.net/qq_43557686/article/details/133903202