MATLAB轻松绘制地图路线——已知及未知坐标下的处理方法(2)

at小涛

关注

阅读 54

2022-05-02

11B交通巡警平台地图绘制_精简版

Demo1: 全市6区地图绘制

clc,clear,close all;
load zones_xy_data.mat
load zones_data2.mat

x_1 = [xy_data(:,1),xy_data(:,2),xy_data(:,3)]; %全市交通路口节点标号,x坐标,y坐标
x_2 = [zones_data2(:,1),zones_data2(:,2)]; %全市交通路口的路线
xx = zeros(582,1);
xy = zeros(582,1);
for i=1:582
    xx(i)=x_1(i,2); 
    xy(i)=x_1(i,3);
    %描点
    if x_1(i,1)<=92
        plot(xx(i),xy(i),'.','Color','#6495ED','markersize',20)
        hold on
    elseif 93<=x_1(i,1) && x_1(i,1)<=165
        plot(xx(i),xy(i),'.','Color','#9ACD32','markersize',20)
    elseif 166<=x_1(i,1) && x_1(i,1)<=319
        plot(xx(i),xy(i),'.','Color','#FFD700','markersize',20)
    elseif 320<=x_1(i,1) && x_1(i,1)<=371
        plot(xx(i),xy(i),'.','Color','#B22222','markersize',20)
    elseif 372<=x_1(i,1) && x_1(i,1)<=474
        plot(xx(i),xy(i),'.','Color','#708090','markersize',20)
    else
        plot(xx(i),xy(i),'.','Color','#CD853F','markersize',20)
    end
    text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',6);
    text(300,320,'A','Color','#6495ED','fontsize',25);
    text(170,90, 'B','Color','#9ACD32','fontsize',25);
    text(340,460,'C','Color','#FFD700','fontsize',25);
    text(50,395, 'D','Color','#B22222','fontsize',25);
    text(140,210,'E','Color','#708090','fontsize',25);
    text(370,180,'F','Color','#CD853F','fontsize',25);
end

for j=1:928  %路线连接
    dotx=[xx(x_2(j,1)), xx(x_2(j,2))];
    doty=[xy(x_2(j,1)), xy(x_2(j,2))];
    if x_2(j,1)<=92  %各区按颜色分配
        plot(dotx, doty,'-','Color','#6495ED','Linewidth',1.2)
    elseif 93<=x_2(j,1) && x_2(j,1)<=165
        plot(dotx, doty,'-','Color','#9ACD32','Linewidth',1.2)
    elseif 116<=x_2(j,1) && x_2(j,1)<=319
        plot(dotx, doty,'-','Color','#FFD700','Linewidth',1.2)
    elseif 320<=x_2(j,1) && x_2(j,1)<=371
        plot(dotx, doty,'-','Color','#B22222','Linewidth',1.2)
    elseif 372<=x_2(j,1) && x_2(j,1)<=474
        plot(dotx, doty,'-','Color','#708090','Linewidth',1.2)
    else
        plot(dotx, doty,'-','Color','#CD853F','Linewidth',1.2)
    end 
end

在这里插入图片描述
Demo2: 各区之间交通来往路口绘制(-m色圆点为各区交际路口)

clc,clear,close all;
load zones_xy_data.mat
load zones_data2.mat
load data4

x_1 = [xy_data(:,1),xy_data(:,2),xy_data(:,3)]; %全市交通路口节点标号,x坐标,y坐标
x_2 = [zones_data2(:,1),zones_data2(:,2)]; %全市交通路口的路线
x_2_copy = [zones_data2(:,1),zones_data2(:,2)];

