mmap中文文档Word文档格式.docx
《mmap中文文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《mmap中文文档Word文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
sguide来正确安装m_map,第9节和10.1节将分别介绍安装TerrainBase和GSHHS。
为了介绍m_map的功能,提供了很多例子,略图如上图1。
你也可以获得m_namebox,一套自动将名字添加到你的地图中的工具,从它的主页下载.
用户指南
1启动
首先,下载文件,任意一种格式,然后解压,如果你解压了.zip文件,确保同时解压它的子目录。
现在,启动matlab,确保工具箱在你的路径中。
可以通过cd改变到正确的目录
另一种方法,如果你解压文件到目录/users/rich/m_map下,你可以用下面的方式把它加入到你的搜索路径中:
path(path,'
/users/rich/m_map'
);
或者是:
addpath/users/rich/m_map
…
注意:
如果你想安装m_map,使他可以被所用用户使用,这样做:
解压文件到matlab安装目录的toolbox文件里,将该路径添加到matlab的搜索路径中,更新缓存文件,语句如下:
rehashtoolboxcache
安装高分辨率水深测量数据库的方法在第9节,安装高分辨率GSHHS海岸线数据库的方法在第10节。
我们要检查一下,基本的安装是不是正确
看一个例图,如下:
m_proj('
obliquemercator'
//确定投影方式和绘图界线
m_coast;
//画出海岸线
m_grid;
//添加格网
这是俄勒冈州/不列颠哥伦比亚海岸的地图,使用ObliqueMercator投影方式,一些复杂的地图可以通过使用m_demo来产生。
例如:
>
m_deom
(1);
第一行代码初始化投影,对于每一种投影都有设定的默认值,所以你可以很容易看出某一种特点的投影的样子,所有的投影都有一系列可选的参数,如果不使用默认值,你将使用到:
'
longitudes'
[-132-125],'
latitudes'
[5640],'
direction'
vertical'
aspect'
.5)
各个选项的准确含义在第2节介绍,然而要注意到,精度是用带符号的形式表示的-西经为负值,东经为正值,同时应注意到,使用的是十进制度的形式,即西经120°
30′应该表示为-120.5°
。
第二行代码是画海岸线,使用1/4°
分辨率的海岸线数据,使用自己的数据库,可以画出更高分辨率的海岸线,参看第7节。
m_coast可以调用许多参数,如:
m_coast('
linewidth'
2,'
color'
r'
可以画出一个更宽的红色的海岸线。
也可以填充海岸线,使用patch选项,
patch'
[.7.7.7],'
edgecolor'
none'
画出一个灰色填充没有边缘的海岸线。
第3行叠加网格,尽管有许多可选的参数可以用来定制格网的外观,但经常还是使用默认值(像这几个例子一样),这些选项在第4节讨论,你可以使用GET语句获得选项表。
m_gridget
类似于在常规的画图中使用get(gca)语句的功能
最后,假使你想在129W,4830'
N.这个位置显示和标注一个mooring,
[X,Y]=m_ll2xy(-129,48.5);
line(X,Y,'
marker'
square'
markersize'
4,'
text(X,Y,'
M5'
top'
m_112xy(以及它的逆m_xy112)的功能是将经纬度坐标转换为它对应的投影坐标(投影坐标转换成经纬度坐标),在转换成投影坐标系统中,可以使用各种选项,如果你愿意接受默认值,你可以使用内置的功能m_line和m_text(就不用转换成xy的样子了)
m_line(-129,48.5,'
m_text(-129,48.5,'
最后,我们想稍微改变一下网格的细节,注意,一个给定的地图只能初始化一次。
clf
m_grid('
xlabeldir'
end'
fontsize'
10);
2指定投影
为了获得当前投影,使用:
m_projget;
返回:
Currentmappingparameters-
Projection:
ObliqueMercator(function:
mp_omerc)
longitudes:
-132-125
latitudes:
5640
Aspectratio:
0.5
Baselinedirectionver
或者:
m_proj(‘set’);
返回如何列表:
Availableprojectionsare:
Stereographic
Orthographic
AzimuthalEqual-area
AzimuthalEquidistant
Gnomonic
Satellite
AlbersEqual-AreaConic
LambertConformalConic
Mercator
MillerCylindrical
EquidistantCylindrical
ObliqueMercator
TransverseMercator
Sinusoidal
Gall-Peters
Hammer-Aitoff
Mollweide
Robinson
UTM
如果想要获得某个投影的细节,只要在上面的命令里加入投影名。
m_proj(‘set’,Stereographic);
得到:
'
Stereographic'
<
lon<
gitude>
center_long>
lat<
itude>
center_lat>
rad<
ius>
(degrees|[longitudelatitude])|'
alt<
alt_frac>
rec<
tbox>
('
on'
|'
off'
circle'
)>
你也可以获得当前投影的一些细节,例如,你想看一下sinusoidal投影的一些默认参数值,首先初始化投影方式,然后使用set
m_proj('
set'
stereographic'
)
m_projget
Sinusoidal(function:
mp_tmerc)
-9030(centeredat-30)
-6565
Rectangularborder:
off
为了初始化投影,通常需要指定位置参数来定义投影的几何形状,纬度范围,中央经线等,以及一些能够确定地图范围的参数(可以是一个正交轴,能确定范围的边界点等),这些参数在投影之间略有差别。
两个比较有用的投影性能:
1)保持区域角度不变
2)保持区域面积不变的能力
第一种叫正形投影,第二种叫等积投影。
没有哪种投影方式可以满足上述两种条件,许多全球性的投影则一个也满足不了,相反,人们正在尝试从审美的角度进行各种条件的平衡。
大多数投影都是球形的而不是椭球的,UTM投影是椭球投影,兰伯特等角圆锥投影和阿尔伯特等积圆锥投影如果需要的话可以指定为椭球投影,当处理的数据时加拿大的省或者是美国的州的时候似乎有点用,通常使用其中一个投影,这不太可能成为一个正常使用的问题。
1方位投影
在方位投影中,地球上的点被投影到一个相切的平面上,使用这种投影得到的地图,中心点到任意点的方位角保持不变。
穿过中心点的大圆弧投影后为直线,不经过中心点的圆弧投影后为弧线,这种地图经常在画圆形边界时使用,定义一个方位投影需要用到如下参数:
<
这两个参数是定义地图的中心点,地图都是被校正了的,中央经线是垂直的,北端点在中心点上。
(degrees|[longitudelatitude])>
这个参数定义地图的范围,或者指定以度为单位的角距离(例如90度代表的是一个半球),或者指定边界上的一个点的坐标。
、
默认的是一个闭合的地图,圆形边界,但是也可以指定矩形边界,然而矩形边界的地图通常使用圆柱投影或者圆锥投影。
rot<
angle>
degreesCCW>
旋转图片使中央经线不垂直。
立体投影
立体投影是正形非等积投影,这种投影经常用在极地地区
正交投影
这种投影是等积非正形投影,但是类似于一个全球的视角
方位等积投影
有时候也可以叫做兰勃脱正形等积投影,这种投影是等积非正形投影。
方位等距投影
这种投影非等积非正形,但是所有点到中心点的方向和距离是不变的
点且投影
这种投影非等积非正形,地图上的所有直线都是大圆弧,在地图的边缘会出现很大的角度变形,所以最大角距应该控制在-20到30度之间。
卫星投影?
这是一个类似于在特定高度的一个卫星观察到的地球的透视图,不用指定地图的半径,只要指定视点高度。
altitude_fraction>
这个属性值代表的是以地球半径为单位的视点高度,如一个卫星在3倍地球半径的高度,则指定高度值为2
2圆柱投影或者伪圆柱投影
圆柱投影是通过将点投影到包裹着地球的一个面上形成的,只在某个大圆上与球相交,对于侧向跨度很大的区域,这种投影方式非常有效,在中纬度地区也广泛使用,在此也介绍两种伪圆柱投影,他们和圆柱投影有很大的相似性。
这种地图通常具有矩形边界(除了正弦投影以及横轴墨卡托投影)
1墨卡托投影
正形投影,投影到与赤道相切的包裹地球的圆柱面上,投影面上的直线为等方位线,下面的一些属性能够影响这种投影的效果:
([minmax]|center)>
或者定义精度范围,或者定义中央经线
(maxlat|[minmax])>
北纬或者南纬的范围经常设为一样的,可以用一个值来指定,但是如果需要,也可以指定不同的值。
2米勒投影
这种投影非正形非等积,但是对于世界地图看起来更好看,属性和上面的墨卡托投影一样。
3等距圆柱投影
这种投影非正形非等积,它由等距的经纬线组成,经常用于数据的快速作图,这里简单介绍,以便这种地图能够充分利用这种格网生成程序,这种投影也被叫做改良普通圆柱投影,属性值和墨卡托投影一样。
4倾斜墨卡托投影
当相切的圆比较随意时使用这种投影,在海岸线较长,形状不规则或者对齐的区域,这种投影非常有用。
它是正形非等积投影,一下参数控制着投影效果:
[G1G2]>
[L1L2]>
两个点确定一个圆,也确定了地图的边界,这2个点(G1,L1)和(G2,L2)在地图的顶部或者底部,左侧或者右侧,当然这取决于direction属性。
6地图比例尺
m_map通常要缩放地图以使地图能够在当前的坐标之内,如果你仅仅是想要一副好看的地图(通常情况下都是这样),那这将是你非常需要的。
另一方面,有时候你想以某个固定的比例尺打印一些东西(比如你手上有一把尺子和一张地图,你想算一下曼谷和动静的距离),在所有的东西都画完之后,使用m_scale制作一个这样的地图。
m_scale(250000);
注意,一个1:
250000的地图比一个8.5"
x11"
的纸张大得多。
这个选项通常只在大比例尺,小区域地区有用。
如果你想知道当前的比例尺,调用一个没有任何参数的m_scale,就会计算和返回当前值。
8地理坐标系和地磁坐标系
经纬度坐标是地图中常用的坐标系统。
在一些情况下,UTM坐标也经常使用,它仅仅需要一个转换而已,不多介绍,因为这个功能不常用。
lat=[25*ones(1,100)50*ones(1,100)25];
lon=[-99:
00:
-1:
-99-99];
subplot(121);
m_coord('
IGRF2000-geomagnetic'
%Treatalllat/longsasgeomagnetic
m_line(lon,lat,'
%"
lat/ln"
assumedgeomagneticonthegeomagneticmap
geographic'
%Switchtoassuminggeographic
c'
%Nowtheyaretreatedasgeographic
subplot(122);
%Defineallingeographic
%Nowassumethatvaluesareingeomagnetic
3海岸线和深度测量
m_map包含连个相当简单的海岸线和全球高程数据的数据库。
高分辨率的数据库在这个版本中并不包含,因为它数据量大,处理耗时。
如果需要更高分辨率的地图,第9节和第10节介绍了如何加载一些免费的高分辨率数据集。
如果想要加载自己的数据,阅读第7节和第8节。
1海岸线选项
m_map包含1/4度分辨率的海岸线数据局。
对于覆盖全球大范围区域的地图非常合适,但是对于一些大比例应用就显得太过粗糙。
对这种区域地图不满意的用户可以阅读第7节和第10节,获得制作和使用高分辨率海岸线数据的信息。
m_map的海岸线数据可以使用m_coast获得,海岸线被划为简单的线。
使用:
line'
...optionallinearguments);
m_coast(optionallinearguments);
此处的参数选项都是指定线的属性的一些标准选项例如线条样式,线宽,颜色等。
海岸线也可以被填充:
...optionalpatcharguments);
此处的参数选项都是指定填充的属性的一些标准属性,如:
g'
绘制灰色填充,轮廓为绿色,当绘制了填充时,湖泊和内陆海洋给轴背景色。
许多老的海洋地图使用斑点土地边界,这种黑白相间的地图看起来非常漂亮,你可以可以做出这种效果:
speckle'
....optionalm_hatcharguments);
它调用m_hatch,,如果图像中没有太多狭长岛屿和湖泊,它看起来将非常漂亮。
海岸线通常绘制非常迅速,填充海岸线将会花费相当长的时间(因为地图的边界不一定是矩形的,每一部分必须通过m文件绘制);
2地形水深选项
m_map可以得到1°
分辨率的全球高程数据(通常该数据在MATLAB发布文件中,在$MATLAB/toolbox/matlab/demos/earthmap.m)。
默认设置的等高线图可以用如下命令绘制:
m_elev;
还可以指定不同的级别:
m_elev('
contour'
LEVELS,optionalcontourarguments);
例如,如果你想要所有的等高线都是深蓝色,使用下面语句:
LEVELS,'
b'
LEVELS未知变量,去掉之后的效果如上图。
也可以进行等高线填充
contourf'
LEVELS,optionalcontourfarguments);
最后,如果你想提取其中的高程值以备用,可以使用:
[Z,LONG,LAT]=m_elev([LONG_MINLONG_MAXLAT_MINLAT_MAX]);
将会返回在经纬度各未知的z值得矩阵。
(提取某经纬度范围的高程信息)
4个性化坐标轴
1格网线和标签
为了获得完美的格网,你可能想要尝试不同的格网选项,在此有两个非常有用的函数,m_grid是画格网的,m_ungrid是擦出当前格网的(留下海岸线和用户数据),尝试:
Lambert'
获得了北美地区的兰勃脱投影,
现在输入:
m_ungrid;
海岸线还在但是格网小时,坐标显示为XY投影坐标的形式,现在,使用:
xtick'
10,'
tickdir'
out'
yaxislocation'
right'
7);
有许多选项可以改变。
'
box'
('
fancy'
)
这个选项用来指定是否需要一个外轮廓。
有三种外轮廓可供选择,on默认值,就是简单的一条线,有两中fancy轮廓线可供使用,如果tickdir属性值是in,会有一个黑白相间的条纹
如果tickdir设置为out,会画出一个复杂的条纹,
这种边界只适用于以经纬度表示边界的地图上,不适用于方位投影,如果该功能选项设置的不合理则会给出警告信息。
(num|[value1value2...])
这条命令指定经度格网的位置和数值,如果只是给定了一个数,画出的格网线是近似等距的(这个数值是一个约数,因为m_grid总是想让间隔看起来更加好看),当使用位置向量可以指定准确的位置,,ytick与此类似。
xticklabels'
[label1;
label2...]
指定标注的值,可以是数值,也可以使字符串,yticklabels与此类似。
middle'
经度标签要么在格网线短点中间的位置(在格网线正交的位置),要么在这些格网线端点向外延伸位置,ylabeldir与此类似。
(默认Middle);
end的样子:
ticklen'
value
指定标签的长度,类似plot中的width;
in'
指定标记实在内部还是外部,如果box被设置为fancy,它有用来指定fancy的样式。
tickstyle'
dd'
dm'
指定坐标轴标注是用度的形式还是度分秒的形式,默认为度分秒的形式。
colorspec
value
linestyle'
(linespec|'
)
value
fontname'
name
指定线或者文件的一些属性
XaxisLocation'
bottom'
指定在哪里做X轴,是在最底部还是最顶部还是中间。
Middle:
YaxisLocation'
left'
指定Y轴是在最左边,中间,还是在最右面
2标题和轴标记
用title(‘’)和xlabel,ylabel可以为地图添加标题和坐标轴说明
3图例
可以用m_legend给一副地图添加图例,当前只有一部分图例的功能可以使用,通过使用鼠标可以拖动或者删除图例。
4比例尺
可以用m_ruler给一副地图添加比例尺,比例尺可以使垂直的或者水平的,并给添加一些看起来很好看的注记,尽管通过调用其他参数可以改变,位置使用规范化坐标,{0,1}之间,所以你可以注记调整它在地图中的位置,最好在调用了m_grid之后调用他,因为m_grid重置了初始化值。
m_ruler([.1.2],.1);
5添加自己的数据
工具包的目的是允许用户画出自己的数据,一旦你选择了格网和海岸线数据,你就可以使用内置的m_map绘图功能添加自己的线,文件或者是