爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8008|回复: 16

[程序设计] MATLAB循环读取文件

[复制链接]

新浪微博达人勋

发表于 2020-3-12 13:44:36 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我选择某几个省份 想通过for循环进行读取shp文件,然后是先将地名放到cell里边 然后进行循环读取,但在括号里,一直显示错误?请问大佬们该如何解决 谢谢
M6P~(_3H2@UYE1I1@)1_U69.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-3-12 15:14:59 | 显示全部楼层
sta=p{i}%这里用大括号
infoL=shapeinfo(['chinamap\province\',sta,'.shp']);%字符串可以这样连
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-3-12 16:00:44 | 显示全部楼层
本帖最后由 一夜荒原 于 2020-3-12 16:02 编辑

只能输出第一个省份的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-3-12 16:04:02 | 显示全部楼层
灰色节能君 发表于 2020-3-12 15:14
sta=p{i}%这里用大括号
infoL=shapeinfo(['chinamap\province\',sta,'.shp']);%字符串可以这样连

只能输出第一个省份的
警告: Unsupported shape type PolyLineZ (type code = 13).
> In openShapeFiles>readHeaderTypeCode (line 147)
  In openShapeFiles (line 23)
  In shapeinfo (line 73)
  In NE_China (line 8)
错误使用 openShapeFiles>readHeaderTypeCode (line 145)
Unsupported shape type PolyLineZ (type code = 13).

出错 openShapeFiles (line 23)
headerTypeCode = readHeaderTypeCode(shpFileId,callingFcn);

出错 shaperead (line 210)
    = openShapeFiles(filename,'shaperead');

出错 NE_China (line 9)
    proL=shaperead(['chinamap\province\',p{i},'.shp']);
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-3-12 16:48:25 | 显示全部楼层
灰色节能君 发表于 2020-3-12 15:14
sta=p{i}%这里用大括号
infoL=shapeinfo(['chinamap\province\',sta,'.shp']);%字符串可以这样连

。。。吉林省的文件有问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-3-12 16:53:59 | 显示全部楼层
灰色节能君 发表于 2020-3-12 15:14
sta=p{i}%这里用大括号
infoL=shapeinfo(['chinamap\province\',sta,'.shp']);%字符串可以这样连

我发现一个问题  ,,只要是接壤的省份就读不出来 不接壤的就可以  比如可以读出来 辽宁和黑龙江 。。这是为什么?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-12 17:02:29 | 显示全部楼层
一夜荒原 发表于 2020-3-12 16:53
我发现一个问题  ,,只要是接壤的省份就读不出来 不接壤的就可以  比如可以读出来 辽宁和黑龙江 。。这 ...
不太清楚是什么问题,不过我用mmap画中国省份是这样画的,你参考一下吧
infoL=shapeinfo('D:\matlab123\bin\bou2_4l.shp');
infoP=shapeinfo('D:\matlab123\bin\bou2_4p.shp');
ChinaL=shaperead('D:\matlab123\bin\bou2_4l.shp');
ChinaP=shaperead('D:\matlab123\bin\bou2_4p.shp');
bou2_4lx=[ChinaL(:).X];
bou2_4ly=[ChinaL(:).Y];
bou2_4px=[ChinaP(:).X];
bou2_4py=[ChinaP(:).Y];
m_proj('miller','lon',LONLIMS,'lat',LATLIMS);
m_plot(bou2_4lx,bou2_4ly,'k');
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-3-12 17:13:32 | 显示全部楼层
灰色节能君 发表于 2020-3-12 17:02
不太清楚是什么问题,不过我用mmap画中国省份是这样画的,你参考一下吧
infoL=shapeinfo('D:\matlab123\bi ...

我知道这个 不过我只需要一部分 ,我发现可能是因为我分省的shp文件有问题。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-12 17:54:15 | 显示全部楼层
刚刚看到你在找各省的边界文件,不知道解决了没有,我试了一下,单独画个别省也是可以画的啊
p=cell(1,3);
p{1}='Jiangsu_province';
p{2}='Zhejiang_province';
p{3}='Anhui_Province';
for i=1:3
infoL=shapeinfo(['D:\',p{i},'.shp']);
infoP=shapeinfo(['D:\',p{i},'.shp']);
ChinaL=shaperead(['D:\',p{i},'.shp']);
ChinaP=shaperead(['D:\',p{i},'.shp']);
bou2_4lx=[ChinaL(:).X];
bou2_4ly=[ChinaL(:).Y];
bou2_4px=[ChinaP(:).X];
bou2_4py=[ChinaP(:).Y];
m_plot(bou2_4lx,bou2_4ly,'k');
hold on
end
]]V0{ND3B~3WD[H`W3JWO1I.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-3-12 17:58:43 | 显示全部楼层
灰色节能君 发表于 2020-3-12 17:54
刚刚看到你在找各省的边界文件,不知道解决了没有,我试了一下,单独画个别省也是可以画的啊
p=cell(1,3); ...

没解决 你这个是只用那个bou_l2文件画的吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表