爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 28507|回复: 25

[讨论] matlab绘制同潮图,画得惨不忍睹,请指点如何修正

[复制链接]

新浪微博达人勋

发表于 2013-12-11 18:47:44 | 显示全部楼层 |阅读模式

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

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

x
       第一次用matlab画海洋图,底下是我画的渤海的K1和M2同潮图,且不论我振幅和迟角数据是否有错(虽然确实有错),我来说一下这个图的一些问题,希望找到好心人教我改改图。
K1同潮图.jpg M2同潮图.jpg
        问题1:等迟角线,在0度和360度附近特别密集,这个要怎么处理?
        问题2:我的岸线想用m_map里面的gshhs_f岸线数据,但是程序一直提示这样的错误:
Warning: Coastline file private/gshhs_f.b not found
(Have you installed it? See the M_Map User's Guide for details)
---Using default coastline instead
> In m_map\private\mu_coast>get_coasts at 427
  In m_map\private\mu_coast at 96
  In m_gshhs_f at 35
  In draw_H_g_ele at 36

gshhs数据存放位置

gshhs数据存放位置

        这是我的gshhs数据存储的位置,不理解为什么还会报错没有找到gshhs数据文件,难道是我存放的位置有错么?我这里的岸线还是另外导入的数据画得,所以可以看到岸线特别花,但是如果不用这个额外导入的岸线数据,整个图只剩下等振幅线,我也不知道这是为什么
        问题3:我的振幅和迟角数据的经度是2分的,画出来的曲线毛刺比较多,看K1分潮的红色等迟角线就特别明显,怎样能让曲线光滑一些?
        我把画图的程序贴出来,请大家帮我看看哪里有问题,指点指点我!
load hg_cal_H.mat
load hg_cal_g.mat
load bs_coast.dat  %导入渤海岸线数据,数据来源是根据这个帖子找到的http://bbs.06climate.com/forum.php?mod=viewthread&tid=10281

m_proj('miller','lon',[117.5,122.15],'lat',[37,41]);
m_gshhs_f('patch',[.5,.5,.5]);
m_grid('linest','none','box','on');
hold on
m_plot(bs_coast(:,1),bs_coast(:,2),'k','linewidth',1.5); %绘制渤海岸线

[c1,h1] = m_contour(lon,lat,flipud(H(:,:,i)),0:10:150,'k','linestyle','-');
clabel(c1,h1,'rotation',0,'linewidth',1);
[c2,h2] = m_contour(lon,lat,flipud(g(:,:,i)),0:30:360,'r');
clabel(c2,h2,'rotation',0,'linewidth',1,'color','r');
title('M2同潮图']);



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 20:13:38 | 显示全部楼层

检查一下你数据计算的范围有没有问题。应该不会出现这个问题的。
参照一下下面的程序:
% 画f=0同潮图
clear all;
zeta=importdata('zeta.dat');
sigma=importdata('sigma.dat');
zeta(zeta==0)=NaN;
sigma1=sigma;
sigma2=sigma;
sigma3=sigma;
sigma1(sigma1==0)=NaN;
sigma2(sigma2==0)=NaN;
sigma3(sigma3==0)=NaN;
sigma1(sigma1<180 & sigma1>0)=NaN;

lon=linspace(120,127,43);
lat=linspace(50,40,61);

m_proj('miller','lon',[120 127],'lat',[40 50]);
m_grid('linestyle','none');
hold on
[c h]=m_contour(lon,lat,zeta,0:0.1:max(max(zeta)),'--k');
clabel(c,h,'labelspacing',200);

m_contour(lon,lat,sigma1,210:30:330);


sigma2(sigma2<360 & sigma2>190)=NaN;
m_contour(lon,lat,sigma2,30:30:180);


% 画零线
sigma3(sigma3<270 & sigma3>90)=NaN;
a=find(sigma3>180);
b=sigma3(a)-360;
sigma3(a)=b;
m_contour(lon,lat,sigma3,[0 0]);

title('f=0');

print -dpng -r300 tide.png
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2013-12-11 19:11:03 | 显示全部楼层
首先是岸线问题:你都用了bs_coast,就不用gshhs数据了吧,也可以不用填充陆地啊。
第二,迟角加密的原因是0 和 360是一样的,但matlab是不认的,它会在0~360之间插值,所以才会有这么大的梯度。方法就是分开画,总之要在0和360之间截开画。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-12-11 19:37:25 | 显示全部楼层
Aires 发表于 2013-12-11 19:11
首先是岸线问题:你都用了bs_coast,就不用gshhs数据了吧,也可以不用填充陆地啊。
第二,迟角加密的原因是 ...

嗯,不用gshhs数据也是个方法,用bs_coast时也有一个问题,发现等值线不是在海域范围内,部分等值线越过岸线,画在了陆地部分,这会是什么导致的?迟角等直线在0和360之间要怎样截开画,能不能再具体讲一讲,虽然理解,但是画图时还是有点迷糊,不知道要怎么下手改程序
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-12-11 20:48:41 | 显示全部楼层
Aires 发表于 2013-12-11 20:13
检查一下你数据计算的范围有没有问题。应该不会出现这个问题的。
参照一下下面的程序:
% 画f=0同潮图
...

原来画个等振幅线都会这么麻烦,领教了,非常感谢。能不能再问一个问题,在画等振幅线的时候,振幅是从0,到150cm(参看语句:[c1,h1] = m_contour(lon,lat,flipud(H(:,:,i)),0:10:150,'k','linestyle','-');),结果是画出来的图把0线也画出来,0线基本是绕着岸线分布,这个0线要怎么处理会比较好一些?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 22:31:15 | 显示全部楼层
danluo1001 发表于 2013-12-11 20:48
原来画个等振幅线都会这么麻烦,领教了,非常感谢。能不能再问一个问题,在画等振幅线的时候,振幅是从0, ...

你不画0线不可以么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 22:32:25 | 显示全部楼层
danluo1001 发表于 2013-12-11 20:48
原来画个等振幅线都会这么麻烦,领教了,非常感谢。能不能再问一个问题,在画等振幅线的时候,振幅是从0, ...

参照这个帖子:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=14902
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 23:06:20 | 显示全部楼层
我是来拿钱的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-12-12 13:58:11 | 显示全部楼层
Aires 发表于 2013-12-11 22:31
你不画0线不可以么

确实没必要画,从10开始画就可以了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-13 17:28:41 | 显示全部楼层
后来图出来了吗?贴出来参考参考哦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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