1、全代碼
function varargout = getxy(varargin)
%% 此函數用來搞定畫地圖時,經緯度坐標注釋
% 輸入:
% XArray:經度數組
% YArray:緯度數組
% d: 顯示幾個數
% 輸出:
% x: 經度數組,數字
% x1: 經度數組,字符
% y: 緯度數組,數字
% y1: 緯度數組,字符
% ex: 經緯度極值:經大小,緯大小
% 使用示例:
% [x,x1,y,y1]=getxy(XArray,YArray,d);
% [x,x1,y,y1]=getxy(XArray,YArray);
% [x,x1,y,y1,ex]=getxy(XArray,YArray);
% XArray,YArray 東正西負,北正南負
%-------------------------------------------------------------------
%%%% Authors: Bill O'Hanlon
%%%% EMAIL: ohanlon@qq.com
%%%% DATE: 24-08-2020
%% 輸入判斷
if nargin==2
XArray=varargin{1};
YArray=varargin{2};
d=5;
elseif nargin==3
XArray=varargin{1};
YArray=varargin{2};
d=varargin{3};
else
disp('輸入參數過多或過少');
return;
end
%% 求極值,並划分
Xmax=max(XArray);
Xmin=min(XArray);
Ymax=max(YArray);
Ymin=min(YArray);
extreme=zeros(4,1); %極值數組,存放極大極小值
Xmax=ceil(Xmax);
Ymax=ceil(Ymax);
Xmin=floor(Xmin);
Ymin=floor(Ymin);
extreme(1)=Xmax;
extreme(2)=Ymax;
extreme(3)=Xmin;
extreme(4)=Ymin;
detX=Xmax-Xmin;
detY=Ymax-Ymin;
dX=ceil(detX/d);
dY=ceil(detY/d);
x=Xmin+dX:dX:Xmax;
y=Ymin+dY:dY:Ymax;
%% 將划分好的轉化為字符,並加°和S/N/W/E
x1=sprintfc('%g',x);%轉成字符串數組
y1=sprintfc('%g',y);%轉成字符串數組
n1=size(x1,2);n2=size(y1,2);
for i=1:n1
if x(i)>=0
x1{1,i}=[x1{1,i},'°E'];
else
x1{1,i}=x1{1,i}(2:end);
x1{1,i}=[x1{1,i},'°W'];
end
end
for i=1:n2
if y(i)>=0
y1{1,i}=[y1{1,i},'°N'];
else
y1{1,i}=y1{1,i}(2:end);
y1{1,i}=[y1{1,i},'°S'];
end
end
varargout{1}=x;
varargout{2}=x1;
varargout{3}=y;
varargout{4}=y1;
if nargout==5
varargout{5}=extreme;
end
end
2、調用
subplot(121);
% 下面搞定橫縱坐標注釋
XArray=[P2(:).X];%所有多邊形的經度
YArray=[P2(:).Y];%%所有多邊形的緯度
[x,x1,y,y1]=getxy(XArray,YArray);
disp('drawing...');
mapshow(P2,'FaceColor','w');
mapshow(sheng,'FaceColor','r');
set(gca,'XTick',x,'XTicklabel',x1); %設置x,y軸
set(gca,'YTick',y,'YTicklabel',y1);
box on;
title([str '的位置']);
axis equal
subplot(122);
% 下面搞定橫縱坐標注釋
XArray=[sheng(:).X];%所有多邊形的經度
YArray=[sheng(:).Y];%%所有多邊形的緯度
[x,x1,y,y1,ex]=getxy(XArray,YArray);
mapshow(sheng,'FaceColor','r');
set(gca,'XTick',x,'XTicklabel',x1); %設置x,y軸
set(gca,'YTick',y,'YTicklabel',y1);
box on;
title([str '行政規划圖']);
axis equal
結果:


