1。入门
首先,获得所有文件,无论是作为一个zip压缩包或gzip压缩的tar文件并解压缩。如果你解压了zip文件,请确保您还解压了子目录!现在,启动Matlab程序〔版本5或更高版本〕。确保“工具箱〞在您的路径。这可以简单地通过CD ING到正确的目录。
另外,如果你已经解压缩到目录/用户/富/ m_map 〔和/用户/富/ /私人m_map〕,则你可以添加到你的搜索路径:
路径〔path,“/用户/富/ m_map'〕;
或
使用addpath /用户/丰富/ m_map
按照这份文件,然后你会使用Web浏览器翻开文件:/用户/丰富/ m_map的/ map.html,就是这个HTML文件。
注意:您可能要,安装M_Map所有用户访问一个工具箱。要做到这一点,解压缩文件到$ MATLAB /工具箱/ m_map,目录添加到$ MATLAB /工具箱/本地/ pathdef.m的的定义的列表,并更新缓存文件,使用
Rehash toolbo*cache
〔可选〕高分辨率测深数据库安装说明是在第9和第10条中的说明安装〔可选〕高解析度GSHHS的海岸线数据库。但是,我们应该首先检查的根本设置是OK的。 看一个例子地图,试试这个:
m_proj〔“oblique mercator〞〕; m_coast;
m_grid;
这是俄勒冈州/不列颠哥伦比亚省海岸的一个线图,使用斜墨卡托投影〔一些更复杂的地图,可以产生通过运行演示功能m_demo〕。
第一行初始化设计。默认值被设置为不同的投影,这样你就可以很容易地看到一个特定的投影是什么样的,但所有的设计有一些可选参数。要得到一样的地图,而不使用默认值,您可以使用
m_proj〔‘oblique mercator’,’longitudes’,[-132 -125],...
“latitudes〞,[56 40],“direction〞,“vertical〞,“aspect〞,0.5〕;
各种选项确实切含义在 第2节给出。但是,请注意,东经指定使用有正负之分的标记法-东经是正的,而西经度是负的〔还要注意,使用一个
十进制度表示,这样东经120 30'W被指定为-120.5〕。
第二行绘制海岸线,使用1/4度数据库。海岸线与更高的分辨率可以使用自己的数据库〔见第7节〕。m_coast 可以调用不同的线路参数。例如,
m_coast〔'linewidth',2,“color〞,'r'〕; m_coast〔'线宽',2,“颜色〞,'r'〕;
画了较粗的红色海岸线。填充的的海岸线也可以画出,使用“patch〔修补〕〞选项〔后面的任何通常的PATCH属性/值对〕。
m_coast('patch',[.7 .7 .7],'edgecolor','none');
m_coast〔'修补',[0.7 0.7 0.7],'edgecolor','没有'〕;
用灰色填充和无边框绘制的海岸线。
第三条语句是叠加网格。虽然有很多可能的选项,可用于自定义外观的网格,默认可以随时使用〔在本例中〕在第4节讨论这些选项。你可以得到一个使用GET语法的选项列表:
m_grid get它的作用有点像〔GCA〕的语法进展有规则地图形绘制。
最后,假设您想要显示和标注的位置,也就是说,一个停泊在129W,48
30'N。
[*,Y]=m_ll2*y(-129,48.5);
line(*,Y,'marker','square','markersize',4,'color','r'); te*t(*,Y,' M5','vertical','top');
m_ll2*y〔和它的逆m_*y2ll〕用于经度/纬度坐标转换来与投影匹配。各种裁剪选项,也可以指定在转换到投影坐标。如果你愿意承受默认的剪切设置,您可以使用置的功能m_line和m_te*t的:
m_line(-129,48.5,'marker','square','markersize',4,'color','r'); m_te*t(-129,48.5,' M5','vertical','top');
最后〔!〕,我们可能需要稍微改变网格的详细信息。需要注意的是,在给定的地图只能被初始化一次。
clf
m_coast('patch',[.7 .7 .7],'edgecolor','none'); m_grid('*labeldir','end','fontsize',10);
m_line(-129,48.5,'marker','square','markersize',4,'color','r'); m_te*t(-129,48.5,' M5','vertical','top');
2。指定预测
为了得到一个列表,目前的预测,
m_proj get或m_proj('set');
目前返回下面的列表:
Available projections are:
Stereographic 立体的 Orthographic正交 Azimuthal Equal-area方位等面积 Azimuthal Equidistant方位等距 Gnomonic大圆 Satellite卫星
Albers Equal-Area Conic阿尔伯斯等面积圆锥 Lambert Conformal Conic 兰伯特等角圆锥 Mercator墨卡托
Miller Cylindrical 米勒圆柱
Equidistant Cylindrical 等距圆柱 Oblique Mercator斜轴墨卡托
Transverse Mercator横轴墨卡托投影
Sinusoidal正弦
Gall-Peters 胆-彼得斯 Hammer-Aitoff Mollweide Robinson罗宾逊 UTM
如果你想这些预测可能的选项,其名称添加到上面的命令,例如:
m_proj('set','stereographic');
'Stereographic' <,'lon 您还可以得到关于当前投影的详细信息。例如,为了看什么默认参数为正弦投影,我们首先对它进展初始化,然后使用“设置〞 选项: m_proj('sinusoidal'); m_proj get Current mapping parameters - Projection: Sinusoidal (function: mp_tmerc) longitudes: -90 30 (centered at -30) latitudes: -65 65 Rectangular border: off m_proj〔'正弦'〕; m_proj 当前映射参数- 投影:正弦〔功能:mp_tmerc〕的 经度:-90 30 〔中心在-30〕 纬度:-65 65 矩形边框:关闭 为了初始化一个projection,通常指定的*些位置参数定义的几何形状的投影〔纵向限制,中央平行的,等〕,以及作为参数定义的围的地图〔不管它是在一个矩形轴,边界点是什么,等等〕。这些略有不同,从投影 到投影。 两个有用的属性的投影〔1〕能够保持角度差异小的区域〔2〕可以维护地区。投影满足第一条件被称为 适形,那些满足第二被称为 相等的面积。无投影二者皆可满足。许多投影〔特别是全球投影〕都不满足,而 不是已经试图作出美学平衡这两个条件中的错误。 注:目前,大多数投影是球形 ,而不是椭圆形。UTM是一个椭圆形的投影,如果需要的话,可以指定椭圆等角圆锥投影和Albers等面积圆锥。这有时是有用的,当你有加拿大的省或美国各州数据〔例如,从一个地理信息系统软件包〕,这往往是使用这些投影。这是不可能的,这将是在正常使用中的一个问题。 方位预测 方位角的预测是在地球上的点被投射到一个平面的切平面。地图使用这些预测的方向或从中心点到所有其他点的方位正确显示的属性。大圆路线穿过中心点显示为直线〔虽然大圆不穿过中央的点可能会出现弯曲〕。通常,这些地图绘制的圆形边界。下面的参数需要定义一个方位投影: <,'lon 这些参数定义了地图的中心点。指定的经度是在地图的中心是垂直对齐的,其北端在地图的顶部〔但看到下面的选项rotangle, 〕 <,'rad 这定义地图的半径长度。要么以度的角距离,可以给定的〔例如,90为一个半球〕,或者可以指定的边界上的一个点的坐标。 <,'rec 默认情况下是在一个圆形边界附上地图〔使用后两个选项选择〕,但也可以指定一个矩形。然而,矩形地图通常是更好的使用*种形式的圆柱或圆锥投影绘制。 <,'rot 这个是旋转图形以使中央的经度是不垂直的。 Stereographic 立体投影是等角的〔正形投影的〕,但不等面积。此投影往往用于极地区域。 Orthographic 这既不等于面积也不是等角投影,但类似地球的透视图。 Azimuthal Equal-Area 有时也被称为兰伯特方位角等面积投影,这个映射是等面积的,但不保形。 Azimuthal Equidistant〔等方位角〕 这既不等于面积也不是等角投影,但所有的从中央点的距离和方向都是真的。 Gnomonic 这既不是等面积也不是等角投影,但在地图上〔而不仅仅是那些通过中心〕所有直线都是大圆航线。然而,在地图的边缘有很大程度的失真,因此,最大的半径应至多保持相当小 - 20度或30度。 Satellite 这是地球的立体图,在一个特定的高度由一个卫星看到。指定半径的地图,而不是指定的观点高度: <,'alt 分配给此属性的数值代表地球半径为单位中的视点的高度。例如,一个卫星的轨道半径为3地球半径将具有2的高度。 圆柱和伪圆柱投影 圆柱投影形成全球各地的包裹,只能沿着一些大圈接触到一个平面上的投影点。这些都是非常有用的投影显示巨大的横向围的区域,也常用于全球中纬度地区唯一的地图。这里还包括两个伪圆柱形投影,sinusoidal和gall-peters和圆柱形投影有一些相似之处〔见下文〕。 这些地图通常绘制矩形边界〔异常的正弦和有时横向莫卡托〕。 Mercator 〔墨卡托〕 这是一个保角〔保形〕的地图,基于赤道上的切柱面。在此投影的直线方位线都是罗盘吸纳〔即轨道的过程中恒定的轴承〕。以下属性影响投影: <,'lon 任何经度限制都可以设置,可以设置或定义的中心经度意味着一个全球性的地图。 <,'lat 纬度限制是最通常在两个N和S的纬度一样,并且可以指定一个单一的值,但也可用于〔如果需要的话〕不平等限制。 Miller Cylindrical〔米勒圆柱〕 这既不是等面积也不是等角投影,但“看起来不错〞的世界地图。属性是与上面墨卡托的是一样的。 Equidistant cylindrical等距圆柱形 这既不是等面积也不是等角投影。它由等距的纬度和经度线,并且是非常经常用于迅速绘制数据。它包括在这里只是让这样的地图可以利用的网格生成程序。也称为Plate Carree。属性同上。 Oblique Mercator斜轴墨卡托 斜轴墨卡托投影产生的大圆相切时是任意的。这是一个有用的,例如,漫长的海岸线或其他笨拙形状或对齐地区的投影。它是保形的,但不是面积相等。下面的属性管理这个投影: <,'lon 两个点指定一个大圆,因此限制了本地图〔这是假设所需的,附近的区域的最短的两个圆弧〕。2点〔G1,L1〕和〔G2,L2〕在该中心的地图〔取决于'方向'属性〕的顶部/底部或左/右两侧。 <,'asp 这指定大圆切线相垂直的方向中的地图的大小,作为示出的长度的比例。纵横比为1的查询结果在一个正方形的地图,较小数字导致瘦地图。高宽比> 1是可能的,但不推荐。 <,'dir 这指定是否大圆相切水平在页面上〔短宽地图〕,或垂直高高瘦瘦的地图。 Transverse Mercator 〔横轴墨卡托投影〕 横轴墨卡托是一个特殊的情况下,斜轴墨卡托投影大圆相切时,是沿着子午线的经度,因此它是保形的。它经常被用于大型地图和图表。下面的属性解释这个投影: <,'lon 虽然一般最有意义的是指定中央子午线作为子午线的切线〔这是默认的〕,*些地图分类系统〔noteably UTM〕只使用一组固定的中央经度,可能无法在地图中心。 <,'rec 地图的限制可以基于纬度/经度〔默认值〕,或在地图上的边界可以形成一个确切的矩形。差异是小的大比例地图。注意:虽然这个投影与通用横轴墨卡托投影〔UTM〕类似,后者实际上是椭圆形的性质。 Universal Transverse Mercator (UTM) 〔通用横轴墨卡托投影〔UTM〕〕 UTM地图适用于〔经度不到几个度)小区域的全球高品质的地图。这是一个椭圆形投影。选项是类似于那些横轴麦卡托投影,另外添加 <,'zon <,'hem 如果没有指定这些是自动计算的。使用以下属性,默认为“正常〞的椭球,球形地球的半径为1个单位,但也可以选择其他选项: <,'ell 对于列表中的可用椭球尝试m_proj〔“set〞,“UTM〞〕。UTM和所有其他的预测之间的最大区别是,不同于'正常' 的投影坐标是在米的东向和北向。要充分利用这一点,它往往是有益,调用m_proj,将‘rectbo*’ 设置为‘on’,而不是使用所产生的m_grid〔由于正常的MATLAB网格将成为以米为单位〕长/纬度格。 Sinusoidal 此突起通常称为“伪圆筒状〞,由于纬圈线显示为直线,类似于其外观在圆柱形凸起赤道相切。然而,子午圈弯曲在一起呈现投影以正弦的方式〔因此而得名〕,使得地图是等面积的。 Gall-Peters 纬圈和经圈都显示为直线,但纵坐标被扭曲,因此该区域被保存。这对热带地区是非常有用的,但在极地地区是极端的失真。 Conic Projections 〔圆锥投影〕 圆锥投影,导致投影到圆锥体包裹球体周围。圆锥体的顶点位于球体的旋转轴线。该圆锥体不是在一个单一的纬度角正切,就是可以在两个别离的纬度横切球体。这是一个有用的在中纬度地区大的东西方向的投影。以下属性影响这些投影: <,'lon 在页面上显示为一个垂直的中心经度。的默认值是平均的经度,虽然它可能被设置为任何值〔甚至超出限制之一〕。 <,'par 标准纬线可以被指定。一个或两个平行线被给定,默认的是一个并行的平均纬度。 <,'rec 地图的限制可以基于纬度/经度〔默认值〕,也可以是地图边界形成了一个确切的包含给定的限制的矩形。除非该地区被映射的是小的,最好是离开这个“关闭〞。 默认情况下是使用球形地球模型的映射转换。然而,椭球坐标系也可以被指定。这往往是有用的,只有做坐标转换〔例如,如果一个特定的网格数据库,在这种投影,你想找到纬度/经度数据〕,因为是不可能用眼睛看到在一块土地上的差异。使用特定的椭球体可以选择使用以下属性: <,'ell 对于列表中的可用椭球,尝试m_proj('set','albers'),可以得到如下的选项: normal sphere grs80 grs67 wgs84 wgs72 wgs66 wgs60 clrk66 clrk80 intl24 intl67 Albers Equal-Area Conic 〔阿尔伯斯等面积圆锥〕 这一投影是相等的面积,但不保形 Lambert Conformal Conic 〔等角圆锥投影〕 此投影是保形的,但不等面积 Miscellaneous global projections〔多方面的全球投影〕 有一些真的不适合上述任何类别的投影。大多数这些都是全球投影〔即它们表现出的是整个世界〕,而他们也被设计成“悦目〞。我不知道有什么用,他们是一般,但他们却很好的标志! Hammer-Aitoff 弯曲的经线和纬线等积投影。 Mollweide 也被称为椭圆或Homolographic的等面积投影。这个投影钟纬线是直〔平行〕的。请注意,例如图4显示了一个相当复杂的使用,以减少失真,更标准的地图,可使用 m_proj('mollweide'); m_coast('patch','r'); m_grid('*a*islocation','middle'); Robinson〔罗宾逊〕 不等区域或保形,但所谓的“顺眼〞。 是的,但我使用什么样的投影? 嗯,这取决于真正大面积映射。通常情况下,对整个世界的地图使用墨卡托投影,虽然经常米勒圆柱投影看起来更好,因为它不过分强调极地地区。另一种选择是的Hammer-Aitoff 或Mollweide〔其中有两极附近的经络弯曲〕。两者都是相等的面积,它可能不是一个好主意对于中间附近没有赤道的*个地方的地图。罗宾森投影不是等面积的或者是不保形的,但一段时间是National Geographic〔国家地理〕的选择,也出现在IPCC的报告。 如果你正在筹划一个大的北/南程度的东西,但不是很宽〔例如,北美洲和南美洲,北大西洋和南大西洋〕,然后 Sinusoidal or Mollweide projections看起来还不错。另一种选择是Transverse Mercator〔横轴墨卡托投影〕,虽然这是通常只用于非常大比例尺地图。 对于较小的区域一个半球或其他〔例如,澳大利亚,美国,地中海,北大西洋〕,你可能会选择一个conic projection〔圆锥投影〕。两个圆锥投影〔Albers Equal-Area Conic 和Lambert Conformal Conic 〕之间的差异是细微的,而且,如果你不知道很多关于投影,你使用哪一个可能不会带来多大的改变。 如果你表达的区域更小,那也就无所谓使用哪个投影。墨卡托投影在许多情况下,我觉得有用的是斜的,因为你可以调整它沿长〔窄〕沿海区域。如果地图沿线经度/纬度围是确定的,使用Transverse Mercator 或 Conic Projection〔横轴墨卡托投影或圆锥投影〕。UTM投影也是有用的。 极地地区是传统的映射使用一个Stereographic projection〔立体投影〕,由于*种原因,它看起来不错,有一个“靶心〞模式的纬度线。 如果你想要得到快速得到任何投影的样子,所有的功能都默认参数设置为“典型〞的用法,即获得一个快速投影的样子,你可以这样做的,而无需很多的数值: 例如: m_proj('stereographic'); % E*ample for stereographic projection m_coast; m_grid; 地图比例尺 M_Map通常尺度的地图,它完全符合在当前轴。如果你只是想要一个漂亮的图片〔这是大局部的情况下〕,则这正是你需要的。另一方面,有时你想打印的东西,在一些准确的比例〔也就是说,如果你真的喜欢坐在你的办公桌,一把尺子和一纸,试图找出相隔多远,曼谷和东京〕。使用的m_scale的原始本-为1:25万地图,请调用: m_scale〔250000〕; 之后,你画的一切〔要小心 -——一个1:250000的世界地图是比8.5“*11〞的纸大得多的〕。 这个选项通常只适用于大比例尺的地图,即非常小的区域的地图〕。 如果你想知道目前的尺度比例,不带任何参数调用m_scale将计算并返回该值。 要返回到默认缩放:调用m_scale('auto') 。 〔PS -如果你想找到距离从曼谷到任何地方,画一个以曼谷〔13 44'N,100 30'E〕为中心的azimuthal equidistant projection of the world〔世界等距方位投影〕,选择一个比拟小的比例,像1:200,000,000〕 。另一种选择是使用围环绕,见例11。 Map coordinate systems - geographic and geomagnetic. 纬度/经度是常用的地图坐标系统。在*些情况下UTM坐标也是有用的,但这些其实只是一个基于赤道和*些经度线的位置的简单变换。另一方面,还有一些其他的一组轴坐标系的场合时是有用的。例如,在空间物理学数据往往是根据磁极的坐标投射。M_Map具有有限能力对于这些其它坐标系统中的数据处理。m_coord让你改变坐标系,从地理地磁。下面的代码为您提供了这样的想法: lat=[25*ones(1,100) 50*ones(1,100) 25]; lon=[-99:0 0:-1:-99 -99]; clf subplot(121); m_coord('IGRF2000-geomagnetic'); % Treat all lat/longs as geomagnetic m_proj('stereographic'); m_coast; m_grid; m_line(lon,lat,'color','r'); % \"lat/ln\" assumed geomagnetic on the geomagnetic map m_coord('geographic'); % Switch to assuming geographic m_line(lon,lat,'color','c'); % Now they are treated as geographic subplot(122); m_coord('geographic'); % Define all in geographic m_proj('stereographic'); m_coast; m_grid; m_line(lon,lat,'color','c'); m_coord('IGRF2000-geomagnetic'); % Now assume that values are in geomagnetic m_line(lon,lat,'color','r'); 注意:这个选项是不是用得非常多,因此不完全支持。特别是,填充的海岸线可能无常工作。 3、海岸线和水深 M_Map包括两个比拟简单的海岸线和全球高程数据数据库。高度详细的数据库不包含在此版本中,因为他们是非常大的并且处理极为费时〔循环本身参与〕。如果需要更详细的地图,第9条和第10条 说明如何添加一些可免费提供高分辨率的数据集。如果你想添加自己的海岸线/测深数据请阅读第7和 第8。 1、海岸线选项 M_Map包括1/4度的分辨率海岸线数据库。对于地图覆盖全球的很大一局部是适宜的,但明显对于许多大型应用程序是比拟粗糙的。用户不满意的区域地图,可以使用 第7条和/或第10条的更多信息,创立和使用高分辨率的海岸线。M_Map数据库的访问可以使用m_coast功能。海岸线可以得出简单的线条, m_coast('line', ...optional line arguments ); or m_coast( optional line arguments ); 可选参数都是标准参数,用于指定线条样式,宽度,颜色等。海岸线也可以被填充补丁,使用如下语句: m_coast('patch', ...optional patch arguments ); 其中可选尾部参数是标准的补丁属性。 例如, m_coast('patch',[.7 .7 .7],'edgecolor','g'); 绘制灰色的土地,外框为绿色。当补丁被绘制时,湖泊和海轴被给予核心的底色。 许多旧的〔海洋〕地图创立斑点的陆地边界,黑色和白色相见看起来非常漂亮。你也可以得到一个斑点的边界: m_coast('speckle', ....optional m_hatch arguments); 这就要求m_hatch。如果没有太多非常小的岛屿和/或湖泊中的形象,这看起来不错,〔见例13〕。 需要注意的是通常画线的海岸线而迅速。填充海岸线需要相当多的时间 来生成〔因为地图限制不一定是矩形的,削波必须完成在m-文件中〕。 2、地形/测深 M_Map可以访问1度分辨率的全球高程数据库〔实际上,这个数据库是包含在Matlab中的分布,使用的$ MATLAB /工具箱/ MATLAB /演示/ earthmap.m〕。默认高度的高程等高线图可以由下面的代码得出: m_elev; 不同的高度也可以被指定; m_elev('contour',LEVELS, optional contour arguments); 例如,如果你想要所有的等值线都是黑蓝色的,使用如下语句: m_elev('contour',LEVELS,'edgecolor','b'); 填充等高线也是可以的: m_elev('contourf',LEVELS, optional contourf arguments); 最后,如果你只是想要提取数据自己使用: [Z,LONG,LAT]=m_elev([LONG_MIN LONG_MA* LAT_MIN LAT_MA*]); 返回高度的Z的矩形矩阵在确定的经纬度上。 4、自定义轴 1、网格线和标签 为了获得完美的网格,你可能会想要尝试不同的网格选项。这里两个功能是有用的:M_GRID可以用来绘制一个网格,而M_UNGRID删除当前网格〔但留下的海岸线和用户指定的数据单〕。尝试: m_proj('Lambert'); m_coast; m_grid; 获得北美的兰伯特圆锥投影。现在尝试: m_ungrid 海岸线仍然存在,但网格已经消失,轴显示原始的* / Y投影坐标。现在试试这个: m_grid('*tick',10,'tickdir','out','ya*islocation','right','fontsize',7); 上面的各种选项,可以改变: 'bo*',( 'on' | 'off' | 'fancy' ) 这指定是否绘制轮廓框。三种类型的轮廓框可供选择:'on',默认的是简单的线条。花哨的外形框有两种类型,如果“tickdir是'in',然后交替黑色和白色斑块〔见例2〕。如果'tickdir'被设置为'out',然后一个更复杂的线图案被绘制〔见实施例6〕。Fancy bo*es一般仅适用于地图围的纬度/经度限制〔即不是方位的投影〕,但如果选择此选项不恰当,会发出一条警告消息。 '*tick',( num | [value1 value2 ...]) 这指定的经度网格的数目/位置。如果指定一个单一的数字,绘制网格线/值约这个数字的等距的位置〔数字只是近似,因为M_GRID试图找到“好〞的时间间隔,即轮连为单位〕。确切位置可以通过使用指定的位置的值的矢量。有一个analagous ’ytick‘的 属性。 '*ticklabels',[label1;label2 ...] 特殊标签可以被指定。标签可以是数值的〔然后会被格式化为M_GRID的〕,或字符串值没有变化。是一个analagous 'yticklabels' 属性。 '*labeldir', ( 'middle' | 'end' ) 经度标签要么middled,位于网格线的端部上〔垂直于这些线〕,要么来回绘制向外向后延伸端部的那些线,即与线的走向平行。有一个analagous 'ylabeldir'属性。 'ticklen',value 指定标记的长度〔绘图宽度的一小局部〕 'tickdir',( 'in' | 'out' ) 指定刻度线角度向或向外。如果'bo*' 设置为'fancy',会指定fancy的轮廓框的形式。 'color',colorspec 'linewidth', value 'linestyle', ( linespec | 'none' ) 'fontsize',value 'fontname',name 指定网格和它的标签的不同的线/文本属性。 '*a*isLocation',( 'bottom' | 'middle' | 'top' ) 指定*轴将被绘制在哪里,无论是在底部〔southermost〕完毕,在顶部〔北端〕完毕,或在中间。 'Ya*isLocation',( 'left' | 'middle' | 'right' ) 指定Y-轴将被绘制在哪里,无论是在的左〔westernmostmost〕完毕,在正确的完毕〔东端〕,或在中间。 2、标题和* / ylabels 标题和* / ylabels可以被添加到地图,在常规的方法中使用title和* / ylabel函数〔这是一个变化从1.0版的“可见的〞属性必须显式地设置为'on',现在在m_grid中完成〕。 3、图例盒 一个图例盒中可以添加的地图,使用m_legend。只有一些图例的功能现被添加。图例盒可以使用鼠标按钮拖放。 4、比例尺 使用m_ruler,比例尺可以被添加到地图。标尺绘制水平或垂直方向上,将创立一个'好'的刻度数〔虽然这是可以改变的另一个调用参数〕。归一化坐标〔即0和1之间〕中指定的位置,这样你就可以在地图上的位置调整。这可能是最好的调用m_grid后调用此因为m_grid会重置标准化。 警告 - 这个比例尺可能是没有用的对于任何全球性的〔即整个世界〕,甚至一个世界各地的地图的有效局部,但我不会阻止你使用的比例尺。告诫用户! 5、添加自己的数据 这个包的目的是为了让你自己的数据映射!一旦适宜的网格和〔可能〕的海岸线已经选择了,你可以添加你自己的线条,文字,或等高线图使 用置的M_Map的绘图功能,处理经度/纬度坐标转换到投影坐标。这些绘图功能非常相似对于标准的Matlab绘图功能,并在下一节描述。 有时,你可能想实现经度/纬度和投影坐标之间的转换,而不会立即绘制数据。这可能会发生,如果你想交互地选择点使用ginput,如果你想连接到一个特定的屏幕点上绘制标签,而不是一个特定的经度/纬度。第5.2节和5.3节中描述的投影转换例程。一旦投影坐标被转换成原始的经度/纬度坐标,标准Matlab的绘图函数就可以使用。 地图被绘制到适合的图形轴的边界。因此,他们的比例规模是有些随意的。如果你有兴趣在地图上给定比例,例如1:200000或类似的东西,你可以这样做使用根本的m_scale,请参见 第2.6节 。数据单元都是投影坐标的,这些距离被表示为地球半径的一小局部。要得到一个地图两点之间的“距离〞,投影坐标系统中在两点间使用笛卡尔距离,然后乘以你最喜欢的值为地球半径,通常大约6370公里〔例外- UTM投影使用的北向和东向的坐标以米为单位,所以没有转换是必要的〕。 注意:有时会出现的一个问题是,因图中模糊不清的经度值数据不会出现。例如,如果情节经度限制为[-180 180],一个点的经度,比方说,200,可能不会出现在圆柱和圆锥投影。这不是一个错误。“包裹〞曲线的剪裁处理,需要加点〔而不仅仅是移动〕,因此与其他各种要求不匹配〔如保持输入和输出矩阵大小一样,下面的转换例程〕。 1、绘制线条,文字,箭头,补丁,舱口盖,斑点和轮廓 在大多数情况下,你不需要知道实际上投影坐标是什么——你只是想绘制在指定的经度/纬度的东西。大局部的时间,你想要绘制在地图上的 东西,会通过指定的经度/纬度坐标,而不是通常的* / Y位置,。要做到这一点在M_Map,用m_map的对等物替换调用的plot, line, te*t, quiver, patch, contour, and contourf。例如:m_plot(LONG,LAT,...line properties) % draw a line on a map (erase current plot) m_line(LONG,LAT,...line properties) % draw a line on a map m_quiver(LONG,LAT,U,V,S) % A quiver plot m_te*t(LONG,LAT,'string') % Te*t m_patch(LONG,LAT,..patch properties) % Patches. 这些函数中的每一个都将处理部的坐标转换,如果需要的话,将返回句柄向量的图形对象。这些功能和标准的Matlab函数之间的唯一区别是,前两个参数都必须是经度和纬度。 m_patch有一点需要注意。由于兼容性的原因,使用一样的代码应用于海岸线填充。海岸线无论是“孤岛〞或“湖泊〞,和M_Map跟踪的区别,假设曲线都是定向的,当我们沿着曲线走时,使填充区域(\"land\") 是在右边的。这与path中总是填充在部的用法有所不同。在直角坐标系中,跟踪这种差异是比拟简单的,但球坐标系中不是则容易的。在缺乏m_patch的其他信息而尝试做正确的事,但〔尤其是当补丁与地图边界相交〕,它可能会混淆。如果修补程序不正确地填充,尝试使用flipud 或fliplr将顺序颠倒过来。 格点的经度和纬度的数据也可以被显示: m_contour(LONG,LAT,VALUES) m_contourf(LONG,LAT,VALUES) 同样,这些功能将返回到图形对象的句柄,允许〔例如〕标记的轮廓图: [cs,h]=m_contour(LONG,LAT,VALUES) clabel(cs,h,'fontsize',6); 使用m_vec.m可以产生fancy箭头〔即指定的宽度,头部的形状和颜色规格〕。使用m_vec有关详细信息,请参阅在线帮助。 你还可以得到阴影区通过调用m_hatch: m_hatch('single',LONG,LAT,...hatch properties) % Interior Single Hatches. m_hatch('cross',LONG,LAT,...hatch properties) % Interior Crossed Hatches. 注意,这个调用不生成边缘线〔一个额外m_line 需要这一点。此外,我们可以对补丁形成散斑的侧边缘使用: m_hatch('speckle',LONG,LAT,...speckle properties) % Speckled edges. 在线的帮助和/或更多关于使用m_hatch的详细信息例13。 2、绘制图像和p_color m_pcolor是替代p_color, 但地图边界附近的使用一定要小心。理想的情况下,人会想要的数据,向上延伸至〔但不穿插〕的地图边界〔即多边形裁剪〕。然而,由于以何种方式matlab的处理外表,这不容易完成。相反的——除非你使用的是简单的圆柱或圆锥投影-你可能会得到一个参差不齐的边缘对于彩色的外表。 没有m_image。image() 函数绘制数据以矩形像素,并在总体投影数据中的数据将不会出现作为矩形像素。如果你想在地图上显示一个较大的像素的图像,有以下几种选择: 1) 如果你的地理参考图像的纬度/经度坐标〔即每个数据行是沿着一条 线不断的纬度,每列一个平等经度线〕,则你可以使用m_pcolor 和shading flat。这是相当令人满意的〔虽然它是缓慢的大图像〕,但你 必须记住偏移坐标的像素间距的二分之一。这是因为,当给定的一样的数据时,p_color 和image的不同的反响。 1、image会集中绘制像素〔I,J〕在〔i,j〕上在* / Y矩阵的入口处。 2、p_color与shading flat会绘制一个选定的在(i,j),(i+1,j),(i+1,j+1),(i,j+1)之间网格用* / Y矩阵与坐标的数据在〔i,j〕的值相对应的颜色。因此,一切都显得移动一个像素间距的一半。 来自中纬度地区的卫星数据有时候对于此是经得起检验的。可以看卫星数据处理的例子。 2〕如果你的轮廓已经被放置在一些投影中,如果你知道投影确切的参数,你可以用直接的图像调用,然后重复绘制M_Map地图。例如,极轨卫星的图像往往是在极立体投影。在这种情况下,你应该使用m_ll2*y去获得图像边角的屏幕坐标,然后将这些点在image〔〕调用之前重复绘制你的数据。可以看这个例子。 提示 - 请检查海岸线overplot,以确保正常工作。 3、绘制轨迹线 它有时是非常有用使用注释线反映船舶,飞机或卫星时间和日期的注释随时间变化的位置。这是可以做到的使用: m_proj('UTM','long',[-72 -68],'lat',[40 44]); m_gshhs_i('color','k'); m_grid('bo*','fancy','tickdir','out'); % 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'); 使用m_track有关详细信息请参阅在线帮助,设置字体大小的不同选择,打勾间隔,日期格式等。 虽然摆弄着各种参数,去除绘制的轨道不删除的海岸线和网格,往往是方便的。这是可以做到使用: m_ungrid track or m_ungrid('track') 4、绘制围圈和测地线 有时是有用的一个漂亮的东西,是在一个给定的围或围的特定位置绘制圆圈。使用m_range_ring,其中有3个必需的参数: LONG, LAT, RANGE,其次是一些〔可选〕的规属性/值。例11说明如何使用m_range_ring。 如果要绘制圆形的测地线〔即曲线的,这是perpedicular在所有围的围圈〕,m_lldist可以发现沿着测地线点与点之间的距离和点。例13说明如何使用m_lldist。 如果你关心大圆和椭圆形的测地线〔我敢打赌一个非常非常小的用户比例〕的区别,然后m_fdist〔在给定的围/方位从另一个计算〕,m_idist〔点与点之间的距离和方位〕之间的差异,m_geodesic〔沿短程线的点〕可以被使用作为各种〔用户指定的〕椭圆形。 ,这些调用序列由于历史原因不同于m_lldist。 5、转换经度/纬度投影坐标 如果你想使用投影坐标〔也许你想计算的地图区域或距离,或你想左上角放一个图例〕,下面的命令将经度/纬度坐标转换为投影坐标。 [*,Y]=m_ll2*y(LONG,LAT, ...optional clipping arguments ) LONG, LAT,*和Y是一样大小的矩阵。投影坐标是等于地图中心附近的真正的距离,和表示为地球半径围的一局部。为了得到一个距离,乘以地球半径〔约6370公里〕。唯一的例外是UTM投影提供北和东的以米为单位的坐标。 可能的裁剪参数: 'clip','on' 这是默认的。LONG和LAT的列被假定为形成线,而这些被剪切到地图限制围。地图以外的第一个点,因此被移动到地图边缘,并且所有其他的点转换的NaN。'clip','off' 没有进展剪裁。这有时是有用的用于调试目的。 'clip','point' 点测试对地图的限制。这些围以外的被转换为NaN,里面的都被转换为投影坐标。没有点被移动。此选项对点数据很有用〔如车站位置〕。 'clip','patch' 点测试对地图的限制。这些围以外的变成一个确切的点在限制围。里面的被转换为投影坐标。在试图绘制补丁时此选项可能有用,然而,可能不会很好地工作。 6、转换投影坐标到经度/纬度 从投影坐标转换为经度/纬度是直接了当的: [LONG,LAT] = m_*y2ll〔*,Y〕 没有其他的选项。 7、计算点之间的距离 对无论是地理〔经/纬度〕或地图坐标〔* / Y〕,使用函数m_lldist和m_*ydist可以计算测地线〔大圈〕一个球形地球上的距离。例如, DIST = m_lldist〔[20 30],[44 45]〕 计算距离20E,44N至30E,45N。另外,如果你要计算通过鼠标选择的两点之间的距离: [*,Y] = ginput〔2〕; DIST = m_*ydist〔*,Y〕 将返回这个距离。由于不准确的隐式的球形地球近似,与真实测地距离约有1%左右的误差。 如果你想要更高的准确度,则你必须计算出一个椭圆形地球的测地线。有这样〔Vincenty的算法〕一个非常准确的数值算法,这是实现的函数m_idist,m_fdist,m_geodesic。例如, [distance,a12,a21] = m_idist(lon1,lat1,lon2,lat2,spheroid) 在指定的球体〔“WGS84〞是默认的,其他的选项,请参阅代码或使用的m_proj所示的m_proj('get','utm') 〕两点之间〔lon1,LAT1〕 和〔lon2,LAT2〕,计算以米为单位的距离。正向和反向方位A12 和A21以度计算。 m_fdist:在一个指定的点给定方位角和距离,来获取的一个点的位置。 最后,如果你要绘制在地图上的测地线,然后m_geodesic 可以用来生成一个沿椭圆测地线的两个指定点之间的矢量。如果你发现自己需要这个,我很想知道这件事! 6、更复杂的图 就如何使更复杂的情节的想法,看例子。这些图也包括在函数m_demo中。 7、从图中删除数据 一旦给定的地图包括几个元素,一定量的摆弄通常是必要的以满足人类试图给图像一个确定的感官质量。如果图像包含复杂的海岸线,需要很长的时间来绘制〔例如下文所讨论的〕数字不是去除和重绘很快变得单调乏味。可以使用上面介绍的m_ungrid命令,以选择性地除去局部的图。例如: m_proj('lambert','long',[-160 -40],'lat',[30 80]); m_coast; m_range_ring(-123,49,[1e3:1e3:10e3],'color','r'); 从我的办公室绘制一系列的的环千公里递增线。但我不满意,要重绘增量为200公里的。我可以删除m_range_ring的影响再重绘使用: m_ungrid range_ring m_range_ring(-123,49,[200:200:2000],'color','r'); 一般的,通过调用m_ungrid ANYTHING可以将除。 m_ungrid可以识别并删除特定元素,通过搜索“标签〞属性的由各种不同的M_Map的例程给出的所有绘图元素. m_ANYTHING的结果删 8、添加自己的海岸线 如果你有兴趣在一个特定的区域,并希望得到比使用m_coast的海岸线更高分辨率,最正确方法是 1〕、从一些高分辨率的数据库,获取点的一个子集 2〕、转换成屏幕坐标,使用m_ll2*y,然后绘图。 有一个地方可以得到高分辨率海岸线数据的海岸线提取。按照说明,在那里得到在MATLAB可读的文件中的海岸线数据,并下载到您的电脑。如果的文件保存为“coast.dat〞的,你可以绘制〔线〕使用以下容: load coast.dat m_line(coast(:,1),coast(:,2)); 填充的海岸线将需要更多的工作。阅读说明书将海岸线数据转换成连续 的划分。如果你是幸运的,〔即没有湖泊或其他任何东西〕,你可能会取得成功用如下的命令: load coast.dat [*,Y]=m_ll2*y(coast(:,1),coast(:,2),'clip','patch'); k=[find(isnan(*(:,1)))]; for i=1:length(k)-1, *=coast([k(i)+1:(k(i+1)-1) k(i)+1],1); y=coast([k(i)+1:(k(i+1)-1) k(i)+1],2); patch(*,y,'r'); end; 如果这不起作用,请阅读在private/mu_coast中的说明,所需的方式曲线,并使用m_usercoast加载自己的数据。 1、DCW政治边界 截至2011年DCW已停用。由于历史的原因只保存以下信息,新用户请参阅下一节上shapefile文件。 从可以下载文件,其中包含各个国家和美国各州的政治边界。选择一个区域,然后选择“download points〞选项〔而不是“download data〞〕。一旦下载到您的机使用m_plotbndry的访问,并绘制出所需的边界。例如,如果你下载到一个子目录“states〞: m_plotbndry('states/arizona','color,'r') 在当前地图上绘制亚利桑那州。 2、ESRI形状文件 矢量数据交换的一个事实上的标准是ESRI Shapefile文件。数据集〔至少〕3个文件,每个文件有一样的根名称,但有 .dbf,、.shp和 .sh* 的扩展名。文件可以包含点,线,多边形,以及其他领域中的自我描述的方式。欲了解更多信息,请参阅此说明。 很多〔所有?〕shape文件可以读取使用m_shaperead,它返回一个包含文件息的数据构造。然而,搞清楚什么做的容,您需要检查数据构造的容。这也可能是有用的检查在.prj的文本文件中的投影信息,其中包含有关地图投影的投影信息,特别是如果你从不同的数据源的数据重叠。 通常,您可以在至少创立一个简单的绘图数据存储在文件 datafile.shp,datafile.sh*和datafile.dbf。例如: M=m_shaperead('datafile'); clf; for k=1:length(M.ncst), line(M.ncst{k}(:,1),M.ncst{k}(:,2)); end; 9、添加自己的地形/水深 在NCAR 中有许多全球和区域的地形数据库。有几个是可以免费从他们的FTP站获得。 只要数据以经纬度为维数的矩阵被存储在一个mat-file文件中,然后m_contour或m_contourf 可以用于绘制该数据。 1、桑德韦尔和史密斯测深 最近的中低纬度地区一个新的约1公里分辨率测深方法,许多人正在使用。此数据集在 tope*.ucsd.edu/marine_topo/ 描述,可作为一个134MB的二进制文件在ftp://tope*.ucsd.edu/pub/global_topo_2min/〔得到的文件topo_*.Y.img地方*Y是版本号〕。作者包括的M-的文件〔mygrid_sand.m〕,可以提取局部的数据〔在代码中,你将不得不modiy路径名〕。一旦这个数据库〔和m文件〕安装在您的电脑上,你可以使用它在M_Map变得非常容易。一个典型的用法如下: % E*tract data [elevations,lat,lon]=mygrid_sand([lat_south lat_north long_west long_east]); % Use in M_Map mand m_contour(lon,lat,elevations); 对于一些投影,你必须确保“lon〞被返回通过mygrid_sand.m使用的投影〔例如,你可能需要加/减360〕。这似乎是在西部地区〔即负经度〕发生,如果你忘了这一点,你经常会得到关于空矢量令人困惑的信息! 10、使用TerrainBase 5分钟或ETOPO22分钟的全球水深/地形 1、对于多种用途,海拔的数据库访问M_Map提供足够的分辨率。然而,也有很多情况下,需要更详细的。我还没有更高分辨率的数据库,因为它会大大增加包。不过1.2版包括m文件访问和筹划了风行全球的5分钟的水深/地形数据库,几分钟后工作。 本节提供有关如何下载TerrainBase,并使用 m_tba2b.m把它从56MB ASCII文件转换到一个18MB的二进制文件。它是则简单的访问和绘制水深从这个文件中使用m_tbase.m,这是在所有功能一样m_elev的方式〔参见3.2节〕。 TerrainBase也可在CD-ROM,也通常存储在netcdf的二进制格式〔或其他〕上的*个地方,许多学术网络。如果你修改m_tbase.m,从这些来源之一来访问数据,让我知道! 如何安装TerrainBase: 1、得到并解压缩tbase.Z文件从到m_map目录。 2、运行m_tba2b('PATHNAME') 存储得到的18MB的二进制存储文件作为PATHNAME/tbase.int。 3、删除原来的ASCII文件TBASE。 4、编辑的PATHNAME设置在m_tbase 指向此文件的位置。 这就是它!测试它用本地图,中海: m_proj('lambert','lon',[-10 20],'lat',[33 48]); m_tbase('contourf'); m_grid('linestyle','none','tickdir','out','linewidth',3); 2、截止到2006年4月,有一个校正后的更高分辨率的〔2分钟〕数据库ETOPO2。下载 〔一个gzip压缩的二进制文件〕,用解压缩到一个116MB的文件,在m_etopo2 编辑PATHNAME设置指向的位置文件,然后m_tbase 和m_elev以同样的方式使用它。UCAR要求用户注册并且没有这样做的话,第二个将无常工作〔到第一个,并按照指示〕。 11、使用GSHHS高分辨率海岸线数据库 1、安装GSHHS 绘制地图时总是有一个生成程序的执行时间之间的权衡和分辨率的地图。包括在M_Map海岸线是一个1/4度的数据库,该数据库可以被用来产生非常快的地图,与足够的分辨率用于许多用途。 但是,通常能够制作有限的地理区域的详细地图是理想的。用于此目的,更高分辨率的海岸线的数据库是必要的。M_Map中我还没有包括这样的一个数据库,因为它会大大增加的包的大小。不过,我的m文件访 问和使用流行的高分辨率称为GSHHS的数据库。 随着分布式,GSHHS由一个分层的数据库在不同的分辨率。最低或“粗〞的分辨率不如的M_Map数据库,但它包含许多陆湖泊。“高〞的所包含的点间隔约200米。此外,还有一个更精细的“全面〞的。您可以安装局部或全部的数据库〔这取决于你有多少磁盘空间〕。“全面〞的占用90MB的磁盘空间,并先后粗糙的是更小的约1/4。因此,“高〞的占用21MB,“中间〞使用6MB,和“低〞使用1.1MB〔并不总是使用“高〞的的原因之一是整个90MB数据库必须被读取和处理每一个,这可能需要一些时间〕。 如何安装GSHHS: 1、进入到。 2、获取并解压缩的任何或所有的文件 gshhs_c.b.gz,gshhs_l.b.gz,gshhs_i.b.gz和/或gshhs_h.b.gz 在一个方便的目录中。一个有用的地方是在m_map/private。GSHHS数据格式已经改变在v1.2和1.3之间,并再次为2.0,但m_map应该能明白这一点。 3、如果数据库文件是不是在的子目录m_map/private,你必须编辑FILNAME的设置在m_gshhs_c.m,m_gshhs_l.m,m_gshhs_i.m,m_gshhs_h.m 和/或m_gshhs_f.m指应到相应的文件。 4、有效使用GSHHS 最简单的调用机制与m_coast〔第3节〕是一样的。例如,要绘制一个灰 色填充高清晰度的海岸线: m_gshhs_h('patch',[.5 .5 .5]); 是足够的。但是,执行时间可能会很长很长,要在整个数据库中进展搜索和处理。我会建议不要试图绘制世界地图的中或高分辨率的海岸线!加快这有两种方法:首先是仅仅使用一个较低分辨率的数据库,用较少的点。如果你要反复绘制地图,第二个是有用的,〔因为,例如对于您的工作它是根底的图形〕。在这种情况下,我建议你保存中间处理〔通常更小〕的文件如下: m_proj ... %设置投影参数,此命令不画任何东西-它只是处理高分辨率数据库使用目前的投影的参数%至产生一个较小的海岸线文件名为“gumby〞 m_gshhs_h('save','gumby'); %现在,我们可以更快得出同一地区的几个地图 figure(1); m_usercoast('gumby','patch','r'); m_grid; figure(2); m_usercoast('gumby','linewidth',2,'color','b'); m_grid('tickdir','out','ya*isloc','left'); etc. 12、M_Map工具箱的容和描述 1、Contents.m - 工具箱容 2、m_demo.m - 演示了几个地图。 用户可调用的函数: 1、m_proj.m - 初始化投影 2、m_coord - geomagnstic地理坐标 3、m_grid.m - 绘制网格 4、m_scale.m - 强制映射到一个给定的比例 5、m_ruler - 绘制比例尺 6、m_ungrid.m - 删除地图元素〔如果你想改变参数〕 7、m_coast.m - 绘制的海岸线 8、m_elev.m - 绘制高程数据 9、m_tbase.m - 绘制高程数据,从高分辨率数据库 10、m_etopo2.m - 绘制高程数据〔另一个〕高分辨率数据库 11、m_gshhs_c.m - 绘制海岸线GSHHS粗分辨率数据库 12、m_gshhs_l.m - 绘制海岸线GSHHS低分辨率数据库 13、m_gshhs_i.m - 绘制海岸线GSHHS中分辨率数据库 14、m_gshhs_h.m - 绘制海岸线GSHHS高分辨率数据库 15、m_gshhs_f.m - 绘制海岸线GSHHS全分辨率数据库 16、m_plotbndry.m - 绘制一个政治边界,从DCW 17、m_usercoast.m - 绘制的海岸线,使用用户指定的子集数据库。 18、m_shaperead.m - 读取ESRI shape文件 19、m_plot.m - 绘制线数据上的地图坐标 20、m_line.m - 绘制线数据上的地图坐标 21、m_te*t.m - 添加文本数据,在地图坐标 22、m_legend.m - 画一个图例框 23、m_patch.m - 添加补丁的数据,在地图坐标 24、m_pcolor - 绘制pcolor外表 25、m_quiver - 矢量数据绘制箭头 26、m_contour - 绘制等高线栅格数据 27、m_contourf - 绘制填充轮廓 28、m_track - 绘制注释轨迹 29、m_range_ring - 绘制围的圈 30、m_ll2*y.m - 从经/纬度转换到地图坐标 31、m_*y2ll.m - 从地图坐标转换到经/纬度 32、m_geo2mag - 将磁性坐标转换到地理坐标 33、m_mag2geo - 反向 34、m_lldist- 经/纬度点之间的距离 35、m_*ydist - 地图坐标点之间的距离 36、m_fdist - 在给定的围/方位椭球上的位置 37、m_idist - 椭球上点与点之间的围/方位角 38、m_geodesic - 椭球的点之间的测地线点 39、m_tba2b.m - 用于安装高分辨率的高程数据库 40、m_vec.m - 花式箭头 部功能〔并不意味着是用户可调用〕 1、private/ mp_azim.m - 方位角预测 2、private/ mp_cyl.m - 圆柱投影〔赤道〕 3、private/ mp_conic.m - 圆锥投影 4、private/ mp_tmerc.m - 横向圆柱形投影 5、private/ mp_utm.m - 椭圆通用横轴圆柱投影 6、private/ mp_omerc.m - 斜圆柱投影 7、private/ mu_util.m的 - 各种实用程序 8、private/ mu_coast.m - 例程来处理的海岸线 9、private/ mc_coords的 - 坐标转换 10、private/ clabel.m - 补丁的版本的clabel〔MATLAB V5.1版本中不包含的功能,不同的文本属性〕。 11、private/ m_coasts.mat- 海岸线数据 HTML文档 1、map.html - 文档介绍 2、private/ mapug.html - 用户指南 3、各种GIF - 例子 13。问题和错误 1、运行M_Map MATLAB5.0〔学生版本?〕有时会产生错误,因为5.0的各种错误和“功能〞,在以后的版本中不会出现。其中特别是又冒出了有时无法找到m_coast.m。最简单的解决方法是把/ m_map /private添加到您的路径,以及。。/ m_map〔MATLAB可以在以后的版本中找到的mat-file〕。 2、在PC上运行M_Map Matlab5.1有时会产生大量的 > Warning: Divide by zero. 消息。这是由于在Matlab中的一个错误〔实际上是由于使用的编译器TMW〕,结果在一个不正确的警告标志设置时,把一些数字变成NaN。您可以放心地忽略这些错误,并等待V5.2. 3、如果绘制的数据为白色,这将变为黑色在PostScript输出。这是由于打印 命令的运作。为了防止这种情况,设置如图背景为白色,即 set(gcf,'color','white') 4、当你用充满轮廓,一般来说奇怪的前瞻性要发生。 出于*种原因,这已经是一个孔,用于各种奇怪的错误在MATLAB的荣耀。他们中的大多数涉及以*种方式contourf补丁交互的方式,地图背景,和“渲染器〞〔部的MATLAB代码,顶一下〕如何工作的,或不能正常工作。不幸的是,我不能想方法解决该问题,在任何情况下,但如果你ASEE奇怪的东西,尝试: 在m_grid后调用 set(findobj('tag','m_grid_color'),'facecolor','none') 或 set(gcf,'renderer','opengl'); 〔在Uni*下,你可能在启动MATLAB后就需要执行这一步〕 5、事情没有正确显示在TIFF输出。MATLAB使用Ghostscript来隐蔽,从ps到多种格式的。但他们的版本有一些问题。这是更好地打印到PostScript并进展转换〔例如,TIFF〕自己。 14。OCTAVE兼容性问题 从他们的:“ GNU倍频是一个高层次的解释型语言,主要用于数值计算[...],Octave语言非常类似于Matlab,因此,大多数程序很容易移植。“ M_Map目前运行在Octave之类的。在M_Map 1.4fa,一些小的不兼容已经解决〔主要是拼写出完整的名称,图形对象的属性,而不是通过缩短,但是唯一的版本允许在MATLAB中〕,所以它不会立即轰炸。但是,仍然有功能,要么不工作,或工作不正常。 注:因为“private〞子目录不落实〔如倍频3.2.3〕,您必须添加m_map /private 子目录明确的路径: 使用 addpath [whatever]/m_map addpath [whatever]/m_map/private 功能不工作,或者不能很好的工作,包括: 1、Octave line命令不承受矩阵* / Y参数。这意味着你的代码可能需要改变被称为m_line时。 2、3D补丁功能没有完全实现在八度。这意味着,是看fancy bo*轮廓将无常工作,所以这些都被禁用在M_Map如果它认为倍频正在使用。 3、2D补丁的功能还很不完善。填充的补丁并不总是正确填写。这意味着,充满曲折的海岸线,或填充的轮廓,有时只是看错了。坚持线图。 4、在八度线对象的裁剪功能是不完善的。有时的情节外边界限没有画出,即使在'clipping' is set to `'off'。与它共处。 5、简单的水深称为m_elev来自一个置的的Matlab演示。Mat file and this is not available in Octave. 6、物“前面〞或“落后〞其他的东西,图形并不总是正确呈现在其前面或后面。 7、有时文本标签的对齐方式〔特别是纬度/经度网格〕可以是一个有点乖僻。与它共处。 8、阴影和有斑点的轮廓要求有关单位为轴线的“点〞,但你可以改变单位属性设置为“点〞,它似乎并没有改变返回的数字的位置。因此,防止阴影或斑点。 15、在上一版本以来的变化 1、最后包括m_pcolor。其实我已经做到了这一点很久以前,但也有一些哲学上的原因不 - 它并没有真正做“正确〞的事情。但另一方面它做了一些东西〔我给的例子〕 2、地磁/地理坐标系统。让我知道,如果你使用这个。这是一个有趣的事情增加,但也许是浪费时间... 3、超椭球的准确的测地线! 4、斑点的海岸线老式的手工绘制的外观 5、一个SHAPEFILE读者。 返回首页 最后修改4/Dec/2011。问题和意见richeos.ubc.ca的 因篇幅问题不能全部显示,请点此查看更多更全内容