【重新定义matlab强大系列二十】Matlab显示地球地貌数据

news2024/9/22 17:28:47

🔗 运行环境:Matlab

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天更新系列——重新定义matlab强大系列💗

📆  最近更新:2024 年 08 月 11 日,左手の明天的第 346 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


本文中的数据取自美国商务部海洋及大气管理局 (NOAA) 国家地理数据中心,数据通告编号为 88-MGG-02。

一、关于地貌数据

数据文件 topo.mat 包含地貌数据。topo 是海拔数据,topomap1 是海拔的颜色图。

load topo topo topomap1    % load data 
whos('topo','topomap1')
 Name            Size              Bytes  Class     Attributes

  topo          180x360            518400  double              
  topomap1       64x3                1536  double              

二、显示地球地貌数据的方法

1、等高线和纹理映射

创建等高线图

以可视化形式呈现地貌数据的一种方法是创建等高线图。若要显示地球上各大洲的轮廓,请绘制海拔为零的点。contour 中的前三个输入参量指定等高线图上的 X、Y 和 Z 值。第四个参量指定要绘制的等高线层级。

x = 0:359;                                % longitude
y = -89:90;                               % latitude

figure
contour(x,y,topo,[0 0])

axis equal                                % set axis units to be the same size
box on                                    % display bounding box

ax = gca;                                 % get current axis               
ax.XLim = [0 360];                        % set x limits
ax.YLim = [-90 90];                       % set y limits
ax.XTick = [0 60 120 180 240 300 360];    % define x ticks
ax.YTick = [-90 -60 -30 0 30 60 90];      % define y ticks

以图像形式查看数据

可以使用高程数据和自定义颜色图创建地貌图像。地貌数据被视为自定义颜色图的索引。将图像的 CDataMapping 设置为 'scaled' 以将数据值线性缩放至颜色图的范围。在颜色图上,不同深浅的绿色表示海拔数据,不同深浅的蓝色表示海平面下的深度。

image([0 360],[-90 90], flip(topo), 'CDataMapping', 'scaled')
colormap(topomap1)

axis equal                                % set axis units to be the same size

ax = gca;                                 % get current axis               
ax.XLim = [0 360];                        % set x limits
ax.YLim = [-90 90];                       % set y limits
ax.XTick = [0 60 120 180 240 300 360];    % define x ticks
ax.YTick = [-90 -60 -30 0 30 60 90];      % define y ticks

使用纹理映射

纹理映射将二维图像映射到三维曲面上。若要将地貌映射到球形曲面,将由 CData 属性指定的曲面颜色设置为地貌数据并将 FaceColor 属性设置为 'texturemap'

clf
[x,y,z] = sphere(50);          % create a sphere 
s = surface(x,y,z);            % plot spherical surface

s.FaceColor = 'texturemap';    % use texture mapping
s.CData = topo;                % set color data to topographic data
s.EdgeColor = 'none';          % remove edges
s.FaceLighting = 'gouraud';    % preferred lighting for curved surfaces
s.SpecularStrength = 0.4;      % change the strength of the reflected light

light('Position',[-1 0 1])     % add a light

axis square off                % set axis to square and remove axis
view([-30,30])                 % set the viewing angle

2、worldmap函数创建

在MATLAB中显示地理数据,可以使用Mapping Toolbox中的worldmap函数来创建世界地图,然后使用geoshow函数来显示地理数据。

展示世界地图经纬线


worldmap('World')

载入海岸线

worldmap('World')%世界地图
load coast %载入海岸线
plotm(lat,long)%经纬度

ax = worldmap('World');
setm(ax, 'Origin', [0 180 0])%更改经度,从0到180再到0
land = shaperead('landareas', 'UseGeoCoords', true);%陆地
geoshow(ax, land, 'FaceColor', [0.5 0.7 0.5])

载入水准面数据

worldmap([-50 50],[160 -30]) %载入范围
 
load geoid %载入水准面数据
geoshow(geoid, geoidrefvec, 'DisplayType', 'texturemap'); %画图显示
 
load coast %载入海岸线
geoshow(lat, long) %显示

海拔高度的不同颜色显示

%-- 分省中国地图在MATLAB中的画法 --%
% 地图数据来源:国家基础地理信息系统网站
% 人口数据来源:国家统计年鉴2011版
%% 载入地图数据
clear all
% 载入各省的多边形数据
sheng=shaperead('maps/bou2_4p.shp', 'UseGeoCoords', true);
load chinese_name.mat % 省,省会,主要城市的正确中文
for i=1:length(sheng)
    sheng(i).NAME=sheng_chinese_name{i}; % 纠正中文显示错误
end
%unique(sheng_chinese_name) % 含有34个省(直辖市)的数据,合并相同的值
length(sheng) % 共分为925个区块
%% 使用importdata向导导入2011年全国31个省的人口数据
% data为人口数目 textdata为省名称
d=importdata('gaodu.txt');
%d=importdata('renkou.txt');
data=d.data; % 海拔高度
textdata=d.textdata; % 相对应的省的名称
%% 定义地图参数
% 针对不同省份,分别设置不同的颜色(FaceColor),由人口数据决定颜色数据
% 定义颜色
k=128;  
mycolormap=summer(k);
% 生成不同区域按大小的颜色,按照人口数目多少分别指定不同的颜色
% 人口越多,颜色越突出
geoname={sheng.NAME}';%省的名字,925个
max_data = max(data);
n=length(data);
mysymbolspec=cell(1,n); % 预定义变量可以加快处理速度
 
