1、MATLAB 画中国地图 转载自 fengyq 转载于 2009 年 08 月 01 日 20:27 阅读(27) 评论(3) 分类:松彥齋 举报 Matlab 是我们常用的一个画图和计算、仿真工具,在我们海洋科研中,经常在画图时需要加上底图(譬如海岸线,国界、省界线等等)。常用的一个工具包是 M_map。但这里我要讲的是利用 matlab 自带的一个画图工具包话底图,这个工具包就是 worldmap. worldmap 的一般用法约为: figure; worldmap(china); polcmap; 或者 figure; worldmap china; polcmap; 如果要加入颜色的
2、画,一般可以这样: figure worldmap(china,patch) scaleruler 这时候问题就出来了。因为鬼子偷偷的讲台湾和大陆用两种颜色表示;甚至,如果你放大图片的画,会发现钓鱼岛也是不同颜色。这个是我们不能忍受的! 于是我就费了一点时间,琢磨这个画图,然后修改。下面是这个脚本程序,在matlab 中执行就可,这时候台湾和钓鱼岛和大陆就是一个颜色了_。 用兴趣的朋友可以把这个用法举一反三((ZHOU Feng)。matlab 版本是 6.5)。 不过老实说,我不太用 matlab 自带的这个画图包,用 M_map 比较多一点。试验一下,感觉还可以用用。 画上述图的代码如下:
3、 % 把台湾和大陆合成一个文件保存起来,这样画图用 patch 就是一种颜色(Zhou Feng, 2008-06-30, SOED, Hangzhou)。 % % by ZHOU Feng % % SOED, 2nd Institute of Oceanography % 2008-06-30 s1 = worldhi(china); s2 = worldhi(taiwan); disp(s1); % add Taiwan together (ZHOU Feng) s = s1; s.lat = s1.lat;NaN; s2.lat; s.long= s1.long; NaN;s2.lon
4、g; % add the Diaoyu Island (钓鱼岛) % 钓鱼岛群岛由钓鱼岛、黄尾岛、赤尾岛、南小岛、北小岛、大南小岛、大北小岛和飞濑岛等岛屿组成,总面积约 7 平方公里。 % 地理位置:东经 123-12434北纬 2540-26。 % % -这里的分辨率只有两块 - s3 = worldhi(japan); %(ZHOU Feng) x = s3.long; y = s3.lat; idx = find(x123.0 if isempty(dtmp) disp(no change) elseif length(dtmp)=1 idnew = id(1:dtmp); id(dtmp+1)-1;id(dtmp+1:end); else for j=1:length(dtmp) idnew = id(1:dtmp(j)+j-1); id(dtmp(j)+1)+j-1; id(dtmp(j)+j+1:end); % 未试验,可能有误 end end longd = x(idnew); latd = y(idnew); s.lat = s.lat; NaN; latd; s.long= s.long; NaN; longd; worldmap china h = displaym(s); polcmap OK!