for i = 1:928  %找出封锁路口
    if x_2(i,1)<=92 && x_2(i,2)<=92
        x_2(i,:) = 0;
    elseif x_2(i,1)>92 && x_2(i,1)<=165 && x_2(i,2)>92 && x_2(i,2)<=165
        x_2(i,:) = 0;
    elseif x_2(i,1)>165 && x_2(i,1)<=319 && x_2(i,2)>165 && x_2(i,2)<=319
        x_2(i,:) = 0;    
    elseif x_2(i,1)>319 && x_2(i,1)<=371 && x_2(i,2)>319 && x_2(i,2)<=371
        x_2(i,:) = 0;  
    elseif x_2(i,1)>371 && x_2(i,1)<=474 && x_2(i,2)>371 && x_2(i,2)<=474
        x_2(i,:) = 0;
    elseif x_2(i,1)>474 && x_2(i,1)<=582 && x_2(i,2)>474 && x_2(i,2)<=582
        x_2(i,:) = 0;
    end
end
data2_stripped = x_2(any(x_2'),:);  %剔除全0行

save data2_stripped data2_stripped

xx = zeros(582,1);
xy = zeros(582,1);
for i=1:582
    xx(i)=x_1(i,2); 
    xy(i)=x_1(i,3);
    %描点
    if x_1(i,1)<=92 
        plot(xx(i),xy(i),'.','Color','#6495ED','markersize',20)
        hold on
    elseif 93<=x_1(i,1) && x_1(i,1)<=165
        plot(xx(i),xy(i),'.','Color','#9ACD32','markersize',20)
    elseif 166<=x_1(i,1) && x_1(i,1)<=319
        plot(xx(i),xy(i),'.','Color','#FFD700','markersize',20)
    elseif 320<=x_1(i,1) && x_1(i,1)<=371
        plot(xx(i),xy(i),'.','Color','#B22222','markersize',20)
    elseif 372<=x_1(i,1) && x_1(i,1)<=474
        plot(xx(i),xy(i),'.','Color','#708090','markersize',20)
    else
        plot(xx(i),xy(i),'.','Color','#CD853F','markersize',20)
    end
    if x_1(i,1)<=92 && ismember(i,data2_stripped)  %封锁路口标号
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 93<=x_1(i,1) && x_1(i,1)<=165 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 166<=x_1(i,1) && x_1(i,1)<=319 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 320<=x_1(i,1) && x_1(i,1)<=371 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 372<=x_1(i,1) && x_1(i,1)<=474 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif x_1(i,1)>474 && x_1(i,1)<=582 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    end
    
    text(300,320,'A','Color','#6495ED','fontsize',25);
    text(170,90, 'B','Color','#9ACD32','fontsize',25);
    text(340,460,'C','Color','#FFD700','fontsize',25);
    text(50,395, 'D','Color','#B22222','fontsize',25);
    text(140,210,'E','Color','#708090','fontsize',25);
    text(370,180,'F','Color','#CD853F','fontsize',25);
end

for j=1:928  %路线连接
    dotx=[xx(x_2_copy(j,1)), xx(x_2_copy(j,2))];
    doty=[xy(x_2_copy(j,1)), xy(x_2_copy(j,2))];
    if x_2_copy(j,1)<=92  %各区按颜色分配
        plot(dotx, doty,'-','Color','#6495ED','Linewidth',1.2)
    elseif 93<=x_2_copy(j,1) && x_2_copy(j,1)<=165
        plot(dotx, doty,'-','Color','#9ACD32','Linewidth',1.2)
    elseif 116<=x_2_copy(j,1) && x_2_copy(j,1)<=319
        plot(dotx, doty,'-','Color','#FFD700','Linewidth',1.2)
    elseif 320<=x_2_copy(j,1) && x_2_copy(j,1)<=371
        plot(dotx, doty,'-','Color','#B22222','Linewidth',1.2)
    elseif 372<=x_2_copy(j,1) && x_2_copy(j,1)<=474
        plot(dotx, doty,'-','Color','#708090','Linewidth',1.2)
    else
        plot(dotx, doty,'-','Color','#CD853F','Linewidth',1.2)
    end 
end

for j=1:33  %路线封锁
    dotx=[xx(data2_stripped(j,1)), xx(data2_stripped(j,2))];
    doty=[xy(data2_stripped(j,1)), xy(data2_stripped(j,2))];
    plot(dotx, doty,'--k','Linewidth',1.3) 
end

% for i=1:30  %未封锁出入口
%     if ~ismember(data4(i,1),data2_stripped)
%         disp(data4(i,1))
%     end
% end

在这里插入图片描述

Demo3: 各区交际处与表4出入口绘制(-m色圆点为各区交际路口,带星为表4出入口)

clc,clear,close all;
load zones_xy_data.mat
load zones_data2.mat
load data4

x_1 = [xy_data(:,1),xy_data(:,2),xy_data(:,3)]; %全市交通路口节点标号,x坐标,y坐标
x_2 = [zones_data2(:,1),zones_data2(:,2)]; %全市交通路口的路线
x_2_copy = [zones_data2(:,1),zones_data2(:,2)];

for i = 1:928  %找出封锁路口
    if x_2(i,1)<=92 && x_2(i,2)<=92
        x_2(i,:) = 0;
    elseif x_2(i,1)>92 && x_2(i,1)<=165 && x_2(i,2)>92 && x_2(i,2)<=165
        x_2(i,:) = 0;
    elseif x_2(i,1)>165 && x_2(i,1)<=319 && x_2(i,2)>165 && x_2(i,2)<=319
        x_2(i,:) = 0;    
    elseif x_2(i,1)>319 && x_2(i,1)<=371 && x_2(i,2)>319 && x_2(i,2)<=371
        x_2(i,:) = 0;  
    elseif x_2(i,1)>371 && x_2(i,1)<=474 && x_2(i,2)>371 && x_2(i,2)<=474
        x_2(i,:) = 0;
    elseif x_2(i,1)>474 && x_2(i,1)<=582 && x_2(i,2)>474 && x_2(i,2)<=582
        x_2(i,:) = 0;
    end
end
data2_stripped = x_2(any(x_2'),:);  %剔除全0行

save data2_stripped data2_stripped

xx = zeros(582,1);
xy = zeros(582,1);
for i=1:582
    xx(i)=x_1(i,2); 
    xy(i)=x_1(i,3);
    %描点
    if x_1(i,1)<=92 
        plot(xx(i),xy(i),'.','Color','#6495ED','markersize',20)
        hold on
    elseif 93<=x_1(i,1) && x_1(i,1)<=165
        plot(xx(i),xy(i),'.','Color','#9ACD32','markersize',20)
    elseif 166<=x_1(i,1) && x_1(i,1)<=319
        plot(xx(i),xy(i),'.','Color','#FFD700','markersize',20)
    elseif 320<=x_1(i,1) && x_1(i,1)<=371
        plot(xx(i),xy(i),'.','Color','#B22222','markersize',20)
    elseif 372<=x_1(i,1) && x_1(i,1)<=474
        plot(xx(i),xy(i),'.','Color','#708090','markersize',20)
    else
        plot(xx(i),xy(i),'.','Color','#CD853F','markersize',20)
    end
    if x_1(i,1)<=92 && ismember(i,data2_stripped)  %封锁路口标号
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 93<=x_1(i,1) && x_1(i,1)<=165 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 166<=x_1(i,1) && x_1(i,1)<=319 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 320<=x_1(i,1) && x_1(i,1)<=371 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif 372<=x_1(i,1) && x_1(i,1)<=474 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    elseif x_1(i,1)>474 && x_1(i,1)<=582 && ismember(i,data2_stripped)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'.m','markersize',25)
    end
    if x_1(i,1)<=92 && ismember(i,data4)  %全市出入口标号
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'*m','markersize',15)
    elseif 93<=x_1(i,1) && x_1(i,1)<=165 && ismember(i,data4)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'*m','markersize',15)
    elseif 166<=x_1(i,1) && x_1(i,1)<=319 && ismember(i,data4)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'*m','markersize',15)
    elseif 320<=x_1(i,1) && x_1(i,1)<=371 && ismember(i,data4)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'*m','markersize',15)
    elseif 372<=x_1(i,1) && x_1(i,1)<=474 && ismember(i,data4)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'*m','markersize',15)
    elseif x_1(i,1)>474 && x_1(i,1)<=582 && ismember(i,data4)
        text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',8);
        plot(xx(i),xy(i),'*m','markersize',15)
    end
    text(300,320,'A','Color','#6495ED','fontsize',25);
    text(170,90, 'B','Color','#9ACD32','fontsize',25);
    text(340,460,'C','Color','#FFD700','fontsize',25);
    text(50,395, 'D','Color','#B22222','fontsize',25);
    text(140,210,'E','Color','#708090','fontsize',25);
    text(370,180,'F','Color','#CD853F','fontsize',25);