%%
%高度和颜色对应起来,然后省份和颜色对应起来,利用归一化排序,定位
for i=1:n
    count=data(i);%高度
    mycoloridx=floor( k * count / max_data );
    mycoloridx(mycoloridx<1)=1;
    myprovince=textdata{i};%省,31个
    geoidx=strmatch(myprovince, geoname);%从925中挑31的位置
    if numel(geoidx) > 0
        province_name=geoname( geoidx(1) );
        mysymbolspec{i} = {'NAME', char(province_name), 'FaceColor', mycolormap( mycoloridx, :) };%省份和颜色对应
    end
end
%% 显示地图
figure
ax=worldmap('china'); % 使用worldmap的坐标轴作图
setm(ax,'grid','off') % 关闭grid
setm(ax,'frame','off') % 关闭边框
setm(ax,'parallellabel','off') % 关闭坐标轴标记,平行线
setm(ax,'meridianlabel','off') % 关闭坐标轴标记,子午线
 
% 最关键的两个语句
symbols=makesymbolspec('Polygon',{'default','FaceColor',[0.9 0.9 0.8],...
    'LineStyle','--','LineWidth',0.2,...
    'EdgeColor',[0.8 0.9 0.9]},...
    mysymbolspec{:}...
    );
geoshow(sheng,'SymbolSpec',symbols); % 此处用mapshow投影会不正确

以下是一个简单的示例,展示如何在MATLAB中显示一个地理数据点图层:

% 创建一个新的世界地图
worldmap('World');
 
% 假设有一组地理数据,包括经度和纬度
longitudes = [103.8 103.8 104.6 104.6]; % 经度数据
latitudes = [3.8 4.6 3.8 4.6]; % 纬度数据
 
% 显示地理数据点
geoshow('vertex', [longitudes' latitudes'], 'DisplayType', 'point');
 
% 设置地图的比例尺和其他属性
axis equal;
outline('Color', 'k');
shading interp;
light;
camlight;

在这个例子中,worldmap函数用于创建一个世界地图,geoshow函数用于显示地理数据点。vertex参数指定了地理数据点的坐标,DisplayType参数设置为'point'表示数据点将以点的形式显示。其他属性如比例尺和颜色设置用于改善地图的视觉效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索Java Stream API:高效处理集合的利器

文章目录 一、Stream API简介1.1 什么是Stream&#xff1f;1.2 Stream的特点 二、Stream API的基本操作2.1 创建Stream2.2 中间操作2.3 终端操作 三、Stream API的高级应用3.1 并行Stream3.2 复杂数据处理3.3 Stream与Optional 四、最佳实践例子 1: 筛选和映射例子 2: 排序和收…

【Linux修行路】进程控制——程序替换

目录 ⛳️推荐 一、单进程版程序替换看现象 二、程序替换的基本原理 三、程序替换接口学习 3.1 替换自己写的可执行程序 3.2 第三个参数 envp 验证 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

Dify 开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问

目录 ⛳️推荐 前言 1. Docker部署Dify 2. 本地访问Dify 3. Ubuntu安装Cpolar 4. 配置公网地址 5. 远程访问 6. 固定Cpolar公网地址 7. 固定地址访问 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享…

Vue3列表(List)

效果如下图&#xff1a;在线预览 APIs List 参数说明类型默认值bordered是否展示边框booleanfalsevertical是否使用竖直样式booleanfalsesplit是否展示分割线booleantruesize列表尺寸‘small’ | ‘middle’ | ‘large’‘middle’loading是否加载中booleanfalsehoverable是否…

mysql写个分区表

因为表量已经达到1个亿了。现在想做个优化&#xff0c;先按照 create_time 时间进行分区吧。 create_time 是varchar类型。 CREATE TABLE orders (id varchar(40) NOT NULL ,order_no VARCHAR(20) NOT NULL,create_time VARCHAR(20) NOT NULL,amount DECIMAL(10,2) NOT NULL,…

Unity如何使用Spine动画导出的动画

Unity如何使用Spine动画导出的动画 介绍使用版本Spine导出源文件修改Spine3.8.75版本导入Unity的3.8版本Spine的报错Unity辅助修改Json中版本号方式总结 介绍 最近公司在做抖音小程序的小游戏&#xff0c;我们这边动画部分使用的是spine动画&#xff0c;所以会有spine导入的问…

IDEA使用LiveTemplate快速生成方法注释

本文目标&#xff1a;开发人员&#xff0c;在了解利用Live Template动态获取方法输入输出参数、创建日期时间方法的条件下&#xff0c;进行自动生成方法注释&#xff0c;达到自动添加方法注释的程度&#xff1b; 文章目录 1 场景2 要点2.1 新增LiveTemplate模版2.2 模版内容填写…

