1.调用geoshow画出的经纬度图片
图片说明:该图片是为了说明某公司的工厂建设地址分布图,并且不同州的颜色深度根据人口密度大小确定,可知人口密度大的所建的工厂工程较多,其中红色为已经建成并且投入了使用的工厂位置,绿色为正在修建的工厂位置。该图的做法:①首先通过该公司网站获取了在建和已建工厂的经纬度;②将数据导入2中的代码生成图片。
2.相关代码
代码说明:在Matlab中运行,并且将3中的数据表保存至运行相同路径的目录中。
%% 初始化环境
clc
clear
close all
landcolor = [0.98 0.97 0.97];
lakescolor = [0.71 0.84 0.92];
%% 从经纬度出发
rest = xlsread('map.xlsx');
[m,n] = size(rest);
limit = [26 48 -130 -60];
res = []; %获得各种的经纬度的信息
%% 将含有经纬度的数据点画在地图上
for i = 1:m
if rest(i, 1) > limit(1) && rest(i, 1) < limit(2) && rest(i, 2) > limit(3) && rest(i, 2) < limit(4)
res = [res; rest(i, :)];
end
end
mcolor = [249 222 239; 255 86 0; 236 165 201; 47 70 150];
mcolor = mcolor ./255;
%用不同的颜色的点标记不同属性的地址
for i = 1:size(res, 1)
greenpoint(i).Geometry = 'Point';
redpoint(i).Geometry = 'Point';
if res(i, 3) == 0 %0表示绿点,即在建工程
greenpoint(i).Lon = res(i, 2);
greenpoint(i).Lat = res(i, 1);
greenpoint(i).Name = '';
end
if res(i, 3) == 1 %1表示红点,即已建工程
redpoint(i).Lon = res(i, 2);
redpoint(i).Lat = res(i, 1);
redpoint(i).Name = '';
end
end
%% 开始绘图
figure
%画出地图的经纬度范围
ax = worldmap('World');
ax = worldmap([25, 55], [230, 300]);
%画出美国大陆地图
land = shaperead('landareas', 'UseGeoCoords', true);
geoshow(ax, land, 'FaceColor', landcolor)
%画出美国湖泊地图
lakes = shaperead('worldlakes', 'UseGeoCoords', true);
geoshow(lakes, 'FaceColor', lakescolor)
%画出美国各个州,根据人口密度确定不同颜色
states = shaperead('usastatelo', 'UseGeoCoords', true);
scolor = [];
for i = 1:size(states, 1)
if states(i).PopDens2000