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

本文将对 Cartopy 中支持的地图投影进行逐一进行简要介绍,这些投影都是 cartopy.crs 中的类。若要绘制某一类投影的地图,只需将其实例化之后传入 plt.axes() 方法的 projection 参数即可。本文不涉及投影的原理,旨在展示每种地图投影的效果和用法,以便在选择时参考。

圆柱投影

PlateCarree

PlateCarree(可利)投影将地物投影到圆柱面上再展开,常用来绘制世界地图。该类的定义为:

1

class cartopy.crs.PlateCarree(central_longitude=0.0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

LambertCylindrical

Lambert cylindrical projection(兰伯特等积投影)也是绘制世界地图的一种常用方案。该类的定义为:

1

class cartopy.crs.LambertCylindrical(central_longitude=0.0)

参数说明:

central_longitude:中央经线,默认为 0。

示例:

Mercator

Mercator(墨卡托)投影,属于正轴等角割圆柱投影。经纬线为相互垂直的平行直线,图上无角度变形,但面积变形较大。该投影常用于制作航海图或赤道附近区域的地图。其类定义为:

1

2

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(米勒)投影。其类定位为:

1

class cartopy.crs.Miller(central_longitude=0.0)

参数说明:

central_longitude:中央经线,默认为 0。

示例:

TransverseMercator

TransverseMercator(横轴墨卡托)投影是对标准墨卡托投影的一种变换。其类定义为:

1

2

3

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 表示。该类的定义为:

1

class cartopy.crs.UTM(zone, southern_hemisphere=False, globe=None)

参数说明:

zone:所绘地区的 6° 经度区间带号;

southern_hemisphere:投影带是否在南半球;

globe:椭球定义,默认为 WGS84。

RotatedPole

RotatedPole(旋转极)投影,常被用于天气预测模型中。该类的定义为:

1

2

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(阿尔伯斯等面积)投影。其类定义为:

1

2

3

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(兰伯特正形)投影。其类定义为:

1

2

3

4

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(正射)投影,视点在无穷远处,常用于表现某个半球。该类的定义为:

1

class cartopy.crs.Orthographic(central_longitude=0.0, central_latitude=0.0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

central_latitude:中央纬线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

AzimuthalEquidistant

AzimuthalEquidistant(正方位等距)投影,在切点辐射的方向上没有长度变形,有角度和面积变形。该类的定义为:

1

2

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(球极平面)投影,这也是一种等角投影,其视点在球面上。但这种投影会造成较大的长度和面积变形,且离切点愈远,其变形幅度愈大。其类定义为:

1

2

3

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)卫星上观察到的地球。其类定义为:

1

2

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(驾驶员)视角,视点在地球外某一点处。这种投影好像在高空中某处宇宙飞船驾驶员的视角。其类定义为:

1

2

3

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(兰伯特方位等积)投影,具有等积性质,但在靠近边缘的地方长度和角度变形较大。其类定义为:

1

2

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(球心)投影,将地球想象为一个水面透明的玻璃球,这种投影好像从地心光源将陆地的影子投射到墙上的景象。该类定义为:

1

class cartopy.crs.Gnomonic(central_longitude=0.0, central_latitude=0.0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

central_latitude:中央纬线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

NorthPolarStereo

NorthPolarStereo(北极极射)投影。该类的定义为:

1

class cartopy.crs.NorthPolarStereo(central_longitude=0.0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

SouthPolarStereo

SouthPolarStereo(南极极射)投影。该类的定义为:

1

class cartopy.crs.SouthPolarStereo(central_longitude=0.0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

其他投影方式

Mollweide

Mollweide(摩尔威特)投影,一种正轴等积性质的伪圆柱投影,由德国人摩尔威特(K.B.Mollweide)所创,常用于绘制世界地图或东西半球图。中央经线为直线,距离中央经线东西相差 90° 的经线构成一个大圆,其面积等于地球表面积的1/2,其余经线为椭圆。Cartopy 中对应的类为:

1

class cartopy.crs.Mollweide(central_longitude=0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

Robinson

Robinson(罗宾逊)投影也是一种伪圆柱投影,主要为了克服圆柱投影形状拉伸过大,希望获得角度和面积变形均最小的世界地图投影。Cartopy 中对应的类为:

1

class cartopy.crs.Robinson(central_longitude=0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

Sinusoidal

Sinusoidal(正弦)投影是一种伪圆柱等积投影,由法国人桑逊(N.Sanson)所创,有时候也被称为桑逊投影或墨卡托等积投影。这是一种等积性质的伪圆柱投影,纬线为间隔相等的平行直线,经线为对称于中央经线的正弦曲线。Cartopy 中对应的类为:

1

2

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 中对应的类为:

1

class cartopy.crs.InterruptedGoodeHomolosine(central_longitude=0, globe=None)

参数说明:

central_longitude:中央经线,默认为 0;

globe:椭球定义,默认为 WGS84。

示例:

总结

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

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

世界地图:正圆柱、伪圆柱和多圆锥投影;

东、西半球:常选用横轴方位投影;

南、北半球:常采用正轴方位投影;

水、陆半球:一般选用斜轴方位投影;

极地——正轴方位投影;

赤道附近——横轴方位投影或正轴圆柱投影;

中纬地区——正轴圆锥投影或斜轴方位投影。

如需联系EasyShu团队

请加微信:EasyCharts

微信公众号【EasyShu】博文代码集合地址

https://github.com/Easy-Shu/EasyShu-WeChat

书籍购买

Python数据可视化之美-配套源代码下载地址

Github

https://github.com/Easy-Shu/Beautiful-Visualization-with-python

R语言数据可视化之美-增强版配套源代码下载地址

Github

https://github.com/Easy-Shu/Beautiful-Visualization-with-R

python气象包_Python-Cartopy包: 地图投影相关推荐

  1. python 心电处理包_python 黏包现象及其解决方案

    一.数据缓冲区 缓冲区(buffer),它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的 ...

  2. python自带哪些包_python各个包的用途

    python中的多个包的用途 1.Numpy Numpy提供了两种基本的对象:ndarray和ufunc.ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数. N维数组 ...

  3. Python气象绘图之Cartopy

    前言 因为参加大创项目需要,开始学习使用Python绘制图片.此前 Python 最常用的地图包是 Basemap,然而它将于 2020 年被弃用,官方推荐使用 Cartopy 包作为替代.Carto ...

  4. python3 抓包 解包_Python结构包,解包

    python3 抓包 解包 Python struct module is capable of performing the conversions between the Python value ...

  5. python画图配色_python matplotlib包图像配色方案分享

    可选的配色方案: Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_ ...

  6. python使用pkg包_Python deb-pkg-tools包_程序模块 - PyPI - Python中文网

    python包deb-pkg-tools是要构建和 检查Debian binary packages和二进制包的存储库.它的 主要用例是自动化构建. 一些功能在命令行界面中公开(如下所述) 因为在sh ...

  7. python cv模块_Python cv包_程序模块 - PyPI - Python中文网

    Cv 检查python模块的版本. 查询pypi并在所有可用版本中查找.__version__. 如果版本已经存在,则会引发错误. 在ci中很有用,可以记住更改库版本. 有关python模块版本控制的 ...

  8. python 统计分析 包_Python 数据分析包:pandas 基础

    pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据 ...

  9. python repusts模块_Python tslearn包_程序模块 - PyPI - Python中文网

    tslearn是一个python包,它为分析时间序列提供机器学习工具. 这个包基于scikit-learn.numpy和scipy库. 依赖关系Cython numpy numba scipy sci ...

  10. python抓包与解包_python 抓包与解包

    我使用的环境为:Windows10.python3.6.scapy 2.4.0 一.基本知识 Sniff方法定义: sniff(filter="",iface="any& ...

最新文章

  1. 云服务器现安全漏洞及防护措施
  2. TCP连接状态详解及TIME_WAIT过多的解决方法
  3. 数据库 ' 库名' 已打开,并且一次只能有一个用户访问。 (Microsoft SQL Server,错误: 924)
  4. webstorm2018破解方法
  5. Select For update语句浅析
  6. 机器学习笔记(七):神经网络:表示
  7. 通过实验理解交换的三个fast特性
  8. 问题1:VS2017:找不到 Windows SDK 版本10.0.17134.0
  9. 超标量处理器设计 姚永斌 第2章 Cache 摘录
  10. 电脑装机不求人装机员系统集合
  11. 好好编程-物流项目02【tomcat插件启动web项目】
  12. iOS设备踢出恢复模式的几种方法
  13. python:It seems that scikit-learn has not been built correctly
  14. android锁机如何制作教程视频教程,Android一枚简单锁机样本的测试与浅析
  15. 机器学习特征值处理方案
  16. 计算机二级题百度云,计算机二级office题库
  17. [Python深度学习入门]实战一·Numpy梯度下降求最小值
  18. Java 监控方案_Java 服务端监控方案
  19. ffmpeg 3.2版本播放ts流正常,但是录制成为MP4的文件播放黑屏
  20. Java中,File创建一个文件

热门文章

  1. 【转】Nero v9.4.26.0 多语(简体中文)版+完美破解(世界上最多人使用的烧录软体)...
  2. win10 安装VB6详细安装教程及其中的坑
  3. (转)用Wineskin 让Windows 的程序在Mac 上运行
  4. mysql directx repair_[MySQL]快速解决is marked as crashed and should be repaired故障
  5. 使用WireShark抓包对方QQ的ip地址(通过QQ电话)
  6. MV178——我的心灵家园
  7. Android之monkey Test
  8. 程序员专用壁纸!!!
  9. 上班我是这样玩微信的,带你一起玩?
  10. python对接60码平台