司若辰 基于MATLAB的地图投影设计Word文件下载.docx
《司若辰 基于MATLAB的地图投影设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《司若辰 基于MATLAB的地图投影设计Word文件下载.docx(53页珍藏版)》请在冰豆网上搜索。
![司若辰 基于MATLAB的地图投影设计Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/11/337d640e-0e15-40ac-9a52-6ae3e6367a89/337d640e-0e15-40ac-9a52-6ae3e6367a891.gif)
本人签名:
日期:
摘要
地图投影是绘制地图重要的数学基础,没有地图投影,地图就失去了可量算性这一重要性质,地图也就成为了一幅普通的图画,失去了实用价值。
然而,与地图投影相伴而来的往往是复杂的投影公式和繁琐的计算过程。
好在,近年来计算机技术的突飞猛进,地图投影已经可以通过计算机程序自动实现,从而把地图投影从繁重的计算工作中解放出来。
现在有许多计算机软件都能进行地图投影的相关工作,而MATLAB(若无特别说明,本文中提到的MATLAB版本均为MATLAB7.6R2008a)凭借其出众的矩阵计算和绘图能力成为了处理地图投影问题的佼佼者。
本文就将探讨运用MATLAB软件来处理地图投影相关问题的方法。
本文的研究内容主要包括以下四个方面:
1、挖掘MATLAB的相关功能,研究如何运用MATLAB实现常用地图投影的显示,对投影参数进行控制,用变形椭圆和等变形线来反映投影变形,以及在投影上绘制大圆航线和等角航线;
2、在MATLAB环境下自定义投影;
3、在MATLAB环境下探索适合中国及湖北省的地图投影;
4、研究在MATLAB环境下,运用投影的方法,来实现变比例尺地图(哈哈镜地图)。
关键词:
地图投影MATLAB中国地图变比例尺地图
ABSTRACT
Mapprojectionisanimportantmathmaticalfundationonmakingamap,withoutwhichamapwillbeunmeasurableandloseitspracticalvalue.Theformulasdealingwithmapprojectionareusuallytoocomplextocaculateforman.Thankstotherapiddevelopmentofcomputersience,wecanleavetheheavycaculationstocomputers.Therearemanycomputersoftwarethatcansolvemapprojectionproblems,andMATLAB(TheeditionofMATLABisMATLAB7.6R2008awithoutspecialannouncement)standsoutfromallthesesoftwaresbecauseofitsstrongabilitiesoncaculatingmatrixesanddrawingpictures.ThispaperwilldiscussthemethodtosolvemapprojectionproblemswithMATLAB.
Thestudyaspectsinthispaperincludes:
1、Studythebasicfunctionsrelatingtomapprojection,likehowtoshowmapsunderaspecificprojectioninMATLAB,howtosetprojectionparameters,howtoshowdistortionsviatissotanddistortioncontoursandhowtoshowgreatcircleroutesandrhumbroutesonmaps;
2、DefinenewprojectionsinMATLAB;
3、UsingappropriateprojectionstomakeChinesemapandHuBeiProvincemap;
4、MakevariablescalemapinMATLALB,basedonprojectiontheory.
Keywords:
mapprojection;
MATLAB;
Chinesemap;
variablescalemap
第1章绪论
1.1地图投影相关背景
1.1.1地图投影定义
众所周知,地球表面是一个不规则的曲面,地球椭球面和地球球面也都是不可展曲面。
要把不可展曲面上的图形信息映在地图平面上,就需要运用到地图投影,这也是地图投影的主要矛盾。
从广义的角度看,所谓地图投影,就是建立平面上的点(用平面直角坐标或极坐标表示)和地球表面上的点(用纬度和经度表示)之间的函数关系,用数学式表示即为:
1.1.2地图投影分类
地图投影可以依据其外在和内在的特征来进行分类。
前者表现在投影平面上经纬线投影的形状上;
后者则表现在投影内含的变形性质上。
地图投影按经纬线形状分类可分为圆柱投影、圆锥投影、方位投影、伪圆柱投影、伪圆锥投影、伪方位投影和多圆锥投影七种,它们各自的特点如下表1.1-1。
表1.1-1按经纬线形状进行的投影分类
投影种类
经线形状
纬线形状
限定特征
圆柱投影
平等直线
经纬线正交
圆锥投影
直线束
同心圆弧
经线间隔相等,交于纬线圆心
方位投影
同心圆
经线夹角等于经差,交于纬线圆心
伪圆柱投影
对称曲线
伪圆锥投影
伪方位投影
多圆锥投影
同轴圆弧
以上七种投影按投影轴与地球的位置关系不同,还可细分为正轴、斜轴和横轴投影;
按投影面与地球的位置关系可细分为切投影和割投影。
地图投影按变形性质分类可分为等角投影、等距离投影、等面积投影和任意投影。
前三者分别在角度、沿纬线方向的距离、面积上变形为零,任意投影不具备前三种投影中的任何一种性质。
1.1.3我国地图投影学的发展
地图投影是地图重要的数学基础,也是地图制图学的重要组成部分,在我国地图制图学发展中也处于较为领先的地位。
我国地图投影的发展主要集中在建国后的三十年。
建国初期及二十世纪五十年代期间,我国的地图投影学科以引进和学习为主。
在此期间译制的国外教材和专著包括《数学制图学》、《数学制图学实习材料》、《地图投影法》等。
同时,我国方俊教授出版的《地图投影学》也成为当时地图投影领域重要的文献资料。
五十年代后期,我国的学术期刊《测绘学报》、《测绘通报》、《测绘译丛》等都刊登了许多地图投影方面的文章,为我国地图投影的发展起了积极作用。
同时,我国一些测绘类院校也陆续出版了《数学制图学》、《地图投影》等书籍,对提高地图投影学科教学质量作出了不小的贡献。
从五十年代后期到七十年代末,我国的地图投影研究者们在地图投影理论和实践应用方面都取得了好的成果,一批相关论文和专著也随之出版发表,使我国地图投影学科有了全面而深远的发展。
近十几年来,变比例尺地图投影也逐渐成为人们研究的热点。
1.2本文的研究内容
传统的手工地图投影计算及展绘工作费时费力,现在随着计算机技术的飞速发展,地图制图工作也已经由传统的手绘方式转向更高效的计算机制图,然而计算机环境下的地图投影方面问题却鲜有人研究,相关的文献也不多,仅有的一些相关文献也是十几年前的“古董”,现势性不强。
本文将研究把当今工程设计中十分流行的软件MATLAB应用到地图投影领域,以提高地图投影研究及应用的效率。
本文将基于以下四个方面进行研究:
1、MATLAB下地图投影的基本应用。
研究在MATLAB环境下处理基本的地图投影问题,如投影的选择,投影参数的设置,投影变形的显示,大圆航线和等角航线在投影中的应用等;
2、自定义投影。
在MATLAB中编写投影公式,定义新的投影;
3、适合区域特点的地图投影研究。
研究适合中国和湖北省区域特点的地图投影;
4、变比例尺地图投影。
研究具有将地图特定部分以夸张方式显示特性的变比例尺地图投影。
第2章MATLAB的地图投影系统构架
2.1MATLAB简介
MATLAB最早是在20世纪70年代由美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程的负担而编写的,并由MathWorks公司于1984年正式推向市场。
经过几十年的发展,MATLAB已成为国际控制界的标准计算软件,在信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多领域得到了广泛的应用。
MATLAB中数据的基本单位是矩阵,这与数学、工程中所使用的形式十分相似,因此,用MATLAB解算问题也就比用C、FORTRAN等其它语言更加方便。
MATLAB软件具有以下特点:
1、可用于技术计算;
2、可对代码、数据和文件进行管理;
3、交互式工具可以按迭代的方式探查、设计及求解问题;
4、数学函数可用于解决线性代数、统计、筛选、优化、数值积分、傅里叶分析等方面问题;
5、二维、三维绘图功能可用于数据的可视化;
6、有各种工具来构建自定义的图形用户界面;
7、支持将基于MATLAB的算法与外部应用程序和语言(如C、C++、JAVA、FORTRAN等)的集成;
8、不支持大写输入,内核仅支持小写。
2.2MATLAB与地图投影的联系
地图投影工作中最重要的两部分就是计算和绘图。
大多数软件无法在这两方面都做得比较出色。
例如C、C++等语言软件虽然可以用来编程对地图投影进行自动计算,但绘图能力不强,而且代码比较复杂,需要较高的编程能力;
而CORELDRAW这样的图形软件虽然绘图能力出众,但是完全没有数值计算能力,也不能用于地图投影。
和其它软件相比,MATLAB在计算和绘图两方面的功能都很强大。
在计算方面,MATLAB包含了大量计算算法,拥有600多个工程中要用到的数学运算函数。
这些函数包含了从简单的基本函数到诸如矩阵、向量、傅里叶变换这样的复杂函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是前沿研究成果,且都经过了各种优化和容错处理。
MATLAB可以用来代替像C、C++这样的底层语言,而且使用MATLAB还可以大大减少编程的工作量。
在绘图方面,MATLAB具有方便的数据可视化功能,可以将向量和矩阵用图形表现出来。
MATLAB还能进行二维及三维可视化、图像处理、动画和表达式作图。
与老版本相比,新版本的MATLAB在图形处理功能有了很大的改进和完善,不仅完善了原有功能,还添加了图形光照处理、色度处理、四维数据的表现等其它软件没有的功能。
同时,MATLAB还支持图形对话这样的特殊可视化要求。
新版MATLAB在图形用户界面上也做了很大改善,更加方便用户使用。
除此之外,MATLAB还具有以下优势:
1、友好的工作界面
MATLAB中包含了一列工具,如MATLAB桌面、命令窗口、历史窗口、编辑器、调试器、路径搜索和浏览器。
这些工具中许多都是采用的图形用户界面,方便用户使用MATLAB中的函数和文件。
随着MATLAB的发展和不断升级,其用户界面也越来越精制,越来越接近WINDOWS的标准界面,人机交互性更强,操作更简便。
2、简单的程序语言
MATLAB是一个高级的矩阵语言,具有控制语句、函数、数据结构、输入输出和面向对象的编程特点。
用户既可以在命令窗口中输入语句同步执行命令,也可以先将程序编写成一个M文件后再运行。
新版本的MATLAB是基于C++语言基础上开发的,因此其语法特点与C++类似,并且使用比C++更方便简单,更加符合科技人员对数学表达式的书写方式,即使是非计算机专业人员也能很快掌握使用。
另外,MATLAB语言可移植性好,拓展性强,使之能够深入到科学研究及工程应用的各个领域。
3、实用的工具箱
MATLAB中包含了许多针对专门领域的功能强大的工具箱。
MATLAB中的工具箱种类多样,有用于小波分析的,有用于信号处理的,有用于仿真的等等,当然也有解决地图投影问题需要用到的地图工具箱。
这些工具箱一般是由特定领域的专家开发的,用户可以直接使用工具箱来解决相应问题,而不再需要自己从底层开始编写程序代码。
既能计算又能绘图,而且使用简单方便,MATLAB的确是处理地图投影问题的好工具。
2.3系统构架
本次设计拟设计两个系统:
基本投影系统和变比例尺投影系统。
基本投影系统计划实现以下地图投影的基本功能:
1、用常用的地图投影显示地图;
2、对基本投影参数进行控制;
3、用等变形线和变形椭圆显示投影变形;
4、在地图上绘制大圆航线和等角航线;
5、查看当前投影的详细信息;
6、用合适的默认方式显示中国地图和湖北省地图。
其系统框架图如下图2.3-1。
图2.3-1基本投影系统框架图
变比例尺投影系统计划实现三个功能:
1、设置比例尺差别程度;
2、设置地图显示方式(中心放大、中心缩小及正常显示);
3、设置地图显示的中心位置。
其系统框架图如下图2.3-2。
刷新
图2.3-2变比例尺投影系统框架图
第3章地图投影的基本应用研究
3.1在MATLAB中选择投影看世界
MATLAB地图工具箱中提供的投影包含了圆柱、圆锥、方位、伪圆柱、伪圆锥、伪方位、多圆锥等各类型投影共计72个。
对于这72种投影,用户可以直接使用。
在MATLAB命令窗口中输入命令maps,即可得到这72种投影的详细信息(如图3.1-1)。
图3.1-1MATLAB支持的地图投影信息
设置投影方式要用到axesm函数。
它的功能是创建一个基于地图数据结构的地图坐标系(通常为平面直角坐标系),用来显示地图。
MATLAB中地图坐标系的所有属性都由axes以及get和set函数控制。
地图坐标系的属性值由axesm函数在坐标创建时定义,并可以通过getm和setm对其特性进行查询和修改。
axesm函数使用格式如下:
axesm(投影名称,属性名称,属性值,……)
其中投影名称为MATLAB提供的72种投影名称的简写,即图2-1中的“IDSTRING”一列。
属性一次可以设置多个,未设置的将按MATLAB默认方式处理。
关于属性的设置将在本章第二节做详细说明。
下面让我们用一个例子来看看如何在MATLAB中使用地图投影来显示地图信息。
首先,加载地图数据。
在MATLAB命令窗口中输入以下命令完成世界地图数据的加载:
landareas=shaperead('
landareas.shp'
'
UseGeoCoords'
true);
然后,用axesm函数选择投影方式:
axesm('
mercator'
'
Frame'
on'
Grid'
);
最后,用geoshow函数显示地图:
geoshow(landareas);
结果为墨卡托投影下的世界地图,如图3.1-2。
图3.1-2墨卡托投影下的世界地图
3.2投影参数的控制
3.2.1投影参数
投影参数是控制地图投影的范围、方向、变形分布等属性的一系列变量。
在同样一种投影下,如果投影参数不同,地图的显示效果也会不同。
MATLAB中对投影参数的控制主要也是通过axesm函数实现的,操作方法很简单,只需在投影名称后加上要设置的参数名称及参数值即可。
例如在MATLAB命令窗口输入以下命令即可得到图3.2-1。
MapLatLimit'
[-1080],'
MapLonLimit'
[0180],'
这个例子对投影显示范围进行了设置,使地图只显示南纬10度到北纬80度及东经0度到东经180度范围内的内容。
图3.2-1投影范围的设置效果
MATLAB支持的地图投影参数主要有以下几种。
1、AngleUnits
角度单位,用于在角度和弧度之间切换地图坐标系中角度(包括纬度和经度)的单位。
其默认值是’degree’(角度)。
2、Aspect
投影方位,控制地图投影的基本方向。
’normal’是其默认值,此时地图投影中的北方向向上,如图3.2-2;
而在’transverse’方向下的投影,北方向向右,如图3.2-3。
图3.2-2北方向上
图3.2-3北方向右
3、FalseEasting
该参数会对地图投影值在水平方向做整体平移,以确保某些地图投影中的值非负。
例如在通用横轴墨卡托投影中,该参数常被设为500000米。
4、FalseNorthing
与上一个参数功能类似,不过它是将地图投影值在竖直方向上做整体平移,同样是为了确保地图投影的值非负。
在通用横轴墨卡托投影中,对于南半球地区,该参数常被设为10000000米。
5、MapLatLimit
用该参数可以设置地图纬度方向的显示范围。
对大多数投影来说,可以显示可以达到[-9090],而对于某些投影,如lambert投影,由于靠近南极地区形变无穷大,其显示范围不能达到-90度(具体程度随其标准纬线不同而不同)。
6、MapLonLimit
该参数是用来控制地图经线方向的显示范围。
对于大多数投影,显示范围可以达到[-180180],而对于某些投影,如横轴方位投影,最多只能显示经差180度以内的内容。
7、MapParallels
该参数的作用是设置地图投影的标准纬线。
图3.2-4和图3.2-5均为lambert投影,前者标准纬线为系统默认的15度和75度(割圆锥投影),后者标准纬线设置为45度(切圆锥投影)。
从两幅图的等变形线可能看出标准纬线改变后投影形变分布的明显不同。
图3.2-4标准纬线为15度和75度的lambert投影
图3.2-5标准纬线为45度的lambert投影
需要注意的是虽然理论上可以对几乎所有投影设置标准纬,但MATLAB中可以设置标准纬线的地图投影并不多,一般只能对圆锥投影,如lambert投影,设置标准纬线。
其它投影则采用MATLAB默认的标准纬线,不能更改。
用户可以先对投影信息进行查询进而了解所用的投影能否设置标准纬线。
例如在MATLAB命令窗口输入以下命令:
h=axesm('
);
getm(h,'
nparallels'
)
得到结果为:
ans=
1
nparallels表示投影可设置的标准纬线数量。
MATLAB只支持对nparallels值为1或2的投影设置标准纬线,对值为0的投影设置标准纬线无效。
8、Origin
该参数为一个三维向量[latitudelongitudeorientation],latitude和longitude控制投影中心位置,orientation控制投影的北方向的旋转。
Origin'
[306030],'
geoshow(landareas)
得到的结果投影中心为北纬30度,东经60度,北极方向与竖直方向夹角为30度,如图3.2-6。
需要注意的是,该参数不适用于圆锥投影。
另外,设置了该参数后,MapLatLimit和MapLonLimit就不起作用了。
图3.2-6投影中心及北方向的设置效果
3.2.2边框与网格参数
MATLAB中除了可以对地图投影的参数进行设置,还可以对地图边框和网格进行控制。
常用的参数有以下几种:
1、Frame
用于控制地图边框的开关。
2、FedgeColor
用于控制地图边框的边线颜色。
3、FfaceColor
用于控制地图边框的填充色。
4、Grid
用于控制地图网格(经纬线)的开关。
5、Gcolor
用于控制地图网格的颜色。
6、MeridianLabel
用于控制网格纬度注记的开关。
7、ParallelLabel
用于控制网格经度注记的开关。
8、MlabelParallel
用于控制经度注记的显示位置。
9、PlabelMeridian
用于控制纬度注记的显示位置。
10、MlabelLocation
用于控制经度注记的间隔。
例如在MATLAB窗口输入以下命令:
axesm('
Mapprojection'
FedgeColor'
r'
FfaceColor'
[.9.91],'
Gcolor'
b'
MlabelParallel'
south'
PlabelMeridian'
west'
mlabellocation'
60,'
meridianlabel'
parallellabel'
结果如图3.2-7。
图3.2-7网格及边框的设置效果
3.3投影变形
地球表面是一个不规则的曲面,即使把它一个椭球面或球面,也都是不可展面。
因此,要把这样的不可展面表现致电平面上,就会不可避免地产生变形,即投影变形。
不同的投影投影有着不同的变形特征,按这些不同的变形特征可以把地图投影分为等角投影、等距离投影、等面积投影和任意投影这四大类。
了解投影变形的方法主要是通过变形椭圆和等变形线。
3.3.1变形椭圆
为了了解投影变形的特征,我们先在投影前地球表面等间隔地设置一系列微分圆。
投影后,这些微分圆将呈现为一系列大小、形状、方向不同的微分椭圆。
根据这些微分椭圆的不同形态就反映了投影变形的不同特征。
等角投影的变形椭圆表现为圆形,等距离投影的变形椭圆在纬线方向上圆心间距相等,等面积投影的各个变形椭圆面积相等。
该方法是在19世纪由法国数学家尼古拉斯底索(NicolasTissot)提出的。
于是在国外,变形椭圆被称为Tissotindicatrices,以纪念这位伟大的数学家。
MA