M_Map:用户指南1.4版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 toolboxcache(可选)高分辨率测深数据库安装说明是在第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第二行绘制海岸线,使用1/4度数据库海岸线与更高的分辨率可以使用自己的数据库(见第7节)m_coast 可以调用不同的线路参数例如,m_coast('linewidth’,2,“color”,’r');m_coast(’线宽',2,“颜色",'r’);ﻫ画了较粗的红色海岸线。
填充的的海岸线也可以画出,使用“patch(修补)”选项(后面的任何通常的PATCH属性/值对).m_coast(’patch',[.7 7],’edgecolor','none’);m_coast(’修补’,[0.7 07 0.7],'edgecolor’,’没有’);用灰色填充和无边框绘制的海岸线第三条语句是叠加网格.虽然有很多可能的选项,可用于自定义外观的网格,默认可以随时使用(在本例中)在第4节讨论这些选项你可以得到一个使用GET语法的选项列表:m_grid get它的作用有点像(GCA)的语法进行有规则地图形绘制最后,假设您想要显示和标注的位置,也就是说,一个停泊在129W,48 30'N.[X,Y]=m_ll2xy(—129,48.5);ﻫline(X,Y,’marker','square’,'markersize’,4,'color','r');ﻫtext(X,Y,’ M5’,'vertical','top');m_ll2xy(和它的逆m_xy2ll)用于经度/纬度坐标转换来与投影匹配各种裁剪选项,也可以指定在转换到投影坐标如果你愿意接受默认的剪切设置,您可以使用内置的功能m_line和m_text的:m_line(-129,48。
5,’marker’,'square’,’markersize',4,'color','r');ﻫm_text(—129,485,’ M5','vertical’,’top');最后(!),我们可能需要稍微改变网格的详细信息需要注意的是,在给定的地图只能被初始化一次.clfﻫm_coast(’patch',[.7 .7 .7],’edgecolor’,'none');ﻫm_grid('xlabeldir',’end','fontsize',10);m_line(—129,48.5,'marker’,'square',’markersize’,4,’color’,'r');m_text(-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〈gitude>',center_long〉 ﻫ 〈,'lat ﻫ <,'rad〈ius>', ( degrees | [longitude latitude] )> <,'rec〈tbox〉’, ( ’on' | ’off' )> 您还可以得到关于当前投影的详细信息.例如,为了看什么默认参数为正弦投影,我们首先对它进行初始化,然后使用“设置" 选项: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等面积圆锥.这有时是有用的,当你有加拿大的省或美国各州数据(例如,从一个地理信息系统软件包),这往往是使用这些投影这是不可能的,这将是在正常使用中的一个问题1 方位预测方位角的预测是在地球上的点被投射到一个平面的切平面地图使用这些预测的方向或从中心点到所有其他点的方位正确显示的属性大圆路线穿过中心点显示为直线(虽然大圆不穿过中央的点可能会出现弯曲)通常,这些地图绘制的圆形边界.下面的参数需要定义一个方位投影:<,’lon',center_long> <,'lat’, center_lat>这些参数定义了地图的中心点指定的经度是在地图的中心是垂直对齐的,其北端在地图的顶部(但看到下面的选项rotangle, )<,’rad〈ius>’, ( degrees | [longitude latitude] )>这定义地图的半径长度。
要么以度的角距离,可以给定的(例如,90为一个半球),或者可以指定的边界上的一个点的坐标〈,’rec〈tbox>', ( ’on' | ’off’ | 'circle' )>默认情况下是在一个圆形边界附上地图(使用后两个选项选择),但也可以指定一个矩形然而,矩形地图通常是更好的使用某种形式的圆柱或圆锥投影绘制.<,'rot〈angle〉’, degrees CCW>这个是旋转图形以使中央的经度是不垂直的l Stereographic立体投影是等角的(正形投影的),但不等面积此投影往往用于极地区域l Orthographic这既不等于面积也不是等角投影,但类似地球的透视图l Azimuthal Equal-Area有时也被称为兰伯特方位角等面积投影,这个映射是等面积的,但不保形l Azimuthal Equidistant(等方位角)这既不等于面积也不是等角投影,但所有的从中央点的距离和方向都是真的l Gnomonic 这既不是等面积也不是等角投影,但在地图上(而不仅仅是那些通过中心)所有直线都是大圆航线然而,在地图的边缘有很大程度的失真,因此,最大的半径应至多保持相当小 - 20度或30度。
l Satellite这是地球的立体图,在一个特定的高度由一个卫星看到指定半径的地图,而不是指定的观点高度: <,'alt<itude>‘,altitude_fraction〉分配给此属性的数值代表地球半径为单位中的视点的高度.例如,一个卫星的轨道半径为3地球半径将具有2的高度2 圆柱和伪圆柱投影 圆柱投影形成全球各地的包裹,只能沿着一些大圈接触到一个平面上的投影点这些都是非常有用的投影显示巨大的横向范围的区域,也常用于全球中纬度地区唯一的地图.这里还包括两个伪圆柱形投影,sinusoidal和gall—peters和圆柱形投影有一些相似之处(见下文)这些地图通常绘制矩形边界(异常的正弦和有时横向莫卡托).l Mercator (墨卡托)这是一个保角(保形)的地图,基于赤道上的切柱面在此投影的直线方位线都是罗盘吸纳(即轨道的过程中恒定的轴承)以下属性影响投影:<,’lon任何经度限制都可以设置,可以设置或定义的中心经度意味着一个全球性的地图.<,’lat纬度限制是最通常在两个N和S的纬度相同,并且可以指定一个单一的值,但也可用于(如果需要的话)不平等限制。
l Miller Cylindrical(米勒圆柱)这既不是等面积也不是等角投影,但“看起来不错”的世界地图.属性是与上面墨卡托的是相同的.l Equidistant cylindrical 等距圆柱形 这既不是等面积也不是等角投影它由等距的纬度和经度线,并且是非常经常用于迅速绘制数据它包括在这里只是让这样的地图可以利用的网格生成程序也称为Plate Carree属性同上l Oblique Mercator 斜轴墨卡托斜轴墨卡托投影产生的大圆相切时是任意的这是一个有用的,例如,漫长的海岸线或其他笨拙形状或对齐地区的投影它是保形的,但不是面积相等下面的属性管理这个投影:〈,'lon', [ L1 L2 ]>两个点指定一个大圆,因此限制了本地图(这是假设所需的,附近的区域的最短的两个圆弧)2点(G1,L1)和(G2,L2)在该中心的地图(取决于’方向’属性)的顶部/底部或左/右两侧<,'asp〈ect〉’,value>这指定大圆切线相垂直的方向中的地图的大小,作为示出的长度的比例纵横比为1的查询结果在一个正方形的地图,较小数字导致瘦地图。
高宽比> 1是可能的,但不推荐<,'dir<ection>',( 'horizontal’ | ’vertical’ )这指定是否大圆相切水平在页面上(短宽地图),或垂直高高瘦瘦的地图l Transverse Mercator (横轴墨卡托投影)横轴墨卡托是一个特殊的情况下,斜轴墨卡托投影大圆相切时,是沿着子午线的经度,因此它是保形的它经常被用于大型地图和图表下面的属性解释这个投影:<,’lon〈gitude>',[min max]> ﻫ〈,'lat〈itude>',[min max]>这些指定的地图上的限度〈,’clo<ngitude>',value>虽然一般最有意义的是指定中央子午线作为子午线的切线(这是默认的),某些地图分类系统(noteably UTM)只使用一组固定的中央经度,可能无法在地图中心<,'rec〈tbox>', ( 'on’ | 'off' )>地图的限制可以基于纬度/经度(默认值),或在地图上的边界可以形成一个确切的矩形差异是小的大比例地图注意:虽然这个投影与通用横轴墨卡托投影(UTM)类似,后者实际上是椭圆形的性质l Universal Transverse Mercator (UTM) (通用横轴墨卡托投影(UTM))UTM地图适用于(经度不到几个度)小区域的全球高品质的地图。
这是一个椭圆形投影选项是类似于那些横轴麦卡托投影,另外添加<,'zon如果没有指定这些是自动计算的使用下列属性,默认为“正常"的椭球,球形地球的半径为1个单位,但也可以选择其他选项:<,'ell<ipsoid〉’, ellipsoid〉对于列表中的可用椭球尝试m_proj(“set”,“UTM”).UTM和所有其他的预测之间的最大区别是,不同于’正常' 的投影坐标是在米的东向和北向要充分利用这一点,它往往是有益,调用m_proj,将‘rectbox’设置为‘on’,而不是使用所产生的m_grid(由于正常的MATLAB网格将成为以米为单位)长/纬度格l Sinusoidal此突起通常称为“伪圆筒状”,由于纬圈线显示为直线,类似于其外观在圆柱形凸起赤道相切然而,子午圈弯曲在一起呈现投影以正弦的方式(因此而得名),使得地图是等面积的l Gall—Peters纬圈和经圈都显示为直线,但纵坐标被扭曲,因此该区域被保留这对热带地区是非常有用的,但在极地地区是极端的失真l Conic Projections (圆锥投影)圆锥投影,导致投影到圆锥体包裹球体周围。
圆锥体的顶点位于球体的旋转轴线该圆锥体不是在一个单一的纬度角正切,就是可以在两个分离的纬度横切球体.这是一个有用的在中纬度地区大的东西方向的投影以下属性影响这些投影:〈,'lon<gitude>',[min max]> 〈,'lat’,[min max]>这些指定的地图上的范围.<,'clo〈ngitude〉’,value>在页面上显示为一个垂直的中心经度的默认值是平均的经度,虽然它可能被设置为任何值(甚至超出限制之一)<,’par<allels>’,[lat1 lat2]〉标准纬线可以被指定一个或两个平行线被给定,默认的是一个并行的平均纬度<,'rec<tbox>', ( ’on’ | 'off' )>地图的限制可以基于纬度/经度(默认值),也可以是地图边界形成了一个确切的包含给定的限制的矩形除非该地区被映射的是小的,最好是离开这个“关闭”默认情况下是使用球形地球模型的映射转换然而,椭球坐标系也可以被指定这往往是有用的,只有做坐标转换(例如,如果一个特定的网格数据库,在这种投影,你想找到纬度/经度数据),因为是不可能用眼睛看到在一块土地上的差异使用特定的椭球体可以选择使用以下属性:〈,'ell', ellipsoid>对于列表中的可用椭球,尝试m_proj(’set',’albers'),可以得到如下的选项: normal sphere grs80 grs67 wgs84 wgs72 wgs66 wgs60 clrk66 clrk80 intl24 intl67 l Albers Equal—Area Conic (阿尔伯斯等面积圆锥)这一投影是相等的面积,但不保形l Lambert Conformal Conic (等角圆锥投影)此投影是保形的,但不等面积l Miscellaneous global projections (多方面的全球投影)有一些真的不适合上述任何类别的投影。
大多数这些都是全球投影(即它们表现出的是整个世界),而他们也被设计成“悦目”我不知道有什么用,他们是一般,但他们却很好的标志!l Hammer-Aitoff弯曲的经线和纬线等积投影l Mollweide也被称为椭圆或Homolographic的等面积投影.这个投影钟纬线是直(平行)的请注意,例如图4显示了一个相当复杂的使用,以减少失真,更标准的地图,可使用m_proj(’mollweide’);m_coast(’patch’,'r’);m_grid('xaxislocation','middle');l Robinson(罗宾逊)不等区域或保形,但所谓的“顺眼”.l 是的,但我使用什么样的投影?嗯,这取决于真正大面积映射通常情况下,对整个世界的地图使用墨卡托投影,虽然经常米勒圆柱投影看起来更好,因为它不过分强调极地地区另一种选择是的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'); % Example for stereographic projectionm_coast;m_grid;l 地图比例尺M_Map通常尺度的地图,它完全符合在当前轴如果你只是想要一个漂亮的图片(这是大部分的情况下),那么这正是你需要的另一方面,有时你想打印的东西,在一些精确的比例(也就是说,如果你真的喜欢坐在你的办公桌,一把尺子和一张纸,试图找出相隔多远,曼谷和东京).使用的m_scale的原始本—为1:25万地图,请调用:m_scale(250000);之后,你画的一切(要小心 -—— 一个1:250000的世界地图是比8.5“X11”的纸大得多的)这个选项通常只适用于大比例尺的地图,即非常小的区域的地图)如果你想知道目前的尺度比例,不带任何参数调用m_scale将计算并返回该值要返回到默认缩放:调用m_scale(’auto') PS -如果你想找到距离从曼谷到任何地方,画一个以曼谷(13 44'N,100 30’E)为中心的azimuthal equidistant projection of the world(世界等距方位投影),选择一个比较小的比例,像1:200,000,000) 。
另一种选择是使用范围环绕,见例11.l 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];clfsubplot(121);m_coord('IGRF2000-geomagnetic'); % Treat all lat/longs as geomagneticm_proj('stereographic');m_coast;m_grid;m_line(lon,lat,'color’,'r'); % "lat/ln" assumed geomagnetic on the geomagnetic mapm_coord(’geographic'); % Switch to assuming geographicm_line(lon,lat,’color','c'); % Now they are treated as geographicsubplot(122);m_coord(’geographic'); % Define all in geographicm_proj('stereographic');m_coast;m_grid;m_line(lon,lat,'color’,’c’);m_coord('IGRF2000-geomagnetic'); % Now assume that values are in geomagneticm_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 );orm_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_MAX LAT_MIN LAT_MAX]);返回高度的Z的矩形矩阵在确定的经纬度上。
4、 自定义轴1、网格线和标签为了获得完美的网格,你可能会想要尝试不同的网格选项这里两个功能是有用的:M_GRID可以用来绘制一个网格,而M_UNGRID删除当前网格(但留下的海岸线和用户指定的数据单).尝试:m_proj('Lambert’);m_coast;m_grid;获得北美的兰伯特圆锥投影.现在尝试:m_ungrid海岸线仍然存在,但网格已经消失,轴显示原始的X / Y投影坐标现在试试这个:m_grid('xtick',10,’tickdir',’out’,’yaxislocation','right',’fontsize',7);上面的各种选项,可以改变:’box’,( ’on' | ’off’ | 'fancy' )这指定是否绘制轮廓框三种类型的轮廓框可供选择:’on',默认的是简单的线条花哨的外形框有两种类型,如果“tickdir是’in’,然后交替黑色和白色斑块(见例2).如果'tickdir’被设置为’out’,然后一个更复杂的线图案被绘制(见实施例6)Fancy boxes一般仅适用于地图范围内的纬度/经度限制(即不是方位的投影),但如果选择此选项不恰当,会发出一条警告消息。
’xtick',( num | [value1 value2 ])这指定的经度网格的数目/位置如果指定一个单一的数字,绘制网格线/值约这个数字的等距的位置(数字只是近似,因为M_GRID试图找到“好"的时间间隔,即轮连为单位)确切位置可以通过使用指定的位置的值的矢量有一个analagous ’ytick‘的 属性’xticklabels',[label1;label2 ..]特殊标签可以被指定标签可以是数值的(然后会被格式化为M_GRID的),或字符串值没有变化.是一个analagous ’yticklabels' 属性'xlabeldir', ( ’middle’ | 'end’ )经度标签要么middled,位于网格线的端部上(垂直于这些线),要么来回绘制向外向后延伸端部的那些线,即与线的走向平行有一个analagous 'ylabeldir’属性'ticklen',value指定标记的长度(绘图宽度的一小部分)’tickdir',( 'in' | 'out’ )指定刻度线角度向内或向外如果'box' 设置为'fancy’,会指定fancy的轮廓框的形式’color’,colorspec 'linewidth', value 'linestyle', ( linespec | 'none' ) 'fontsize',value ’fontname',name指定网格和它的标签的不同的线/文本属性。
'XaxisLocation’,( ’bottom' | 'middle' | 'top' )指定X轴将被绘制在哪里,无论是在底部(southermost)结束,在顶部(北端)结束,或在中间'YaxisLocation',( 'left' | 'middle' | ’right’ )指定Y-轴将被绘制在哪里,无论是在的左(westernmostmost)结束,在正确的结束(东端),或在中间2、标题和X / ylabels标题和X / ylabels可以被添加到地图,在常规的方法中使用title和X / 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节和53节中描述的投影转换例程一旦投影坐标被转换成原始的经度/纬度坐标,标准Matlab的绘图函数就可以使用.地图被绘制到适合的图形轴的边界内因此,他们的比例规模是有些随意的如果你有兴趣在地图上给定比例,例如1:200000或类似的东西,你可以这样做使用基本的m_scale,请参见 第2数据单元都是投影坐标的,这些距离被表示为地球半径的一小部分要得到一个地图两点之间的“距离”,投影坐标系统中在两点间使用笛卡尔距离,然后乘以你最喜欢的值为地球半径,通常大约6370公里(例外- UTM投影使用的北向和东向的坐标以米为单位,所以没有转换是必要的)。
注意:有时会出现的一个问题是,因图中含糊不清的经度值数据不会出现例如,如果情节经度限制为[-180 180],一个点的经度,比方说,200,可能不会出现在圆柱和圆锥投影这不是一个错误包裹"曲线的剪裁处理,需要加点(而不仅仅是移动),因此与其他各种要求不匹配(如保持输入和输出矩阵大小相同,下面的转换例程)1、绘制线条,文字,箭头,补丁,舱口盖,斑点和轮廓在大多数情况下,你不需要知道实际上投影坐标是什么—-你只是想绘制在指定的经度/纬度的东西大部分的时间,你想要绘制在地图上的东西,会通过指定的经度/纬度坐标,而不是通常的X / Y位置,要做到这一点在M_Map,用m_map的对等物替换调用的plot, line, text, 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_text(LONG,LAT,'string') % Text 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_colorm_pcolor是替代p_color, 但地图边界附近的使用一定要小心理想的情况下,人会想要的数据,向上延伸至(但不交叉)的地图边界(即多边形裁剪).然而,由于以何种方式matlab的处理表面,这不容易完成相反的——除非你使用的是简单的圆柱或圆锥投影-你可能会得到一个参差不齐的边缘对于彩色的表面。
没有m_imageimage() 函数绘制数据以矩形像素,并在总体投影数据中的数据将不会出现作为矩形像素如果你想在地图上显示一个较大的像素的图像,有以下几种选择:1) 如果你的地理参考图像的纬度/经度坐标(即每个数据行是沿着一条线不断的纬度,每列一个平等经度线),那么你可以使用m_pcolor 和shading flat这是相当令人满意的(虽然它是缓慢的大图像),但你必须记住偏移坐标的像素间距的二分之一这是因为,当给定的相同的数据时,p_color 和image的不同的反应. 1、image会集中绘制像素(I,J)在(i,j)上 在X / Y矩阵的入口处2、p_color与shading flat会绘制一个选定的在(i,j),(i+1,j),(i+1,j+1),(i,j+1)之间网格用X / Y矩阵与坐标的数据在(i,j)的值相对应的颜色因此,一切都显得移动一个像素间距的一半来自中纬度地区的卫星数据有时候对于此是经得起检验的可以看卫星数据处理的例子2)如果你的轮廓已经被放置在一些投影中,如果你知道投影确切的参数,你可以用直接的图像调用,然后重复绘制M_Map地图例如,极轨卫星的图像往往是在极立体投影。
在这种情况下,你应该使用m_ll2xy去获得图像边角的屏幕坐标,然后将这些点在image()调用之前重复绘制你的数据.可以看这个例子提示 - 请检查海岸线overplot,以确保正常工作3、绘制轨迹线它有时是非常有用使用注释线反映船舶,飞机或卫星时间和日期的注释随时间变化的位置这是可以做到的使用:m_proj(’UTM’,'long’,[-72 -68],’lat',[40 44]);m_gshhs_i('color',’k’);m_grid(’box','fancy','tickdir','out’);% fake up a tracklinelons=[-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 trackorm_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_lldist5、转换经度/纬度投影坐标如果你想使用投影坐标(也许你想计算的地图区域或距离,或你想左上角放一个图例),下面的命令将经度/纬度坐标转换为投影坐标.[X,Y]=m_ll2xy(LONG,LAT, .。
optional clipping arguments )LONG, LAT,X和Y是相同大小的矩阵.投影坐标是等于地图中心附近的真正的距离,和表示为地球半径范围的一部分为了得到一个距离,乘以地球半径(约6370公里)唯一的例外是UTM投影提供北和东的以米为单位的坐标可能的裁剪参数:'clip’,'on’这是默认的.LONG和LAT的列被假定为形成线,而这些被剪切到地图限制范围地图以外的第一个点,因此被移动到地图边缘,并且所有其他的点转换的NaN.’clip’,'off'没有进行剪裁这有时是有用的用于调试目的.'clip’,’point'点测试对地图的限制这些范围以外的被转换为NaN,里面的都被转换为投影坐标.没有点被移动.此选项对点数据很有用(如车站位置).'clip',’patch’点测试对地图的限制.这些范围以外的变成一个确切的点在限制范围里面的被转换为投影坐标在试图绘制补丁时此选项可能有用,然而,可能不会很好地工作6、转换投影坐标到经度/纬度从投影坐标转换为经度/纬度是直接了当的:[LONG,LAT] = m_xy2ll(X,Y)没有其他的选项7、计算点之间的距离对无论是地理(经/纬度)或地图坐标(X / Y),使用函数m_lldist和m_xydist可以计算测地线(大圈)一个球形地球上的距离。
例如,DIST = m_lldist([20 30],[44 45])计算距离20E,44N至30E,45N另外,如果你要计算通过鼠标选择的两点之间的距离:[X,Y] = ginput(2); ﻫDIST = m_xydist(X,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_ringm_range_ring(-123,49,[200:200:2000],'color’,'r’);一般的,通过调用m_ungrid ANYTHING可以将m_ANYTHING的结果删除m_ungrid可以识别并删除特定元素,通过搜索“标签”属性的由各种不同的M_Map的例程给出的所有绘图元素.8、添加自己的海岸线如果你有兴趣在一个特定的区域,并希望得到比使用m_coast的海岸线更高分辨率,最佳方法是1)、从一些高分辨率的数据库,获取点的一个子集2)、转换成屏幕坐标,使用m_ll2xy,然后绘图。
有一个地方可以得到高分辨率海岸线数据的海岸线提取按照说明,在那里得到在MATLAB可读的文件中的海岸线数据,并下载到您的电脑.如果的文件保存为“coastdat”的,你可以绘制(线)使用下列内容:load coast.datm_line(coast(:,1),coast(:,2));填充的海岸线将需要更多的工作阅读说明书将海岸线数据转换成连续的划分如果你是幸运的,(即没有湖泊或其他任何东西),你可能会取得成功用如。