经典地图制图中使用的投影面有圆柱面、圆锥面或平面等。根据所用投影面,地图投影相对应地可分为圆柱投影、圆锥投影和方位投影。后来又发展出了很多现代地图投影,如伪圆柱、多圆锥等投影办法。在制图时选择合适的地图投影是一件重要的工作。

  本文将对 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_eastingfalse_northing 两个变量的含义与用途,有些读者可能会有困惑。这里说一下我的理解。在某些局部地区的坐标系中,为了避免坐标值出现负数,通常会在可能出现负数的坐标上加上一个较大的常数。例如,我国普遍采用高斯投影的平面直角坐标系,以赤道和中央子午线作为坐标轴,由于我国位于北半球,因此南北方向不会出现负数,但是东西方向上会出现负数(中央子午线以西的点)。此时通常的解决办法就是为所有的东西方向的坐标加上 500 km。这里的 500 km 就是 false_easting 的值。

当制图范围较小时,无论什么投影方式都无太大变形;对于范围广大的世界地图、半球地图、大洲地图、大国地图等,则需要慎重考虑。对表现大块区域常用的投影方式可总结为:

  • 世界地图:正圆柱、伪圆柱和多圆锥投影;
  • 东、西半球:常选用横轴方位投影;
  • 南、北半球:常采用正轴方位投影;
  • 水、陆半球:一般选用斜轴方位投影;
  • 极地——正轴方位投影;
  • 赤道附近——横轴方位投影或正轴圆柱投影;
  • 中纬地区——正轴圆锥投影或斜轴方位投影。

Cartopy 中的地图投影相关推荐

  1. python+气象 | 在地图背景下绘制全国站点气温分布图

    0.写在前面 本来想画含等温线+填色+标注站点降温的图的,但是因为要来的数据是文本文件,绘制等温图不是小白能干的过于麻烦,于是最后只画了地图+站点. 结果如图(save之后的png格式图片,pytho ...

  2. 【数据可视化应用】地图投影(附代码)

    经典地图制图中使用的投影面有圆柱面.圆锥面或平面等.根据所用投影面,地图投影相对应地可分为圆柱投影.圆锥投影和方位投影.后来又发展出了很多现代地图投影,如伪圆柱.多圆锥等投影办法.在制图时选择合适的地 ...

  3. 根据经纬度坐标配准_扫描地图投影的识别及其配准

    注:本文是我为某历史地图项目组撰写的扫描地图配准方案,现分享出来,希望能为大家提供帮助.阅读本文需要一定的地图学基础. 在学习和工作中,由于无法获取矢量数据,经常需要以图片格式地图为工作底图,并且需要 ...

  4. [Python] Basemap入坑手册 - 地图投影示例

    Basemap入坑手册 - 地图投影示例 文章目录 Basemap入坑手册 - 地图投影示例 cyl - Cylindrical Equidistant merc - Mercator tmerc - ...

  5. gis投影中未定义的地理转换_如何在MapInfo中使用地理坐标系

    此地图基于WGS84大地纬度和经度标准. 与GPS使用的WGS84相同,纬度和经度的差异为10-20分钟(仅MAPINFO中地图的显示数据不涉及NumericCoordSys的坐标系). MapX中的 ...

  6. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

  7. python气象科研学习路线和常用技巧

    python气象科研学习路线和重点知识 前言 经过一个学期的气象相关编程,觉得气象常用的一些库在这里总结一下,学习路线是我根据自己经验总结的,有大佬觉得哪里需要补充的可以私我.我也在不断学习,之后有新 ...

  8. 统一横轴墨卡托投影(UTM)

    UTM 坐标系统使用基于网格的方法表示坐标.UTM 系统将地球分为 60 个区,每一个区基于横轴墨卡托投影.画图法中的地图投影方法能够在平面中表示一个两维的曲面,比如一个标准地图.图 1 展示了一个横 ...

  9. 实现坐标转换--不同地理位置系统转换入门

    最近做离线地图的程序,找了一些地图坐标的转换方法. 很多流行的应用程序可以提供基于位置的服务,但是计算机如何识别真实世界中的位置呢?很多方法都涉及到地理坐标系统,并且在实际应用中存在不同的此类系统.在 ...

  10. PostGIS 笔记

    空间数据库 定义:存储.操作空间数据的数据库. 空间数据特点 空间数据类型是指点.线.多边形等形状: 提供用于空间操作的高效处理的多维空间索引: 提供用于查询空间属性和关系额空间函数. 发展历程 第1 ...

最新文章

  1. Python实现网页截图
  2. oracle date类型,oracle 日期时间数据类型
  3. 【Python基础】加密你的Python源码顺便再打个包如何?
  4. “==”和equals()那些事
  5. 荆门市掇刀石中学2021高考成绩查询,2021年荆门中考所有高中学校排名 荆门重点高中分数线...
  6. [SimplePlayer] 1. 从视频文件中提取图像
  7. 三年硬件工程师薪水_谷歌员工基本薪资曝光:软件工程师最高 241 万,工程副总裁 325 万,产品经理、UX 171 万,硬件工程师 166 万...
  8. Google 日历 API 和工具
  9. html file对象修改,HTML DOM
  10. matlab转python很难吗_MATLAB在逐渐被Python淘汰吗?
  11. 对象行为型 - Observer观察者模式
  12. vim配置关于 map nmap vmap等
  13. iOS 改变UITextField中光标颜色
  14. FreeCAD源码分析:Sketcher模块
  15. psp java运行环境_手机模拟器?PSP的Java环境PSPKVM 0.0.7发布
  16. 个人简历样本范文 下载空白简历 个人简历样本下载 个人简历表格
  17. 微信小程序UI组件 开发框架 实用库 经典demo
  18. matlab 水文断面,基于MATLAB的河道横断面的绘制
  19. 不可预料的压缩文件末端的解决方法
  20. 在线PS编辑器使用教程(Photoshop)

热门文章

  1. vue3 富文本编辑器
  2. 自制的基Ogre的场景编辑器—OgreSE
  3. 低代码--低代码开发(LCDP)介绍
  4. Flash Builder 4.7安装破解教程详解(图文)
  5. 《HBase权威指南》读书笔记:第一章 简介
  6. 帅爆了!推荐10款程序员专用高清壁纸!!
  7. Windows安装SSH
  8. 开发一款AirPods或者Beats耳机查看电量的软件
  9. linux系统下王者荣耀,一日一歌一Linux之一:CentOS 8.1 王者荣耀
  10. 企业如何利用工业大数据实现价值,这5个真实案例告诉你!