已有数据:中国边境线经纬度。
绘图思路:截取想要显示的小地图数据(例如经度东经106-123,纬度北纬24度以下),整体缩放小地图数据,然后再将截取的经度值和纬度值进行整体增大,使得地图整体对齐。代码如下:
clc;clear all;
%% 读取数据
% 边境线
load("datachina.mat");
xx1_base = datachina(:,1);
yy1_base = datachina(:,2);
zz1_base = repmat(ceng1,length(xx1_base),1);
zz2_base = repmat(ceng2,length(xx1_base),1);
zz3_base = repmat(ceng3,length(xx1_base),1);
ss1_base = repmat(5,length(xx1_base),1);
% 九段线
yymin1_base = yy1_base(yy1_base<24 & xx1_base<123 & xx1_base>106);
xxmin1_base = xx1_base(yy1_base<24 & xx1_base<123 & xx1_base>106);
% 对九段线的比例图进行缩放
yymin1_base = yymin1_base.*0.5;
xxmin1_base = xxmin1_base.*0.5;
yymin1_base = 15-min(yymin1_base)+yymin1_base;
xxmin1_base = 135-max(xxmin1_base)+xxmin1_base;
zzmin1_base = repmat(ceng1,length(xxmin1_base),1);
zzmin2_base = repmat(ceng2,length(xxmin1_base),1);
zzmin3_base = repmat(ceng3,length(xxmin1_base),1);
ssmin1_base = repmat(5,length(xxmin1_base),1);
% 对九段线图进行填白
xnine = [126.74 136;126.74 136];
ynine = [14 14 ;25.3 25.3];
znine1 = repmat(ceng1,length(xnine),length(ynine));
znine2 = repmat(ceng2,length(xnine),length(ynine));
znine3 = repmat(ceng3,length(xnine),length(ynine));
cnine = [1 1;1 1];
%% 绘图
% 绘制边境线
scatter3(xx1_base,yy1_base,zz1_base,ss1_base,'filled','k');
hold on
% 绘制九段线
scatter3(xxmin1_base,yymin1_base,zzmin1_base,ssmin1_base,'filled','k');
hold on
xlabel('经度');
ylabel('纬度');
axis([69 136 14 56]);