城市需求显示在地图上(附MATLAB程序)

发布时间:2024年01月23日

我们显示很多城市信息时,?有时候需要把各地人口数量,?各地城市对某种货物的需求量呈现到地图上,?可以用以下代码实现:

程序结果:

% 画中国地图
clc;close all;clear all;
%%曲面拟合
warning off;%禁止显示警告信息
% load lonlatdata.mat;
lonlatdata=xlsread('工作簿1.xls','D2:F301');%载入xls的数据
x=lonlatdata(:,1);%载入经度
y=lonlatdata(:,2);%载入纬度
z=lonlatdata(:,3);%载入需求
%设置拟合参数
xmin=min(lonlatdata(:,1));
xmax=max(lonlatdata(:,1));
ymin=min(lonlatdata(:,2));
ymax=max(lonlatdata(:,2));
xstep=(xmax-xmin)/100;
ystep=(ymax-ymin)/100;
gx=xmin:xstep:xmax;
gy=ymin:ystep:ymax;
g=gridfit(x,y,z,gx,gy);

%%----------------数据拟合开始--------------------
position01=-100000;%用于调整Z轴比例,绝对值越小,曲面越曲
%%----------------数据拟合结束--------------------
figure;
colormap(hot(256));
mesh(gx,gy,g);
camlight right;
lighting phong;
shading interp
hold on;
map_path = shaperead('bou2_4l.shp');% 省级行政区划
map_X = [map_path(:).X];
map_Y = [map_path(:).Y];
ax=length(map_X);
ay=length(map_Y);
map_Z=ones(ax,1)*(position01);
plot3(map_X,map_Y,map_Z);
hold on;
map_path = shaperead('diquJie_polyline.shp');% 地级行政区划
map_X = [map_path(:).X];
map_Y = [map_path(:).Y];
ax=length(map_X);
ay=length(map_Y);
map_Z=ones(ax,1)*(position01);
plot3(map_X,map_Y,map_Z);
hold on;
%%画城市点
x=lonlatdata(:,1);
y=lonlatdata(:,2);
acity=length(x);
z0=ones(acity,1)*(position01);
plot3(x,y,z0,'r.');
hold on;
%画城市线
for i=1:acity
? ??
? ? ? ? plot3([x(i),x(i)],[y(i),y(i)],[z0(i),z(i)],'r:');
? ? ? ? hold on;
? ??
end
xlabel('经度');
ylabel('纬度');
zlabel('需求(元)');
title('需求拟合');

完整代码见:?https://download.csdn.net/download/corn1949/88774936

需要讨论可加Q1579325979

文章来源:https://blog.csdn.net/corn1949/article/details/135776561
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。