• 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
    

    结果:

  • 相关阅读:
    Flask:flask-script;多app应用;wtforms
    Flask:Locla;偏函数;请求上下文;蓝图;g对象;信号;flask-session
    Flask:闪现; 请求扩展;自定义中间件
    Flask:cookie和session
    Flask:请求与响应
    Flask:重定向;模板语法,
    Flask:路由系统;CBV的代码案例
    软件质量模型
    Selenium with Python 002
    Selenium with Python 001
  • 原文地址:https://www.cnblogs.com/Gou-Hailong/p/13559123.html
Copyright © 2020-2023  润新知