• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab 从全国 shp 中扣出某一省份的shp并画图 函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、全代码

function varargout=drawsheng(varargin)
%% 此函数用于从全国 shp 中扣出某一省份的 shp 并画图
% 输入:
%   file    shp文件路径
%   str     要扣的东西的名字
%   1 or 0  省1国家0,默省
% 输出:
%   sheng   搞出来的 shp 结构体
%   ex      经纬极值,后续用sheng 画图,有可能会用
% 调用:
%   P2file=\'D:\下载\Useful\shp\国家基础地理数据\bou2_4m\bou2_4p.shp\';%省界多边形
%   str=\'河南省\';
%   [sheng,ex]=drawsheng(P2file,str);
%    -------------------
%   Sjfile=\'D:\下载\Useful\shp\国家基础地理数据\世界国家\世界国家.shp\';%国界
%   str=\'中国\';
%   [sheng,ex]=drawsheng(file,str,1);
%    -------------------
%   drawsheng(file,str);
%   sheng=drawsheng(file,str);
%   [sheng]=drawsheng(file,str);
%   [sheng,ex]=drawsheng(file,str,1 or 0);  %省1国家0
%-------------------------------------------------------------------
    %%%%    Authors:   Bill O\'Hanlon
    %%%%    EMAIL:     [email protected]
    %%%%    DATE:      24-08-2020
%% 输入
disp(\'--------function drawsheng--------\');
mode=1;%mode指示裁剪省或国家,省1国家0
t=0;   %t指示是否是第一次找到目标结构
if nargin<2
    disp(\'参数不足!\');
    return;
elseif nargin==2
    file=varargin{1};
    str=varargin{2};
elseif nargin==3
    file=varargin{1};
    str=varargin{2};
    mode=varargin{3};
else
    disp(\'参数过多!\');
    return;
end
P2=shaperead(file);
n=size(P2,1);
%% 得到省的结构体
sheng=struct;
if mode==1
    for i=1:n
        if strcmp(str,P2(i).NAME)
            if t==0
                sheng=P2(i);%找到第一个多边形
                t=1;
            else
                a=P2(i);
                sheng(end+(1:length(a))) = a;
            end
        end
    end
else if mode==0
        for i=1:n
            if strcmp(str,P2(i).FCNAME)
                if t==0
                    sheng=P2(i);%找到第一个多边形
                    t=1;
                else
                    a=P2(i);
                    sheng(end+(1:length(a))) = a;
                end
            end
        end
    else
        disp(\'第三个参数错误!\');
        return;
    end
end
disp(\'shp OK!\');
%% 开始画图
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
%% 输出
if nargout==0
    return;
elseif nargout==1
    varargout{1}=sheng;
elseif nargout==2
    varargout{1}=sheng;
    varargout{2}=ex;
end
disp(\'--------Finished!--------\');
end

依赖:

https://www.cnblogs.com/Gou-Hailong/p/13559123.html

2、调用

P2file=\'D:\下载\Useful\shp\国家基础地理数据\bou2_4m\bou2_4p.shp\';%省界多边形
str=\'北京市\';
[sheng,ex]=drawsheng(P2file,str);


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在matlab中进行地理坐标和像素坐标的相互转换发布时间:2022-07-18
下一篇:
MATLAB——文件读写(2)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap