matlab 地图上标经纬度_1.1交通热力图(2)——基于matlab绘制

地理密度图是matlab2018以后才有的工具,对于更早版本,这里提出一种自编程的绘制方法。

A、没有地图衬托的热力图

已知的数据格式为坐标经纬度,数据量大概在200万行。

4259b02f9722310b036d28b34254db67.png
图1:经纬度坐标,向量名gps

基本思路:

确定坐标的角点范围,也就是最大最小值;

确定计算间隔,经纬度的1°约为111km,则d1=1/111代表1km间隔;

利用meshgrid创建采样点;

以采样点为中心,网格为长度为边长,计算落入每一个网格的坐标数量;

利用surf绘制网格曲面

函数如下所示:

%西安建筑科技大学 zuoyoutong
%2020.12.27
%功能:根据坐标密度绘制热力图,返回计算结果
% 输入:gps(lat,lon),d1(经纬度计算精度:1/111为1km),d2(显示精度)
% 输出:[x2,y2,z2],显示结果对应的三维数据
function [x2,y2,z2,boundary]=hot_map(gps,d1,d2)
%gps(gps(:,1)<10,:)=[];%删除空坐标行
boundary=[min(gps);max(gps)];%坐标范围
%d1=1/111*2;%网格间距,1代表111km
%网格坐标
a1=boundary(1,1):d1:boundary(2,1);
a2=boundary(1,2):d1:boundary(2,2);
[x1,y1]=meshgrid(a1,a2);%创建采样点
num1=size(x1);
%计算每个栅格点的范围,并重置为行向量
x11=reshape(x1-d1/2,1,[]);
x12=reshape(x1+d1/2,1,[]);
y11=reshape(y1-d1/2,1,[]);
y12=reshape(y1+d1/2,1,[]);
mm=(gps(:,1)>x11) & (gps(:,1)<=x12) & (gps(:,2)>y11) & (gps(:,2)<=y12);
z1=reshape(sum(mm),num1);
%定义显示精度d2=1/444;
a11=boundary(1,1):d2:boundary(2,1);
a21=boundary(1,2):d2:boundary(2,2);
[x2,y2]=meshgrid(a11,a21);%创建采样点
z2=interp2(x1,y1,z1,x2,y2,'spline');%spline
surf(x2,y2,z2,'FaceAlpha',0.8,'EdgeColor','none');
colorbar;
  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,可以使用`scatter`函数绘制经纬度散点。假设有一组经纬度数据存储在`lon`和`lat`两个向量中,可以按照如下步骤进行绘制: 1. 创建一个新的像窗口: ```matlab figure; ``` 2. 使用`scatter`函数绘制散点,设置`MarkerFaceColor`参数为`'k'`,表示散点的填充颜色为黑色: ```matlab scatter(lon, lat, 'MarkerFaceColor', 'k'); ``` 3. 设置坐轴的签和题: ```matlab xlabel('Longitude'); ylabel('Latitude'); title('Scatter Plot of Longitude and Latitude Data'); ``` 完整的代码如下: ```matlab % 经纬度数据 lon = [121.47 121.47 121.47 121.47 121.47]; lat = [31.23 31.23 31.23 31.23 31.23]; % 绘制散点 figure; scatter(lon, lat, 'MarkerFaceColor', 'k'); % 设置坐签和题 xlabel('Longitude'); ylabel('Latitude'); title('Scatter Plot of Longitude and Latitude Data'); ``` 该代码会绘制出一张黑色的散点,表示上海市五个区的经纬度位置。 如果要绘制汉字签的经纬度散点,可以使用`text`函数在每个散点处添加签。假设有一组汉字签存储在`labels`向量中,可以按照如下步骤进行绘制: 1. 创建一个新的像窗口: ```matlab figure; ``` 2. 使用`scatter`函数绘制散点,设置`MarkerFaceColor`参数为`'k'`,表示散点的填充颜色为黑色: ```matlab scatter(lon, lat, 'MarkerFaceColor', 'k'); ``` 3. 在每个散点处添加签,设置`FontSize`参数为`14`,表示签的字体大小为14: ```matlab text(lon, lat, labels, 'FontSize', 14); ``` 4. 设置坐轴的签和题: ```matlab xlabel('Longitude'); ylabel('Latitude'); title('Scatter Plot of Longitude and Latitude Data with Labels'); ``` 完整的代码如下: ```matlab % 经纬度数据 lon = [121.47 121.47 121.47 121.47 121.47]; lat = [31.23 31.23 31.23 31.23 31.23]; % 签数据 labels = {'黄浦区', '徐汇区', '长宁区', '静安区', '普陀区'}; % 绘制散点 figure; scatter(lon, lat, 'MarkerFaceColor', 'k'); % 添加签 text(lon, lat, labels, 'FontSize', 14); % 设置坐签和题 xlabel('Longitude'); ylabel('Latitude'); title('Scatter Plot of Longitude and Latitude Data with Labels'); ``` 该代码会绘制出一张带有汉字签的经纬度散点,表示上海市五个区的经纬度位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值