FFMPEG推流器讲解

FFMPEG重要结构体的讲解 FFMPEG中有六个比较重要的结构体&#xff0c;分别是AVFormatContext、AVOutputFormat、 AVStream、AVCodec、AVCodecContext、AVPacket、AVFrame、AVIOContext结构体&#xff0c;这几个结构体是贯穿着整个FFMPEG核心功能。 AVFormatContext 这个结构…

基于web的大学生一体化服务平台的设计与实现

TOC springboot209基于web的大学生一体化服务平台的设计与实现 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人…

1、.Net UI框架:WinUI - .Net宣传系列文章

WinUI(Windows UI Library)是微软提供的一个用于构建Windows应用程序的本机UI平台组件。它与Windows应用SDK紧密相关&#xff0c;允许开发者创建适用于Windows 10及更高版本的应用程序&#xff0c;并且可以发布到Microsoft Store。WinUI 3是最新的一代&#xff0c;它提供了与操…

C# 中 Tuple 与 ValueTuples 之间的区别

在 C# 中&#xff0c;元组和值元组都用于在单个变量中存储多个值。但它们在语法、功能和性能方面存在一些关键差异。 一.Tuples(元组) 元组是一种引用类型&#xff0c;长期以来一直是 .NET 的一部分。它们是使用 System.Tuple 类创建的。 例子 using System; class Program…

养猫家庭必备好物?希喂、霍尼韦尔宠物空气净化器真实测评

随着宠物空气净化器的讨论度越来越高&#xff0c;我也被种草了这款产品。对养宠家庭来说&#xff0c;十分需要这样一款转专门针对宠物毛发清理的工具。准备入手前我在网上做了许多功课&#xff0c;经过一番筛选后&#xff0c;最后希喂、霍尼韦尔两个品牌成功晋级决赛。 在对比…

代理IP为什么不能使用免费代理IP地址?

在跨境业务中&#xff0c;营销人员、广告投手经常利用代理IP防止账号关联与封禁&#xff0c;并且在访问网站时可以隐匿真实 IP 地址&#xff0c;定位目标市场。代理服务器充当中间人掩盖真实的数字足迹&#xff0c;这不仅增强了隐私&#xff0c;也会跨境业务提效提供保障。但是…

基于STM32开发的智能语音助手系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 智能家居控制个人语音助理常见问题及解决方案 常见问题解决方案结论 1. 引言 随着人工智能技术的发展&#xff0c;智能语音助手已经逐渐进入了人们的日常生活。…

【轨物推荐】创新有规律,发明有方法

原创 赵敏 发明方法研究 2020年03月11日 10:38 各位业内朋友&#xff0c;大家好&#xff01; 今年的疫情&#xff0c;对所有的企业都会有冲击&#xff0c;给企业的业务开展带来很多困扰。详细很多企业都在出主意、想办法&#xff0c;设法把疫情造成的损失降到最低。即使在平时…

行业原型:智慧制造:注塑云管工厂

行业原型预览链接&#xff1a;&#xff08;请与班主任联系获取原型文档&#xff09; 文件类型&#xff1a;.rp 支持版本&#xff1a;Axrure RP 8 文档名称&#xff1a;智慧制造&#xff1a;注塑云管工厂 文件大小&#xff1a;1.80 MB 目录内容介绍 文档内容介绍 回复 “211…

均数(mean±SD)与RR/OR值可以合并进行Meta分析吗?

经常有小伙伴问&#xff1a;在做危险因素的Meta分析时&#xff0c;遇到一些文献比较的是病例组和对照组某一指标的均值差异&#xff0c;数据以meanSD形式呈现&#xff0c;而另一些文献则是以OR或RR (95%CI)的形式描述该指标与疾病的关联。这两种数据形式可以一起进行Meta分析吗…

每周心赏|用AI真的可以开挂式求职

马上就要到2024年的金九银十了&#xff0c;正是求职的好时机啊&#xff01; 万事开头难&#xff0c;找工作第一步自然是离不开制作简历了&#xff01; 都说简历是面试的敲门砖&#xff0c;所以大家都很重视。 你不是也曾游走在各大网站中搜寻模板、寻找“大能们”的简历来修…

海运如何实时了解货物的物流轨迹?有什么系统可以实现?

物流轨迹在散货集拼业务中扮演着至关重要的角色&#xff0c;它不仅让客户可以实时掌握货物动态&#xff0c;确保了货物的安全无虞与准时送达&#xff0c;还为企业提供了灵活调整运输策略的依据&#xff0c;有益于运输效率与可靠性的双重提升。同时&#xff0c;通过物流轨迹的即…

RC电路里,电容多久可以充满电

时间常数 τR*C&#xff0c;那么电容需要多久能充满电呢&#xff1f; 例如下图仿真&#xff0c;R1KΩ&#xff0c;C1uF&#xff0c;那么τR*C1ms。 2个时间常数2ms的时间&#xff0c;电容电压充到86% 3个时间常数3ms的时间&#xff0c;电容电压充到95% 通常定义95为充满电。…