end

for j=1:928  %路线连接
    dotx=[xx(x_2_copy(j,1)), xx(x_2_copy(j,2))];
    doty=[xy(x_2_copy(j,1)), xy(x_2_copy(j,2))];
    if x_2_copy(j,1)<=92  %各区按颜色分配
        plot(dotx, doty,'-','Color','#6495ED','Linewidth',1.2)
    elseif 93<=x_2_copy(j,1) && x_2_copy(j,1)<=165
        plot(dotx, doty,'-','Color','#9ACD32','Linewidth',1.2)
    elseif 116<=x_2_copy(j,1) && x_2_copy(j,1)<=319
        plot(dotx, doty,'-','Color','#FFD700','Linewidth',1.2)
    elseif 320<=x_2_copy(j,1) && x_2_copy(j,1)<=371
        plot(dotx, doty,'-','Color','#B22222','Linewidth',1.2)
    elseif 372<=x_2_copy(j,1) && x_2_copy(j,1)<=474
        plot(dotx, doty,'-','Color','#708090','Linewidth',1.2)
    else
        plot(dotx, doty,'-','Color','#CD853F','Linewidth',1.2)
    end 
end

for j=1:33  %路线封锁
    dotx=[xx(data2_stripped(j,1)), xx(data2_stripped(j,2))];
    doty=[xy(data2_stripped(j,1)), xy(data2_stripped(j,2))];
    plot(dotx, doty,'--k','Linewidth',1.3) 
