zoukankan      html  css  js  c++  java
  • Matlab 画地图时搞定经纬度注释 函数

    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
    

    结果:

  • 相关阅读:
    MyBatis-Plus使用(4)-集成SpringBoot
    MyBatis-Plus使用(3)-条件构造器
    Logback日志格式优化,解决输出***@2b193f2d问题
    MyBatis-Plus使用(2)-CRUD接口
    数组
    switch结构
    if的使用
    new函数
    指针
    常量和iota
  • 原文地址:https://www.cnblogs.com/Gou-Hailong/p/13559123.html
Copyright © 2011-2022 走看看