(本文根据MATLAB 2012A Mapping toolbox帮助文档理解整理得到,不忠于原文,意会翻译)
1 球面坐标(Spherical Coordinates)
1.1 球、球体和大地水准面(Spheres, Spheroids, and Geoids)
和地学数据打交道,就要了解必要的地理学(geographic)和大地测量学(geodetic)的概念。比如,地理学概念包括地理坐标,平面坐标;大地测量学概念包括椭球体,大地测量基准(datums)等。
尽管地球是圆的,但他并非完美球体,而是一个略扁的椭球体。对于大尺度地图而言(就是小比例尺的),这点差异几乎可以忽略不计,因此可以把地球看做是球体。然而,对于精确的大比例尺地图,就需要认真对待地球是椭球体这一事实。地球椭球体模型是一个很基本的概念,比如你在绘制高精度卫星或航空影像图,或者使用GPS系统时,都需要明确地球椭球体的概念。
1.2 大地水准面和椭球面(Geoid and Ellipsoid)
大地水准面是地球形状的近似逼近,相当于重力场等位面,与海平面相当。大地水准面是一个近似的扁椭圆,但由于重力场在局部的波动,此面也相对有所调整。具体信息参见“参考椭球体”一节。
load geoid; load coast
figure; axesm robinson
geoshow(geoid,geoidlegend,'DisplayType','texturemap')
colorbar('southoutside')
geoshow(lat,long,'color','k')
运行上述代码,获得大地水准面的图像。
大地水准面的形状对于某些计算很重要,比如卫星轨道的计算,但并不是所有地图绘制都需要考虑。尽管如此,了解大地水准面的信息有时候还是很必要的,比如你想对比从平均海平面计算的高程和GPS测量出的高程。大地水准面表示也是基准定义中固有的。
大地水准面的定义有好几种方法。常见的是给出半长轴和半短轴,也可以指定半长轴和反扁率(inverse flattening )(如上所述,地球的反扁率为1/300)或偏心率(eccentricity.)表示。无论使用哪种参数,只要包含轴长度,椭球体就是确定的,其他参数都可计算得出。椭球体参数如下图所示:
地图工具箱包含了地球的椭球体模型,同时也包括太阳,月亮和行星的。
1.3 参考椭球体(Reference Spheroids)
当地球(或其他星球)用标准圆表示时,这个球模型就叫参考球体。当用椭球体表示是,就叫参考椭球体。他们都是球状的,因此可以看做是参考球体。地图工具箱支持好几种参考球体对象,referenceSphere, referenceEllipsoid, oblateSpheroid objects, 以及较老的ellipsoid vector。
referenceSphere 对象
当使用严格的球体模型时,可采用referenceSphere 对象。当然了,椭球体对象和扁圆体对象也可以表示正球体。
默认情况下,referenceSphere返回一个没有维度的单位球体:
>> referenceSphere
ans =
referenceSphere
Properties:
Name: 'Unit Sphere'
LengthUnit: ''
Radius: 1
可通过名字来指定球体,半径的默认单位为米。
>> earth = referenceSphere('Earth')
earth =
referenceSphere
Properties:
Name: 'Earth'
LengthUnit: 'meter'
Radius: 6371000
你也可以重设长度单位
>> earth.LengthUnit = 'kilometer'
earth =
referenceSphere
Properties:
Name: 'Earth'
LengthUnit: 'kilometer'
Radius: 6371
也可以在指定球体名称时指定单位
>> referenceSphere('Earth','km')
ans =
referenceSphere
Properties:
Name: 'Earth'
LengthUnit: 'kilometer'
Radius: 6371
任何被validateLengthUnit所支持的单位都可使用。具体可参见validateLengthUnit列表。
值得注意的是,MATLAB命令行只展示了被定义的属性,比如,表面积属性可以这样查看:
>> earth = referenceSphere('Earth')
earth =
referenceSphere
Properties:
Name: 'Earth'
LengthUnit: 'meter'
Radius: 6371000
>> earth.SurfaceArea
ans =
5.100644719097883e+14
此外还需说明的是,为了保持编程多态性等考虑,referenceSphere包含了和椭球体模型一样的属性,例如半长轴等。
referenceEllipsoid对象
当用扁椭圆来表示地球(或其他星球)时,可以用referenceEllipsoid对象。对于一些小尺度的(大比例尺)的投影方法而言,他们通常在球体模型上定义,然而对于大尺度投影而言,例如横轴墨卡托,兰伯特投影等,他们在球体和椭球体都有定义。和参考球体对象一样,参考椭球体对象默认返回一个单位椭球体:
>> referenceEllipsoid
ans =
referenceEllipsoid
Properties:
Code: []
Name: 'Unit Sphere'
LengthUnit: ''
SemimajorAxis: 1
SemiminorAxis: 1
InverseFlattening: Inf
Eccentricity: 0
同样的,也可以通过名称来指定参考椭球体,例如:
>> grs80 = referenceEllipsoid('Geodetic Reference System 1980')
grs80 =
referenceEllipsoid
Properties:
Code: 7019
Name: 'Geodetic Reference System 1980'
LengthUnit: 'meter'
SemimajorAxis: 6378137
SemiminorAxis: 6356752.31414036
InverseFlattening: 298.257222101
Eccentricity: 0.0818191910428158
通常来说,你需要使用你的数据坐标采用的大地测量基准相对应的参考椭球体。对于本例,GRS80参考椭球体对应了NAD83基准坐标(North American Datum of 1983)。
和球体一样,你也可以指定单位。MATLAB命令行显示了半长轴、半短轴、反扁率和偏心率。这些参数对只要有一个半径参数,就足以推出其他参数。也就是说4个参数是互相依赖的。只有反扁率1/f和偏心率ecc就不足以定义椭球体。他俩的关系是ecc = sqrt((2 - f) * f))
此外,还有5个相互依存的属性没显示:扁率,第三扁率,平均半径,表面积和体积。这些都可以通过调属性来查看。
World Geodetic System 1984
被广泛使用的GPS系统采用的参考椭球体叫WGS84,MATLAB里专门给他设了一个命令:wgs84 = wgs84Ellipsoid; 当然也可以这样定义wgs84 = referenceEllipsoid('wgs84'); 这两个是等效的。只是为了方便使用。后者运行速度更快。
Ellipsoid Vectors
椭球体向量是2行1列的矩阵[semimajor_axis eccentricity]。和椭球体对象不一样,这个向量不是个有地理意义的结构体。你在使用它前必须搞清楚他里面元素含义是什么。这个表示方式并不保证半长轴肯定是正实数。就是说,你必须自己检查参数的正确性。
工具箱中很多函数都可以用椭球体向量,但还是建议使用椭球体对象,如果你的程序必须使用椭球体向量,也可以很便捷的从对象转换成向量[s.SemimajorAxis s.Eccentricity]。这意味着必要时,你可以构建出椭球体对象并以此来处理椭球体向量的结果。
oblateSpheroid对象
扁椭球体对象包含了椭球体对象,只是少了编号,名称,长度单位。扁椭球体对象的基本定位就是提供纯粹的几何属性。
通常只要能用椭球体对象的地方,扁椭球体对象就可以使用。
扁椭球体对象可以用在不指定名字和长度单位的椭球体参数上,例如要计算长半轴为2000,偏心率为0.1的椭球体的体积,可以这样做:
>> e = [2000 0.1];
s = oblateSpheroid;
s.SemimajorAxis = e(1);
s.Eccentricity = e(2)
s =
oblateSpheroid
Properties:
SemimajorAxis: 2000
SemiminorAxis: 1989.97487421324
InverseFlattening: 199.498743710662
Eccentricity: 0.1
当然了,本例没有指定长度单位,得到的体积也是没有单位的。
如何使用Reference Spheroids
在地图投影,球面曲线和面积计算,涉及到大地测量坐标的三维计算时,需要认真对待参考椭球体。
这三个方面详细内容略去。
2 经纬度
使用经度和纬度这两个角度,就可以指定星球表面的任一点位置,其单位可以是角度也可以使弧度。通过角度用的最多。
纬度在北半球是正的,南半球是负的,范围为[-90° 90°]
经度的范围为[-180° 180°]也可以是[0° 360°],地图工具箱提供了几个函数用来转换经度的范围。
3 角度、方向和距离
正文
4 地图投影
正文
5 大圆、等角线和小圆
正文
6 球面和椭球面上的方向和面积
正文
正文