Cartopy 中的地图投影
经典地图制图中使用的投影面有圆柱面、圆锥面或平面等。根据所用投影面,地图投影相对应地可分为圆柱投影、圆锥投影和方位投影。后来又发展出了很多现代地图投影,如伪圆柱、多圆锥等投影办法。在制图时选择合适的地图投影是一件重要的工作。
本文将对 Cartopy 中支持的地图投影进行逐一进行简要介绍,这些投影都是 cartopy.crs 中的类。若要绘制某一类投影的地图,只需将其实例化之后传入 plt.axes()
方法的 projection
参数即可。本文不涉及投影的原理,旨在展示每种地图投影的效果和用法,以便在选择时参考。
圆柱投影
PlateCarree
PlateCarree(可利)投影将地物投影到圆柱面上再展开,常用来绘制世界地图。该类的定义为:
class cartopy.crs.PlateCarree(central_longitude=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
LambertCylindrical
Lambert cylindrical projection(兰伯特等积投影)也是绘制世界地图的一种常用方案。该类的定义为:
class cartopy.crs.LambertCylindrical(central_longitude=0.0)
参数说明:
central_longitude
:中央经线,默认为 0。
示例:
Mercator
Mercator(墨卡托)投影,属于正轴等角割圆柱投影。经纬线为相互垂直的平行直线,图上无角度变形,但面积变形较大。该投影常用于制作航海图或赤道附近区域的地图。其类定义为:
class cartopy.crs.Mercator(central_longitude=0.0, min_latitude=-80.0, max_latitude=84.0,latitude_true_scale=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;min_latitude
:显示的最小纬线(最南端),默认为 -80;max_latitude
:显示的最大纬线(最北端),默认为 84;latitude_true_scale
:长度不变形的纬线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
Miller
Miller(米勒)投影。其类定位为:
class cartopy.crs.Miller(central_longitude=0.0)
参数说明:
central_longitude
:中央经线,默认为 0。
示例:
TransverseMercator
TransverseMercator(横轴墨卡托)投影是对标准墨卡托投影的一种变换。其类定义为:
class cartopy.crs.TransverseMercator(central_longitude=0.0, central_latitude=0.0,false_easting=0.0, false_northing=0.0,scale_factor=1.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位;scale_factor
:中央经线处的长度变形因子,默认为 1;globe
:椭球定义,默认为 WGS84。
示例:
UTM
UTM(通用横轴墨卡托投影),制图中最常用的一种投影方法之一。在 UTM 中,地球上的主要陆地被划分为一个个的网格区间。对于纬度,从南纬 80° 开始,每 8° 被划分为一个区间,自南向北由从 “C” 至 “X” 的字母表示(为包含北极附近的陆地,最北的区间包含 12°);对于经度,从零度子午线开始每隔 6° 向东编排,其带好以数字 01-60 表示。该类的定义为:
class cartopy.crs.UTM(zone, southern_hemisphere=False, globe=None)
参数说明:
zone
:所绘地区的 6° 经度区间带号;southern_hemisphere
:投影带是否在南半球;globe
:椭球定义,默认为 WGS84。
示例:
RotatedPole
RotatedPole(旋转极)投影,常被用于天气预测模型中。该类的定义为:
class cartopy.crs.RotatedPole(pole_longitude=0.0, pole_latitude=90.0,central_rotated_longitude=0.0, globe=None)
参数说明:
pole_longitude
:旋转极的经度;pole_latitude
:旋转极的纬度;central_rotated_longitude
:旋转的经度;globe
:椭球定义,默认为 WGS84。
示例:
OSGB
OSGB(Ordnance Survey of Great Britain),英国军用测量大地网,用于测量大不列颠岛的一种区域等距圆锥投影。
示例:
EuroPP
EuroPP,用于绘制欧洲地图的一种等距圆锥投影。
示例:
OSNI
OSNI(Ordnance Survey of Northern Ireland),一种区域性质的等距圆锥投影,用于测绘北爱尔兰岛。
示例:
圆锥投影
AlbersEqualArea
AlbersEqualArea(阿尔伯斯等面积)投影。其类定义为:
class cartopy.crs.AlbersEqualArea(central_longitude=0.0, central_latitude=0.0,false_easting=0.0, false_northing=0.0,standard_parallels=(20.0, 50.0), globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位standard_parallels
:长度不变形的纬线,默认为 (20, 50);globe
:椭球定义,默认为 WGS84。
示例:
LambertConformal
LambertConformal(兰伯特正形)投影。其类定义为:
class cartopy.crs.LambertConformal(central_longitude=-96.0, central_latitude=39.0,false_easting=0.0, false_northing=0.0,secant_latitudes=None, standard_parallels=None,globe=None, cutoff=-30)
参数说明:
central_longitude
:中央经线,默认为 -96;central_latitude
:中央纬线,默认为 39;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位secant_latitudes
:割线的纬度;standard_parallels
:长度不变形的纬线,默认为 (33, 45);cutoff
:显示的纬度边界,默认为 -30;globe
:椭球定义,默认为 WGS84。
示例:
方位投影
Orthographic
Orthographic(正射)投影,视点在无穷远处,常用于表现某个半球。该类的定义为:
class cartopy.crs.Orthographic(central_longitude=0.0, central_latitude=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
AzimuthalEquidistant
AzimuthalEquidistant(正方位等距)投影,在切点辐射的方向上没有长度变形,有角度和面积变形。该类的定义为:
class cartopy.crs.AzimuthalEquidistant(central_longitude=0.0, central_latitude=0.0,false_easting=0.0, false_northing=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位globe
:椭球定义,默认为 WGS84。
示例:
Stereographic
Stereographic(球极平面)投影,这也是一种等角投影,其视点在球面上。但这种投影会造成较大的长度和面积变形,且离切点愈远,其变形幅度愈大。其类定义为:
class cartopy.crs.Stereographic(central_latitude=0.0, central_longitude=0.0,false_easting=0.0, false_northing=0.0,true_scale_latitude=None, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位true_scale_latitude
:长度不变形的纬线;globe
:椭球定义,默认为 WGS84。
示例:
Geostationary
Geostationary(地球同步卫星)视角,视点在赤道上空某一点处。这种投影好像在地球同步(GEO)卫星上观察到的地球。其类定义为:
class cartopy.crs.Geostationary(central_longitude=0.0, satellite_height=35785831,false_easting=0, false_northing=0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;satellite_height
:卫星高度,默认为 35785831 米,这是 GEO 卫星的高度;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位globe
:椭球定义,默认为 WGS84。
示例:
NearsidePerspective
NearsidePerspective(驾驶员)视角,视点在地球外某一点处。这种投影好像在高空中某处宇宙飞船驾驶员的视角。其类定义为:
class cartopy.crs.NearsidePerspective(central_longitude=0.0, central_latitude=0.0,satellite_height=35785831, false_easting=0,false_northing=0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;satellite_height
:卫星高度,默认为 35785831 米,即 GEO 卫星的高度;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位globe
:椭球定义,默认为 WGS84。
示例:
LambertAzimuthalEqualArea
LambertAzimuthalEqualArea(兰伯特方位等积)投影,具有等积性质,但在靠近边缘的地方长度和角度变形较大。其类定义为:
class cartopy.crs.LambertAzimuthalEqualArea(central_longitude=0.0, central_latitude=0.0,false_easting=0.0, false_northing=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;satellite_height
:卫星高度,默认为 35785831 米,即 GEO 卫星的高度;false_easting
:平面上 X 轴坐标(东方向)的偏移量,以米为单位;false_northing
:平面上 Y 轴坐标(北方向)的偏移量,以米为单位globe
:椭球定义,默认为 WGS84。
示例:
Gnomonic
Gnomonic(球心)投影,将地球想象为一个水面透明的玻璃球,这种投影好像从地心光源将陆地的影子投射到墙上的景象。该类定义为:
class cartopy.crs.Gnomonic(central_longitude=0.0, central_latitude=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;central_latitude
:中央纬线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
NorthPolarStereo
NorthPolarStereo(北极极射)投影。该类的定义为:
class cartopy.crs.NorthPolarStereo(central_longitude=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
SouthPolarStereo
SouthPolarStereo(南极极射)投影。该类的定义为:
class cartopy.crs.SouthPolarStereo(central_longitude=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
其他投影方式
Mollweide
Mollweide(摩尔威特)投影,一种正轴等积性质的伪圆柱投影,由德国人摩尔威特(K.B.Mollweide)所创,常用于绘制世界地图或东西半球图。中央经线为直线,距离中央经线东西相差 90° 的经线构成一个大圆,其面积等于地球表面积的1/2,其余经线为椭圆。Cartopy 中对应的类为:
class cartopy.crs.Mollweide(central_longitude=0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
Robinson
Robinson(罗宾逊)投影也是一种伪圆柱投影,主要为了克服圆柱投影形状拉伸过大,希望获得角度和面积变形均最小的世界地图投影。Cartopy 中对应的类为:
class cartopy.crs.Robinson(central_longitude=0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
Sinusoidal
Sinusoidal(正弦)投影是一种伪圆柱等积投影,由法国人桑逊(N.Sanson)所创,有时候也被称为桑逊投影或墨卡托等积投影。这是一种等积性质的伪圆柱投影,纬线为间隔相等的平行直线,经线为对称于中央经线的正弦曲线。Cartopy 中对应的类为:
class cartopy.crs.Sinusoidal(central_longitude=0.0, false_easting=0.0,false_northing=0.0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
InterruptedGoodeHomolosine
InterruptedGoodeHomolosine(分瓣正弦古德)投影,一种伪圆柱、等积投影。该投影中,全图被分为几瓣,各瓣之间通过赤道连接,这样可使得各大洲陆地部分表现得更完好。其缺点也显而易见:地图的连续性被破坏殆尽。Cartopy 中对应的类为:
class cartopy.crs.InterruptedGoodeHomolosine(central_longitude=0, globe=None)
参数说明:
central_longitude
:中央经线,默认为 0;globe
:椭球定义,默认为 WGS84。
示例:
总结
对于上文提到的 false_easting
和 false_northing
两个变量的含义与用途,有些读者可能会有困惑。这里说一下我的理解。在某些局部地区的坐标系中,为了避免坐标值出现负数,通常会在可能出现负数的坐标上加上一个较大的常数。例如,我国普遍采用高斯投影的平面直角坐标系,以赤道和中央子午线作为坐标轴,由于我国位于北半球,因此南北方向不会出现负数,但是东西方向上会出现负数(中央子午线以西的点)。此时通常的解决办法就是为所有的东西方向的坐标加上 500 km。这里的 500 km 就是 false_easting
的值。
当制图范围较小时,无论什么投影方式都无太大变形;对于范围广大的世界地图、半球地图、大洲地图、大国地图等,则需要慎重考虑。对表现大块区域常用的投影方式可总结为:
- 世界地图:正圆柱、伪圆柱和多圆锥投影;
- 东、西半球:常选用横轴方位投影;
- 南、北半球:常采用正轴方位投影;
- 水、陆半球:一般选用斜轴方位投影;
- 极地——正轴方位投影;
- 赤道附近——横轴方位投影或正轴圆柱投影;
- 中纬地区——正轴圆锥投影或斜轴方位投影。
Cartopy 中的地图投影相关推荐
- python+气象 | 在地图背景下绘制全国站点气温分布图
0.写在前面 本来想画含等温线+填色+标注站点降温的图的,但是因为要来的数据是文本文件,绘制等温图不是小白能干的过于麻烦,于是最后只画了地图+站点. 结果如图(save之后的png格式图片,pytho ...
- 【数据可视化应用】地图投影(附代码)
经典地图制图中使用的投影面有圆柱面.圆锥面或平面等.根据所用投影面,地图投影相对应地可分为圆柱投影.圆锥投影和方位投影.后来又发展出了很多现代地图投影,如伪圆柱.多圆锥等投影办法.在制图时选择合适的地 ...
- 根据经纬度坐标配准_扫描地图投影的识别及其配准
注:本文是我为某历史地图项目组撰写的扫描地图配准方案,现分享出来,希望能为大家提供帮助.阅读本文需要一定的地图学基础. 在学习和工作中,由于无法获取矢量数据,经常需要以图片格式地图为工作底图,并且需要 ...
- [Python] Basemap入坑手册 - 地图投影示例
Basemap入坑手册 - 地图投影示例 文章目录 Basemap入坑手册 - 地图投影示例 cyl - Cylindrical Equidistant merc - Mercator tmerc - ...
- gis投影中未定义的地理转换_如何在MapInfo中使用地理坐标系
此地图基于WGS84大地纬度和经度标准. 与GPS使用的WGS84相同,纬度和经度的差异为10-20分钟(仅MAPINFO中地图的显示数据不涉及NumericCoordSys的坐标系). MapX中的 ...
- GNU Make 使用手册(于凤昌中译版)
GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...
- python气象科研学习路线和常用技巧
python气象科研学习路线和重点知识 前言 经过一个学期的气象相关编程,觉得气象常用的一些库在这里总结一下,学习路线是我根据自己经验总结的,有大佬觉得哪里需要补充的可以私我.我也在不断学习,之后有新 ...
- 统一横轴墨卡托投影(UTM)
UTM 坐标系统使用基于网格的方法表示坐标.UTM 系统将地球分为 60 个区,每一个区基于横轴墨卡托投影.画图法中的地图投影方法能够在平面中表示一个两维的曲面,比如一个标准地图.图 1 展示了一个横 ...
- 实现坐标转换--不同地理位置系统转换入门
最近做离线地图的程序,找了一些地图坐标的转换方法. 很多流行的应用程序可以提供基于位置的服务,但是计算机如何识别真实世界中的位置呢?很多方法都涉及到地理坐标系统,并且在实际应用中存在不同的此类系统.在 ...
- PostGIS 笔记
空间数据库 定义:存储.操作空间数据的数据库. 空间数据特点 空间数据类型是指点.线.多边形等形状: 提供用于空间操作的高效处理的多维空间索引: 提供用于查询空间属性和关系额空间函数. 发展历程 第1 ...
最新文章
- Python实现网页截图
- oracle date类型,oracle 日期时间数据类型
- 【Python基础】加密你的Python源码顺便再打个包如何?
- “==”和equals()那些事
- 荆门市掇刀石中学2021高考成绩查询,2021年荆门中考所有高中学校排名 荆门重点高中分数线...
- [SimplePlayer] 1. 从视频文件中提取图像
- 三年硬件工程师薪水_谷歌员工基本薪资曝光:软件工程师最高 241 万,工程副总裁 325 万,产品经理、UX 171 万,硬件工程师 166 万...
- Google 日历 API 和工具
- html file对象修改,HTML DOM
- matlab转python很难吗_MATLAB在逐渐被Python淘汰吗?
- 对象行为型 - Observer观察者模式
- vim配置关于 map nmap vmap等
- iOS 改变UITextField中光标颜色
- FreeCAD源码分析:Sketcher模块
- psp java运行环境_手机模拟器?PSP的Java环境PSPKVM 0.0.7发布
- 个人简历样本范文 下载空白简历 个人简历样本下载 个人简历表格
- 微信小程序UI组件 开发框架 实用库 经典demo
- matlab 水文断面,基于MATLAB的河道横断面的绘制
- 不可预料的压缩文件末端的解决方法
- 在线PS编辑器使用教程(Photoshop)