投影坐标系简介
地球椭球体表面也是个曲面,而我们日常生活中的地图及量测空间通常是二维平面,因此在地图制图和线性量测时首先要考虑把曲面转化成平面。由于球面上任何一点的位置是用地理坐标(λ,φ)表示的,而平面上的点的位置是用直角坐标(X,Y)表示的,所以要想将地球表面上的点转移到平面上,必须采用一定的方法来确定地理坐标与平面直角坐标或极坐标之间的关系。这种在球面和平面之间建立点与点之间函数关系的数学方法,就是地图投影方法。

构成
投影坐标系使用基于 X,Y 值的坐标系统来描述地球上某个点所处的位置。这个坐标系是从地球的近似椭球体投影得到的,它对应于某个地理坐标系。投影坐标系主要由 地理坐标系、投影方法和线性单位 构成。

线性单位
| 单位 | 中文对照 | 每单位长度(m) |
|---|---|---|
| metre | 米 | 1 |
| Clarke’s link | 克拉克令 | 0.201166195164 |
| Gold Coast foot | 黄金海岸英尺 | 0.304799710181509 |
| US survey foot | 美国测量英尺 | 0.304800609601219 |
| foot | 英尺 | 0.3048 |
| Clarke’s foot | 克拉克英尺 | 0.3047972654 |
| link | 令 | 0.201168 |
| British chain (Sears 1922 truncated) | 英国测链(1922年废弃) | 20.116756 |
| Clarke’s yard | 克拉克码 | 0.9143917962 |
| kilometre | 千米 | 1000 |
| Indian yard | 印度码 | 0.914398530744441 |
| British chain (Benoit 1895 B) | 英国测链(贝诺伊特1895 B) | 20.1167824943759 |
| British yard (Sears 1922) | 英国码(希尔斯 1922) | 0.914398414616029 |
| German legal metre | 德国法定米 | 1.0000135965 |
| British chain (Sears 1922) | 英国测链(希尔斯 1922) | 20.1167651215526 |
| British foot (Sears 1922) | 英国英尺(希尔斯 1922) | 0.304799471538676 |
投影方法
常用的投影长度单位如下:
| 投影方法 | 中文对照 |
|---|---|
| Transverse_Mercator | 横轴墨卡托投影 |
| Oblique_Stereographic | 斜球面投影 |
| Transverse_Mercator_South_Orientated | 横轴墨卡托投影(南向) |
| Hotine_Oblique_Mercator_Azimuth_Center | 洪特尼斜轴墨卡托方位角中心投影 |
| Lambert_Conformal_Conic_1SP | 兰伯特等角圆锥投影(1 标准纬线) |
| Krovak | 克罗瓦克投影 |
| Cassini_Soldner | 卡西尼-索尔德纳投影 |
| Lambert_Conformal_Conic_2SP | 兰伯特等角圆锥投影(2 标准纬线) |
| Lambert_Azimuthal_Equal_Area | 兰伯特斜轴等面积投影 |
| Lambert_Conic_Conformal_(West_Orientated) | 兰伯特圆锥等角投影(西向) |
| Mercator_1SP | 墨卡托投影(1 标准纬线) |
| Bonne_(South_Orientated) | 博恩投影(南向) |
| Albers_Conic_Equal_Area | 阿尔伯斯圆锥等面积投影(正轴等积割圆锥投影) |
| Polar_Stereographic_(variant_C) | 极球面投影(C 变体) |
| Polar_Stereographic | 极球面投影 |
| Hotine_Oblique_Mercator | 洪特尼斜轴墨卡托投影 |
| Hyperbolic Cassini-Soldner | 卡西尼-索尔德纳双曲线投影 |
| Azimuthal_Equidistant | 等距离方位投影 |
| Mercator_2SP | 墨卡托投影(2 标准纬线) |
| Cylindrical_Equal_Area | 圆柱等面积投影 |
| Equirectangular | 球面投影 |
| Guam Projection | 关岛投影 |
| Krovak_Modified | 改良克洛瓦尔投影 |
| Krovak_Modified_(North_Orientated) | 改良克洛瓦尔投影(北向) |
| Polyconic | 多圆锥投影 |
| Lambert Conic Conformal (2SP Michigan) | 兰伯特圆锥等角投影(2 标准纬线,密歇根州) |
| Colombia Urban | 哥伦比亚城市投影 |
| Tunisia_Mapping_Grid | 突尼斯地图网格投影 |
| Lambert_Conic_Near-Conformal | 兰伯特圆锥近等角投影 |
| New_Zealand_Map_Grid | 新西兰地图网格投影 |
| Laborde_Oblique_Mercator | 拉伯德斜墨卡托投影 |
| Lambert_Conformal_Conic_2SP_Belgium | 兰伯特等角圆锥投影(2 标准纬线,比利时) |
| Transverse_Mercator_Zoned_Grid_System | 横向墨卡托分区网格投影系统 |
地理坐标系
地理坐标系是使用三维球面来定义地球表面位置,以实现通过经纬度对地球表面点位引用的坐标系。一个地理坐标系包括 角度测量单位、本初子午线和参考椭球体/基准面 三部分。在球面系统中,水平线是等纬度线或纬线。垂直线是等经度线或经线。
常见的 WGS 84、CGCS 2000 等都属于地理坐标系。
gma 2 坐标参考系统简介
gma 简介
gma 是一个基于 Python 的地理、气象数据快速处理和数据分析函数包(Geographic and Meteorological Analysis,gma)。gma 1.x 网站:gma.luosgeo.com。
下文使用 gma 2 绘制 20 余种投影下的世界地图。
gma 的主要功能
气候气象(例如 SPEI、SPI、ET0 等)
遥感指数(例如 NDVI、EVI、TVDI 等)
数学运算(例如 数据平滑、评估、滤波、拉伸、增强变换等)
系统交互(例如 获取路径、重命名、压缩等操作)
空间杂项(例如 计算空间距离、面积计算,坐标转换、空间插值等操作)
栅格处理(例如 栅格镶嵌、裁剪、重采样、重投影、格式转换、数据融合等)
栅格分析(例如 DEM 坡度、坡向、阴影、等值线等计算)
矢量处理(例如 矢量裁剪、擦除、交集、融合、重投影等)
地图工具(例如 栅格、矢量数据绘图,指北针、比例尺等生成,坐标系定义等)
gma 2 下载
目前,gma 2 为前期测试版本,版本号 2.0.0a1,下载地址:
链接:https://pan.baidu.com/s/17TGMjNi7ZU0Ln1KvcCtvqQ?pwd=tz0s
提取码:tz0s
坐标参考系统模块的主要功能
目前,gma 2 的坐标参考系统(gma.crs)提供:
1. 基准面(gma.crs.Datum)
创建一个基准面。
2. 椭球体(gma.crs.Ellipsoid)
创建一个椭球体。
3. 地理坐标系(gma.crs.GeogCS)
创建一个地理坐标系。
4. 投影坐标系(gma.crs.ProjCS)
创建一个投影坐标系。
5. 内置参数
椭球体(gma.crs.Ellips)
创建一个椭球体。也提供一些内置的椭球体,包括:
| 椭球体名称 | 长半轴(m) | 反扁率 |
|---|---|---|
| Airy1830 | 6377563.396 | 299.325 |
| AiryModified1849 | 6377340.189 | 299.325 |
| AustralianNationalSpheroid | 6378160 | 298.25 |
| AverageTerrestrialSystem1977 | 6378135 | 298.257 |
| Bessel1841 | 6377397.155 | 299.1528 |
| BesselModified | 6377492.018 | 299.1528 |
| BesselNamibia | 6377483.865 | 299.1528 |
| CGCS2000 | 6378137 | 298.2572 |
| Clarke1858 | 6378293.645 | 294.2607 |
| Clarke1866 | 6378206.4 | 294.9787 |
| Clarke1880 | 6378249.145 | 293.4663 |
| Clarke1880ARC | 6378249.145 | 293.4663 |
| Clarke1880Benoit | 6378300.789 | 293.4663 |
| Clarke1880ING | 6378249.2 | 293.466 |
| Clarke1880INTFoot | 6378306.37 | 293.4663 |
| Clarke1880RGS | 6378249.145 | 293.465 |
| Danish1876 | 6377019.27 | 300 |
| Everest1830_1962D | 6377299.366 | 300.8017 |
| Everest1830_1967D | 6377276.345 | 300.8017 |
| Everest1830_1973A | 6377301.243 | 300.8017 |
| Everest1830_1975D | 6377298.556 | 300.8017 |
| Everest1830_RSO1969 | 6377299.151 | 300.8017 |
| Everest1830Definition | 6377295.664 | 300.8017 |
| Everest1830Modified | 6377304.063 | 300.8017 |
| GRS1967 | 6378160 | 298.2472 |
| GRS1967Modified | 6378160 | 298.25 |
| GRS1980 | 6378137 | 298.2572 |
| GSK2011 | 6378136.5 | 298.2564 |
| Helmert1906 | 6378200 | 298.3 |
| Hough1960 | 6378270 | 297 |
| IAG1975 | 6378140 | 298.257 |
| IndonesianNationalSpheroid | 6378160 | 298.247 |
| International1924 | 6378388 | 297 |
| Krassowsky1940 | 6378245 | 298.3 |
| NWL9D | 6378145 | 298.25 |
| Plessis1817 | 6376523 | 308.64 |
| PZ90 | 6378136 | 298.2578 |
| Struve1860 | 6378298.3 | 294.73 |
| WarOffice | 6378300 | 296 |
| WGS72 | 6378135 | 298.26 |
| WGS84 | 6378137 | 298.2572 |
投影方法(gma.crs.ProjMethod)
| 投影(类) | 中文名 |
|---|---|
| Aitoff | 埃托夫投影 |
| AlbersConicEqualArea | 阿尔伯斯等积圆锥投影 |
| AzimuthalEquidistant | 等距方位投影 |
| Bonne | 彭纳 |
| CassiniSoldner | 卡西尼-斯洛德投影 |
| CompactMiller | 紧凑型米勒投影 |
| CylindricalEqualArea | 圆柱等积投影 |
| EckertI | 埃克特 I 投影 |
| EckertII | 埃克特 II 投影 |
| EckertIII | 埃克特 III 投影 |
| EckertIV | 埃克特 IV 投影 |
| EckertV | 埃克特 V 投影 |
| EckertVI | 埃克特 VI 投影 |
| EquidistantConic | 等距圆锥投影 |
| Equirectangular | 等距柱状投影 |
| LambertAzimuthalEqualArea | 兰伯特方位等积投影 |
| Mercator2SP | 墨卡托投影(2标准纬线) |
| Mollweide | 摩尔维特投影 |
| NaturalEarth | 自然地球投影 |
| Polyconic | 多圆锥投影 |
| Robinson | 罗宾森投影 |
| Sinusoidal | 正弦曲线投影 |
| Stereographic | 通用极球面投影 |
| Times | 泰晤士投影 |
| WinkelI | 温克尔 I 投影 |
| WinkelII | 温克尔 II 投影 |
本初子午线(gma.crs.PRIMEMs)
| 本初子午线名称 | 对应中文名 | 经线(°) |
|---|---|---|
| Athens | 雅典 | 23.7163375 |
| Bern | 伯尔尼 | 7.439583333 |
| Bogota | 波哥大 | -74.08091667 |
| Brussels | 布鲁塞尔 | 4.367975 |
| Ferro | 费罗 | -17.66666667 |
| Greenwich | 格林尼治 | 0 |
| Jakarta | 雅加达 | 106.8077194 |
| Lisbon | 里斯本 | -9.131906111 |
| Madrid | 马德里 | -3.687938889 |
| Oslo | 奥斯陆 | 10.72291667 |
| Paris | 巴黎 | 2.337229167 |
| Paris_RGS | 巴黎 | 2.337208333 |
| ReferenceMeridian | 参考经线 | 0 |
| Rome | 罗马 | 12.45233333 |
| Stockholm | 斯德哥尔摩 | 18.05827778 |
| Luoyang | 洛阳 | 112.5422641 |
角度单位(gma.crs.PRIMEMs)
| 角度单位名称 | 对应中文单位 | 每单位弧度(°) |
|---|---|---|
| Arcminute | 弧分 | 0.000291 |
| Arcsecond | 弧秒 | 4.85E-06 |
| Degree | 度 | 0.017453 |
| Grad | 百分制度 | 0.015708 |
| Gon | 百分制度 | 0.015708 |
| Microradian | 微弧度 | 1E-06 |
| Mil6400 | 密尔_6400 | 0.000982 |
| Milliarcsecond | 毫微秒 | 4.85E-09 |
| MinuteCentesimal | 百分制分 | 0.000157 |
| Radian | 弧度 | 1 |
| SecondCentesimal | 百分制秒 | 1.57E-06 |
线性单位(gma.crs.PRIMEMs)
| 单位 | 中文对照 | 每单位长度(m) |
|---|---|---|
| Meter | 米 | 1 |
| ClarkesLink | 克拉克令 | 0.201166 |
| GoldCoastfoot | 黄金海岸英尺 | 0.3048 |
| USSurveyFoot | 美国测量英尺 | 0.304801 |
| Foot | 英尺 | 0.3048 |
| ClarkesFoot | 克拉克英尺 | 0.304797 |
| link | 令 | 0.201168 |
| BritishChain | 英国测链(1922年废弃) | 20.11676 |
| ClarkesYard | 克拉克码 | 0.914392 |
| Kilometer | 千米 | 1000 |
| IndianYard | 印度码 | 0.914399 |
| BritishChain | 英国测链(贝诺伊特1895 B) | 20.11678 |
| BritishYard | 英国码(希尔斯 1922) | 0.914398 |
| GermanLegalMeter | 德国法定米 | 1.000014 |
| BritishChain | 英国测链(希尔斯 1922) | 20.11677 |
| BritishFoot | 英国英尺(希尔斯 1922) | 0.304799 |
6. 空间参考(gma.crs.SpatRef)
初始化一个一个空间参考。
7. gma 1.x 遗留函数
AlbersEqualArea
Mollweide
Robinson
CustomGCS
批量绘制世界地图
from gma import crs
from gma.map import plot, inres
import matplotlib.pyplot as plt
# 获取所有支持的投影
ProjMethods = [m for m in dir(crs.ProjMethod) if '__' not in m if 'Utils' not in m]
# 分别绘制 每个投影(默认参数) 下的世界地图
for m in ProjMethods:
# 生成 投影 m 的投影坐标系
PCS = crs.ProjCS(Name = 'GMA PCS', LinearUnit = 'Meter', ProjMethod = m, GCS = 'WGS84')
# 1.初始化一个地图框,用于绘图
MapF = plot.MapFrame(Axes = None, BaseMapProj = PCS, Extent = None)
# 2.将内置的世界矢量图层添加到地图框
MapL1 = MapF.AddLayer(inres.WorldLayer.Country, FaceColor = None, LineWidth = 0.2, EdgeColor = 'lightgray', Zorder = 1)
# 3.经纬网
MapF.AddGridLines(LONRange = (-180, 180, 30))
# 4.地图框
Frame = MapF.SetFrame(ShowBottom=False,ShowLeft=False,ShowRight=False,ShowTop=False)
MapF.Axes.set_title(m, fontsize = 7, y = 0.93)
# 保存每一张地图
plt.savefig(f'D:/{m}.jpg' ,bbox_inches='tight', dpi = 600)
绘图结果展示
部分地图绘制异常,因此不在此处展示



































![String类 [下]](https://img-blog.csdnimg.cn/0e589f1adfe3467d8fbf25b9bded99dc.png)



