登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
M_Map:映射方案Matlab
你收集了数据,加载它Matlab,分析了一切,现在你想要一个简单的地图如何与世界。 但是你不能。 相反,你必须找出如何保存所有数据,然后读到另一个程序(例如,格林尼治时间),然后花额外的时间找出为什么它不给你预期会……或者你可以投资于Matlab工具箱的映射(同样陡峭的学习曲线)……不信!
宣布M_Map v1.4h !(2014年9月/更新) M_Map是一组映射工具Matlab v5和后写的。这些包括:- 例程在19个不同的球形预测项目数据(和确定的逆映射)
- 网格生成程序,使好轴与限制在纬度/经度条款或平面X / Y。
- 海岸线数据库(1/4度分辨率)
- 全球高程数据库(1度分辨率)
- 钩到免费提供高分辨率的海岸线和深度测量法数据库
新版本1.4 h
- ETOPO2v2和ETOPO1支持。
- 处理一些关于BITMAX警告出现在Matlab 2014 b。注意——我只能修复或解决方案中的一些非常糟糕的错误2014 b。小心使用(或更好的是不使用)。EPS输出特别是真的很糟糕,即使屏幕图看起来是“好”。幸运的是mathworks“可能会考虑在将来的版本中解决这个”。
- 添加选项输出只有在国家+国家或国家边界 m_gshhs.
新版本1.4 g
- m_ellipse。潮汐省略号(说,从m阴谋T_Tide )
- 选择使用十进制度或度/十进制分网格轴标签
- Matlab 2013 b有一个糟糕的错误dataaspectratio轴属性影响几乎所有的图形。这个版本的M_Map有一个变通方法,主要作品,但是最好避免使用2013 b。
新版本1.4 f
- m_shaperead。我读shapefile !(所以自然地球可用于政治界限而不是起重集团其他机会)
- gshhs版本2的支持
- 部分八度兼容性
新版本1.4 e
- GSHHS现在有WDB河流和边界数据库,通过m_gshhs.m和链接已经添加
- 包括椭圆形阿尔伯斯和兰伯特圆锥投影
新版本1.4 d
- 修改工作在bug matlab7 contourf
- 罗宾逊投影
- 一些与当前matlab版本兼容性问题
- 升级钩到一些数据库。
新版本1.4 b
- m_hatch孵化和斑点补丁
- 老式的斑点海岸线(适合黑白照片示例13).
- 大圆m_lldist现在也返回点测地线。
- m_fdist、m_idist m_geodesic椭圆地球上测地线。
新的1.4版本的
- m_pcolor
- m_coord(允许地理和地磁坐标系)
- 为数不多的小bug修复。
- 一些提示和示例的卫星图像数据添加到你的地图。
如何让M_Map你可以下载M_Map工具箱gzip tar文件,或者zip归档(点击这些链接下载)。如果你解压zip文件确保你也打开子目录!都是在650 k大小。一旦你有存档,阅读开始部分的用户指南正确安装这个工具箱,部分9和10.1分别安装TerrainBase和GSHHS。大量的例子被强调的各种功能M_Map(缩略图如上所示)。 你也可以m_namebox(一组实用程序来自动将名称添加到您的地图),通过它的主页http://www.nersc.no/ ~甚至/。 用户指南- 开始
- 指定的预测
- 方位的预测
- 圆柱和变形的预测
- 二次曲线预测
- 杂项全球预测
- 是的,但我应该使用投影?
- 地图范围
- 地图坐标系统地理和地磁
- 海岸线和深度测量法
- 定制轴
- 网格线和标签
- 标题和x / ylabels
- 传说的盒子
- 规模的酒吧
- 添加您自己的数据
- 画线条、文字、箭头,补丁,舱口,斑点和轮廓
- 绘制图像和p_color
- 画tracklines
- 图纸范围环和测地线
- 将经度/纬度转换为投影坐标
- 将投影坐标转换为经度/纬度
- 计算点之间的距离
- 更复杂的情节
- 从一块删除数据
- 添加你自己的海岸线
- 起重集团政治界限
- ESRI shapefile地球和自然政治界限
- 添加你自己的地形/深度测量法
- 使用TerrainBase 5分钟或ETOPO 2 - 1分钟的全球海洋测深学/地形
- 使用GSHHS高分辨率海岸线数据库
- M_Map工具箱内容和描述
- 已知问题和错误
- 八度兼容性问题
- 改变自去年发布
信息、帮助、建议或bug报告,接触丰富Pawlowicz , (rich@eos.ubc.ca )
确认许多人帮助和建议,代码修复,等等。我尤其感激所做的功e .解雇d·伯恩·m·曼j .普林格尔和j . e .流行病学所有贡献代码。
例子1。M_Map标志m_proj('ortho','lat',48','long',-123');
m_coast('patch','r');
m_grid('linest','-','xticklabels',[],'yticklabels',[]);
patch(.55*[-1 1 1 -1],.25*[-1 -1 1 1]-.55,'w');
text(0,-.55,'M\_Map','fontsize',25,'color','b',...
'vertical','middle','horizontal','center');
set(gcf,'units','inches','position',[2 2 3 3]);
set(gcf,'paperposition',[3 3 3 3]);2。兰伯特正形圆锥投影的北美地形m_proj('lambert','long',[-160 -40],'lat',[30 80]);
m_coast('patch',[1 .85 .7]);
m_elev('contourf',[500:500:6000]);
m_grid('box','fancy','tickdir','in');
colormap(flipud(copper));3所示。极射赤面投影的北极地区% Note that coastline is drawn OVER the grid because of the order in which
% the two routines are called
m_proj('stereographic','lat',90,'long',30,'radius',25);
m_elev('contour',[-3500:1000:-500],'edgecolor','b');
m_grid('xtick',12,'tickdir','out','ytick',[70 80],'linest','-');
m_coast('patch',[.7 .7 .7],'edgecolor','r');4所示。两个中断预测世界上的海洋subplot(211);
Slongs=[-100 0;-75 25;-5 45; 25 145;45 100;145 295;100 290];
Slats= [ 8 80;-80 8; 8 80;-80 8; 8 80;-80 0; 0 80];
for l=1:7,
m_proj('sinusoidal','long',Slongs(l,:),'lat',Slats(l,:));
m_grid('fontsize',6,'xticklabels',[],'xtick',[-180:30:360],...
'ytick',[-80:20:80],'yticklabels',[],'linest','-','color',[.9 .9 .9]);
m_coast('patch','g');
end;
xlabel('Interrupted Sinusoidal Projection of World Oceans');
% In order to see all the maps we must undo the axis limits set by m_grid calls:
set(gca,'xlimmode','auto','ylimmode','auto');
subplot(212);
Slongs=[-100 43;-75 20; 20 145;43 100;145 295;100 295];
Slats= [ 0 90;-90 0;-90 0; 0 90;-90 0; 0 90];
for l=1:6,
m_proj('mollweide','long',Slongs(l,:),'lat',Slats(l,:));
m_grid('fontsize',6,'xticklabels',[],'xtick',[-180:30:360],...
'ytick',[-80:20:80],'yticklabels',[],'linest','-','color','k');
m_coast('patch',[.6 .6 .6]);
end;
xlabel('Interrupted Mollweide Projection of World Oceans');
set(gca,'xlimmode','auto','ylimmode','auto');5。斜轴墨卡托投影颤抖和轮廓数据%% Nice looking data
[lon,lat]=meshgrid([-136:2:-114],[36:2:54]);
u=sin(lat/6);
v=sin(lon/6);
m_proj('oblique','lat',[56 30],'lon',[-132 -120],'aspect',.8);
subplot(121);
m_coast('patch',[.9 .9 .9],'edgecolor','none');
m_grid('tickdir','out','yaxislocation','right',...
'xaxislocation','top','xlabeldir','end','ticklen',.02);
hold on;
m_quiver(lon,lat,u,v);
xlabel('Simulated surface winds');
subplot(122);
m_coast('patch',[.9 .9 .9],'edgecolor','none');
m_grid('tickdir','out','yticklabels',[],...
'xticklabels',[],'linestyle','none','ticklen',.02);
hold on;
[cs,h]=m_contour(lon,lat,sqrt(u.*u+v.*v));
clabel(cs,h,'fontsize',8);
xlabel('Simulated something else');6。米勒和大圆投影% Plot a circular orbit
lon=[-180:180];
lat=atan(tan(60*pi/180)*cos((lon-30)*pi/180))*180/pi;
m_proj('miller','lat',82);
m_coast('color',[0 .6 0]);
m_line(lon,lat,'linewi',3,'color','r');
m_grid('linestyle','none','box','fancy','tickdir','out');7所示。兰伯特正形投影西地中海的高分辨率深度测量法m_proj('lambert','lon',[-10 20],'lat',[33 48]);
m_tbase('contourf');
m_grid('linestyle','none','tickdir','out','linewidth',3);8。演示的向量m_vec % See code in m_vec.m for details9。放大爱德华王子岛来显示不同的海岸线的决议% Example showing the default coastline and all of the different resolutions
% of GSHHS coastlines as we zoom in on a section of Prince Edward Island.
clf
axes('position',[.35 .6 .37 .37]);
m_proj('albers equal-area','lat',[40 60],'long',[-90 -50],'rect','on');
m_coast('patch',[0 1 0]);
m_grid('linest','none','linewidth',2,'tickdir','out','xaxisloc','top','yaxisloc','right');
m_text(-69,41,'Standard coastline','color','r','fontweight','bold');
axes('position',[.09 .5 .37 .37]);
m_proj('albers equal-area','lat',[40 54],'long',[-80 -55],'rect','on');
m_gshhs_c('patch',[.2 .8 .2]);
m_grid('linest','none','linewidth',2,'tickdir','out','xaxisloc','top');
m_text(-80,52.5,'GSHHS\_C (crude)','color','m','fontweight','bold','fontsize',14);
axes('position',[.13 .2 .37 .37]);
m_proj('albers equal-area','lat',[43 48],'long',[-67 -59],'rect','on');
m_gshhs_l('patch',[.4 .6 .4]);
m_grid('linest','none','linewidth',2,'tickdir','out');
m_text(-66.5,43.5,'GSHHS\_L (low)','color','m','fontweight','bold','fontsize',14);
axes('position',[.35 .05 .37 .37]);
m_proj('albers equal-area','lat',[45.8 47.2],'long',[-64.5 -62],'rect','on');
m_gshhs_i('patch',[.5 .6 .5]);
m_grid('linest','none','linewidth',2,'tickdir','out','yaxisloc','right');
m_text(-64.4,45.9,'GSHHS\_I (intermediate)','color','m','fontweight','bold','fontsize',14);
axes('position',[.55 .23 .37 .37]);
m_proj('albers equal-area','lat',[46.375 46.6],'long',[-64.2 -63.7],'rect','on');
m_gshhs_h('patch',[.6 .6 .6]);
m_grid('linest','none','linewidth',2,'tickdir','out','xaxisloc','top','yaxisloc','right');
m_text(-64.18,46.58,'GSHHS\_H (high)','color','m','fontweight','bold','fontsize',14);10。Tracklines和UTM投影m_proj('UTM','long',[-72 -68],'lat',[40 44]);
m_gshhs_i('color','k');
m_grid('box','fancy','tickdir','in');
% fake up a trackline
lons=[-71:.1:-67];
lats=60*cos((lons+115)*pi/180);
dates=datenum(1997,10,23,15,1:41,zeros(1,41));
m_track(lons,lats,dates,'ticks',0,'times',4,'dates',8,...
'clip','off','color','r','orient','upright');11。范围环 m_proj('hammer','clong',170);
m_grid('xtick',[],'ytick',[],'linestyle','-');
m_coast('patch','g');
m_line(100.5,13.5,'marker','square','color','r');
m_range_ring(100.5,13.5,[1000:1000:15000],'color','b','linewi',2);
xlabel('1000km range rings from Bangkok');
12。有斑点的边界 bndry_lon=[-128.8 -128.8 -128.3 -128 -126.8 -126.6 -128.8]; bndry_lat=[49 50.33 50.33 50 49.5 49 49]; clf; m_proj('lambert','long',[-130 -121.5],'lat',[47 51.5],'rectbox','on'); m_gshhs_i('color','k'); % Coastline... m_gshhs_i('speckle','color','k'); % with speckle added m_line(bndry_lon,bndry_lat,'linewi',2,'color','k'); % Area outline ... m_hatch(bndry_lon,bndry_lat,'single',30,5,'color','k'); % ...with hatching added. m_grid('linewi',2,'linest','none','tickdir','out','fontsize',12); title('Speckled Boundaries for nice B&W presentation (best in postscript format)','fontsize',14); m_text(-128,48,5,{'Pacific','Ocean'},'fontsize',18);
13。蓝色的海洋 m_proj('miller','lat',[-75 75]);
m_coast('patch',[.7 1 .7],'edgecolor','none');
m_grid('box','fancy','linestyle','none','backcolor',[.9 .99 1]);
cities={'Cairo','Washington','Buenos Aires'};
lons=[ 30+2/60 -77-2/60 -58-22/60];
lats=[ 31+21/60 38+53/60 -34-45/60];
for k=1:3,
[range,ln,lt]=m_lldist([-123-6/60 lons(k)],[49+13/60 lats(k)],40);
m_line(ln,lt,'color','r','linewi',2);
m_text(ln(end),lt(end),sprintf('%s - %d km',cities{k},round(range)));
end;
title('Great Circle Routes','fontsize',14,'fontweight','bold');
卫星数据操作的例子1。全球海温(或任何变量在全球纬度/经度网格)% NOAA / NASA探路者AVHRR SST的产品
% http://podaac.jpl.nasa.gov/sst/
[P,地图]= imread(“. . / m_mapWK / 199911 h54ma-gdm.hdf”);
%为54公里数据集的文档
%这个温度的公式
P = 0.15 * 3双(P);%摄氏度
%……并定义这个纬度/经度网格数据
平台= 90年-[0:359]* 5;Plon = -180 +或25 +(0:719)* 5;
%因为网格rectangluar在纬度/经度(即不是
%是真正的一个投影,尽管它是包含在
% m_map等距cyldindrical的名义),我们
%不想使用“图像”技术。而不是……
%创建一个网格,抵消了一半帐户的网格点
平pcolor %
(身为Plt]= meshgrid(plon - 0.25,平台+ 0.25);
m_proj(' hammer-aitoff ',' clongitude ',-150);
%,而不是重新排列数据匹配的所以它的限制
%画我画两次(你可以看到加入180 w
%的怪癖pcolor)(注意
%的所有全球预测360度模糊)
m_pcolor(身为Plt P);阴影平;colormap(地图);
抓住;
m_pcolor(Plt,身为- 360 P);阴影平;colormap(地图);
m_coast(“补丁”,[。6 1。6);
m_grid(“xaxis”,“中产”);
% colorbar添加一个标准。
h = colorbar(' h ');
集(get(h,“标题”),“字符串”,1999年11月AVHRR SST);
2。SSM / I冰盖(数据提供一个固定的网格)% SSM / I冰浓度网格
%(国家冰雪数据中心)
P = hdfread(“/ mnt / cdrom / nasateam /北/ 1991 / 2月/ 910222。合计”、“8位光栅图像# 2”);
P(P = = 168)= 101;%的土地,没有报道。
P(P = = 157)= 102;%坏数据
% SSM / I冰极极射赤面投影产品。
%的角点网格。在这里我们只
%使用这些角点和一切都会“假设”
%的工作。这不是坏,虽然他们的实际使用投影
%椭圆地球(m_map使用球形地球)。
m_proj(“立体”、“纬度”,90年,“半径”,55岁的rotangle,45);
%转换为指向屏幕坐标下和左角落。这
%当然是组装机。
[MAPX,dm]= m_ll2xy([279.26 - 350.03],[33.92 - 34.35],“剪辑”,“关闭”);
[dm,MAPY]= m_ll2xy([168.35 - 279.26],[30.98 - 33.92],“剪辑”,“关闭”);
clf
%绘制数据作为形象
图像(MAPX MAPY P);设置(gca,‘ydir’,‘正常’);
colormap([喷气(100);0 0 0 1 1 1]);
m_coast(“补丁”,[。6。6。6);
m_grid(' linewi ' 2 ' tickdir ','从');
标题(“SSM / I冰盖1991年2月22日”,“字形大小”,14日“fontweight”,“大胆”);
h = colorbar(' v ');
集(get(h,ylabel),'字符串','冰总浓度(%)');
3所示。航拍照片UTM网格%这张照片来自于TerraServer
%(http://terraserver.microsoft.com/)
%,地理UTM坐标。UTM投影
%使用UTM坐标在屏幕上(只要椭圆
%参数设置为默认)之外的东西。
[P,地图]= imread(“. . / m_mapWK / oncehome.jpeg”);
%设置投影限制图像的纬度/经度
%的角落。
m_proj(“设备”、“长”,[71 - 6/60 30/3600 71 - 4/60 43/3600],…
“纬度”,[42 + 21/60 + 13/3600 42 + 22/60 + 7/3600),“椭圆”、“wgs84”);
clf;
图像(326400[326400],[4692800 4691200],P);设置(gca,‘ydir’,‘正常’);
m_grid(‘tickdir’,‘出来’,‘linewi’,2,字形大小,14);
标题(“家庭对于某些书呆子”,“字形大小”,16);
4所示。全球数据集的子集(HDF格式)[size=-1]%海洋颜色来自http://seawifs.gsfc.nasa.gov/SEAWIFS.html的数据
[size=-1]%
[size=-1]% 4公里弱平均数据,绘制地图的海峡
[size=-1]%格鲁吉亚和外海岸。请注意,其中的大部分代码都是使用
[size=-1]%的阅读和构造子集数据。
[size=-1]LATLIMS =(47 51);
[size=-1]LONLIMS =(-130 - -121);
[size=-1]%注意——这是阅读和可能不是最有效的方法
[size=-1]%处理HDF数据,但我通常不这样做…
[size=-1]%
[size=-1]%,属性数据
[size=-1]π= hdfinfo(“A20040972004104.L3m_8D_CHLO_4KM”);
[size=-1]%和写作结构
[size=-1]销=[];
[size=-1]对于k = 1:59,
[size=-1]海里= PI.Attributes(k)。名称;纳米(纳米= = ' ')=“_”;
[size=-1]如果isstr(PI.Attributes(k)value),
[size=-1]销= setfield(销、纳米、PI.Attributes(k)value);
[size=-1]其他的
[size=-1]销= setfield(销、纳米、双(PI.Attributes(k)value));
[size=-1]结束
[size=-1]结束;
[size=-1]%经度/纬度的网格
[size=-1]朗=[pin.Westernmost_Longitude:pin.Longitude_Step pin.Easternmost_Longitude):;
[size=-1]lat =[pin.Northernmost_Latitude:-pin.Latitude_Step pin.Southernmost_Latitude):;
[size=-1]%得到所需的指标感兴趣的领域
[size=-1](mn,ilt)= min(abs(lat-max(LATLIMS)));
[size=-1](锰、ilg)= min(abs(lon-min(LONLIMS)));
[size=-1]ltlm =修复(diff(LATLIMS)/ pin.Latitude_Step);
[size=-1]lglm =修复(diff(LONLIMS)/ pin.Longitude_Step);
[size=-1]%的子集数据加载所需的地图限制
[size=-1]P = hdfread(“A20040972004104。L3m_8D_CHLO_4KM”、“l3m_data”、“指数”,{[ilt ilg],[],[ltlm lglm]});
[size=-1]%将数据转换成日志(Chla)使用给定的方程。空白没有数据。
[size=-1]P =双(P);
[size=-1]P(P = = 255)=南;
[size=-1]P =(pin.Slope * P + pin.Intercept);% log_10 chla
[size=-1]LT =纬度(ilt +[0:ltlm-1]);LG =经度(ilg +[0:lglm-1]);
[size=-1](身为Plt]= meshgrid(LG、LT);
[size=-1]%画地图…
[size=-1]clf;
[size=-1]m_proj(LONLIMS“兰伯特”,“朗”,“纬度”,LATLIMS);
[size=-1]m_pcolor(身为Plt P);阴影平;
[size=-1]m_gshhs_i(“颜色”、“k”);;
[size=-1]m_grid(' linewi ' 2 ' tickdir ','从');;
[size=-1]h = colorbar;
[size=-1]集(get(h,“ylabel”),“字符串”,“Chla(\杯/ l)');
[size=-1]集(h,ytick,log10([。5 1 2 3 5 10 20 30]),“yticklabel”(。5 1 2 3 5 10 20 30],“tickdir”、“出”);
[size=-1]标题([的MODIS Chla datestr(datenum(pin.Period_Start_Year 1 0)+ pin.Period_Start_Day)“- >”……
[size=-1]datestr(datenum(pin.Period_Start_Year 1 0)+ pin.Period_End_Day)],…
[size=-1]“fontweight”字形大小,14日,“大胆”);
最后改变了2014年10月24日。问题和评论rich@eos.ubc.ca
|