end

% for i=1:30  %未封锁出入口
%     if ~ismember(data4(i,1),data2_stripped)
%         disp(data4(i,1))
%     end
% end

在这里插入图片描述
Demo4: A区站点+出入口

clc,clear,close all
load zones_xy_data.mat
load data2_stripped.mat  %第一问封锁路口标号
load data2_A.mat
load data4_A.mat

x_1 = [xy_data(:,1),xy_data(:,2),xy_data(:,3)]; %全市交通路口节点标号,x坐标,y坐标
x_2 = [data2_A(:,1),data2_A(:,2)]; %A区交通路口的路线
x_3 = data4_A(:,1);  %A区出入口
xx = zeros(582,1);
xy = zeros(582,1);
for i=1:92
    xx(i)=x_1(i,2); 
    xy(i)=x_1(i,3);
    %描点
    hold on
    if i<=20  %A区防疫点
        plot(xx(i),xy(i),'^m','markerface','g','markersize',20)
        if ismember(i,x_3)
            plot(xx(i),xy(i),'.r','markerface','r','markersize',23) %A区出入口
        end    
    elseif ismember(i,x_3)  %A区出入口
        plot(xx(i),xy(i),'.r','markerface','r','markersize',23)
    else
        plot(xx(i),xy(i),'.','Color','#6495ED','markersize',20)
    end
    text(xx(i),xy(i),num2str(x_1(i,1)),'color',[0 0 0],'fontsize',10);
    text(300,320,'A','Color','#6495ED','fontsize',25);
end

for j=1:length(data2_A(:,1))  %路线连接
    dotx=[xx(x_2(j,1)), xx(x_2(j,2))];
    doty=[xy(x_2(j,1)), xy(x_2(j,2))];
    plot(dotx, doty,'-','Color','#6495ED','Linewidth',1.2)
end

在这里插入图片描述

精彩评论(0)

0 0 举报