Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >(数据科学学习手札75)基于geopandas的空间数据分析——坐标参考系篇

(数据科学学习手札75)基于geopandas的空间数据分析——坐标参考系篇

作者头像
Feffery
发布于 2020-02-19 07:25:18
发布于 2020-02-19 07:25:18
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

本文对应代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

  在上一篇文章中我们对geopandas中的数据结构展开了较为全面的学习,其中涉及到面积长度等计算的过程中提到了具体的计算结果与所选择的投影坐标系关系密切,投影坐标系选择的不恰当会带来计算结果的偏差,直接关乎整个分析过程的有效与否。

  作为基于geopandas的空间数据分析系列文章的第二篇,通过本文你将会学习到geopandas中的坐标参考系管理

2 坐标参考系基础

2.1 CRS

  在一个二维的平面中,我们可以使用如图1所示的坐标系统,通过坐标((x_{0},y_{0}))唯一确定点的位置:

图1

  现实世界中的地球作为一个球体,当我们想要用同样的方式利用坐标((\phi_{0},\lambda_{0}))来唯一确定地球球面上的某个位置时,需要一套适应球体形状的坐标系统。而当我们想要在纸面或电脑屏幕上绘制平面地图时,就又需要有一套将地球球面展平的方法,上述的这些用于在不同情况下定义对象位置信息的坐标系统,就称为坐标参考系统Coordinate Reference System,下文统称CRS):

图2

CRS可细分为地理坐标系投影坐标系

2.1.1 地理坐标系

  以弧度制下度数为单位的地理坐标系Geographic Coordinate Systems)帮助我们定位物体在地球球面上的具体位置以及绘制球体地图:

图3 WGS84地理坐标系示意图

地理坐标系以地表上确定的某一个点为原点((0,0)),创建了包裹全球的网格,譬如WGS84,将本初子午线与赤道的交点作为原点(图5):

图4 WGS84地理坐标系及其经纬网格

2.1.2 投影坐标系

地理坐标系虽然解决了我们在地球球面上定位的问题,但纬度和经度位置没有使用统一的测量单位,因为经度不变的情况下,纬度每变化1单位因为是对固定弧长的映射,所以真实距离是固定不变的,纬度变化1度的真实距离恒等于:

[ 2\pi\cdot地球极半径/360\approx110.95(千米) ] 可是经度每变化1单位对应的真实距离要随着纬度的变化而变化,经度变化1度的真实距离为: [ (2\pi\cdot赤道半径/360)\cdot\cos(当地纬度)\approx111.314\cos(当地纬度)(千米) ]

这就导致我们既不能直接在地理坐标系下精确度量几何对象的长度、面积,也无法直接用地理坐标系在平面上绘制出几何对象真实的形状。为了解决上述问题,各种各样的投影坐标系Projected Coordinate Systems)被开发出来(图4,其中右下角为地理坐标系,其余均为投影坐标系):

图5 各种CRS

投影坐标系指的是从将3D球面展平为2D平面的一套数学计算方法,利用它可以优化形状比例/距离以及面积的失真情况,但实际情况中没有在整个地球表面都能“三全其美”的投影坐标系,有些投影坐标系优化形状上的失真,有些投影坐标系优化距离上的失真,有些投影坐标系专门针对面积失真进行优化,而有些投影坐标系可以对局部区域进行三个方面上的优化。

图6 投影坐标系变换过程示意

  常用的投影坐标系横轴墨卡托Universal Transverse Mercator,简称UTM),基于经度将全球等分为编号0-60的区域,且每个区域又进一步细分为南半球区域或北半球区域,譬如图7所示为美国本土跨过的区域:

图7

  划分出的每个区域,其原点((0,0))位于左下角顶点,距离区域中轴线500千米(图8):

图8

  针对这样划分出的独立区域利用墨卡托投影法创建各自独立的坐标网格,这个过程可以通俗地理解为用圆筒包裹地球球体,从球心发散出的光穿过球体上每个位置点投射到外部圆筒内壁从而完成3D向2D的变换:

图8

  当然,这样做的后果是越靠近极点的几何对象被拉伸形变得越严重(图9),这也就是为什么俄罗斯疆域看起来如此庞大的原因:

图9 世界各国真实大小与墨卡托投影后差别

2.2 常用CRS格式

  通过前文我们了解到什么是CRS,而在计算机系统中要使用CRS,需要将其文档化,下面我们来了解CRS两种常见的文档存储格式。

2.2.1 Proj4

Proj4字符串是一种识别空间或坐标参考系统的简洁方法,通过其定义的语法规则,将想要定义的CRS全部参数信息保存到一条字符串中。

  • Proj4语法

Proj4字符串包含了一种CRS全部元素信息,用+连接每个元素定义部分,如下面的例子记录了横轴墨卡托北11区CRS对应的Proj4字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0

  它记录了如下信息:

proj=utm:声明投影方法为墨卡托 zone=11:声明对应北11区(因为这里是横轴墨卡托所以拥有独立分区,但并不是所有CRS都有分区,且在Proj4中区号加S才为南半球分区如11S,否则默认为北半球分区) datum=WGS84:声明基准面为WGS84(基准面是椭球体用来逼近某地区用的,因此各个国家都有各自的基准面。国内常用的基准面有:BEIJING1954XIAN1980WGS84等) units=m:声明坐标系单位设置为米 ellps=WGS84:声明椭球面(如何计算地球的圆度)使用WGS84

  上述例子记录了投影坐标系Proj4,下面我们再来看看地理坐标系对应的Proj4,如下例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0

  它记录了如下信息:

proj=longlat:声明这是一个地理坐标系 datum=WGS84:声明基准面为WGS84 ellps=WGS84:声明椭球面使用WGS84

  与投影坐标系相比,没有单位units的信息,因为地理坐标系通常单位为十进制度数;而上述两个示例中都带有towgs84=0,0,0,这是一个转换因子,在需要进行数据转换时使用。

2.2.2 EPSG编码

EPSGEuropean Petroleum Survey Group)编码,使用4或5位数字编码来唯一确定已存在的一种CRS,可以在http://spatialreference.org/ref/epsg/中查看和搜索所有已知的EPSGCRS对应关系(图10):

图10

  或在QGIS中查看:

图11

  譬如对于重庆,因为地跨东经105°11~110°11,中轴线距离108E更近,常用如下投影:

图12

  对应的EPSG编码为2381。

3 geopandas中的坐标参考系管理

  至此,我们已经对CRS有了较为全面的了解,打好了基础,接下来我们来正式学习geopandas中的坐标参考系管理,geopandas调用pyproj作为CRS管理的后端,因此所有可以被pyproj.CRS.from_user_input()接受的合法输入同样可以被geopandas识别,譬如针对上文所说的应用于重庆区域绘图的Xian 1980 / 3-degree Gauss-Kruger CM 108E

  • Proj4
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pyproj

pyproj.CRS.from_user_input('+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=IAU76 +units=m +no_defs')

图13

  • EPSG
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pyproj.CRS.from_user_input(2381)

图14

  直接传入字符串格式的EPSG亦可:

图15

  查看对应的Proj4信息,关键参数与前面Proj4一致,只是以Proj4形式传入时系统会视作创建未知CRS一样,因此相对于官方CRS缺少了一些无关紧要的其他信息:

图16

3.1 CRS的设置与再投影

  在上一篇文章(数据科学学习手札74)基于geopandas的空间数据分析——数据结构篇中我们介绍了创建GeoSeriesGeoDataFrame的方法,实际上,现实的空间分析计算任务中,必须要为数据设置合适的CRS,在geopandas.GeoSeries()geopandas.GeoDataFrame()中就包含参数crs,下面我们举例说明,还是先用到geopandas自带的世界国家地区数据,我们从中选择中国(坚持一个中国,我们将中国台湾地区组合进国土中):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import geopandas as gpd

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
# 利用name字段选择中国区域
china = world.loc[world['name'].isin(['China', 'Taiwan'])]
china

图17

  查看其crs属性即为其对应CRS,为WGS84对应的EPSG:4326,在当前的CRS下将其绘制出来:

图18

  利用to_crs()将其再投影到EPSG:2381并进行绘制:

图19

  通过比较可以发现,再投影之后的中国形变失真情况得到缓解,且坐标系单位范围也发生了变化(EPSG:2381单位:米),接下来我们参考谷歌地图上点击出的重庆渝中区某地坐标:

图20

  基于此创建只包含一个点的GeoSeries,尝试将其与EPSG:2381下的中国地图一同绘制:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from shapely import geometry
import matplotlib.pyplot as plt

cq = gpd.GeoSeries([geometry.Point([106.561203, 29.558078])],
              crs='EPSG:4326')

fig, ax = plt.subplots()
china.to_crs(crs='EPSG:2381').plot(ax=ax, color='red', alpha=0.8)
cq.plot(ax=ax, color='orange', markersize=100, marker='x')
plt.xticks(rotation=20)

图21

  可以看出我们创建在重庆境内的点并没有绘制在正确的位置,接下来我们对cq进行再投影,再尝试将其与EPSG:2381下的中国绘制在一起:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig, ax = plt.subplots()
china.to_crs(crs='EPSG:2381').plot(ax=ax, color='red', alpha=0.8)
# 先再投影到EPSG:2381
cq.to_crs(crs='EPSG:2381').plot(ax=ax, color='orange', markersize=100, marker='x')
plt.xticks(rotation=20)

图22

  这时我们定义的点被绘制到正确的位置。

  同样地,可以在投影后计算更为准确的面积,这里举一个粗糙的例子(实际计算国土面积不会这样粗糙),以中国中轴线东经104.19度最靠近的105度经线对应的EPSG:2380CRS计算面积:

图23

  如果直接用原来的ESPG:4326计算面积结果如下:

图24

  可以看出使用ESPG:2380计算出的面积比较接近大家记忆中的960万平方公里。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nature主刊Pangu-Weather主观解读
1. Pangu做了什么:通俗地概述Pangu-Weather,标准是新闻专业的也可以看懂,老少咸宜。
自学气象人
2023/09/05
1.5K0
Nature主刊Pangu-Weather主观解读
第3篇 | arXiv-2023 | 盘古天气预报模型与气象业务数据的兼容性
最近,出现了多种基于机器学习的数据驱动天气预报模型。与传统的数值天气预报(NWP)系统相比,这些模型在准确性方面极具竞争力。特别是盘古天气模型,该模型是开源非商业用途的,其预测性能已得到欧洲中期天气预报中心(ECMWF)的验证,并于近期发表在《自然》杂志上。
自学气象人
2023/09/05
6380
第3篇 | arXiv-2023 | 盘古天气预报模型与气象业务数据的兼容性
4个气象AI大模型免费在线体验,无需部署,零门槛畅玩!内含:NeuralGCM、盘古、伏羲、风乌
在做气象与 AI 交叉研究的朋友们,看到一个又一个气象大模型横空出世的时候,一定心痒痒,想要第一时间上手把玩。
用户11172986
2024/08/09
1.4K0
4个气象AI大模型免费在线体验,无需部署,零门槛畅玩!内含:NeuralGCM、盘古、伏羲、风乌
AI气象大模型最新总结 ! 揭秘智能天气预测的新纪元
全球目前主要使用的AI气象预测模型包括谷歌DeepMind的GraphCast、华为云的Pangu-Weather、清华大学和中国气象局的NowcastNet、阿里巴巴的SwinVRNN*、复旦大学开发的伏羲、上海人工智能实验室的风乌、英伟达Nvidia的FourCastNet、微软和华盛顿大学的DLWP,以及欧洲中期天气预报中心(ECMWF)的CNN模型。除此之外,还有一些新兴的AI气象模型如前NASA科学家创立的初创公司开发的Zeus AI,专注于短期预测,以及谷歌研究和谷歌DeepMind开发的最新模型MetNet-3,它提供高分辨率的短期天气预测。这些模型利用最新的人工智能和机器学习技术,显著提升了气象预测的准确性和细节层面的分析能力。随着技术进步,未来的气象预测将更加精准和高效。
ClimAI 智慧气象
2023/12/03
13.1K0
AI气象大模型最新总结 ! 揭秘智能天气预测的新纪元
2024 气象人不可错过的免费 Workshop | 使用盘古、伏羲、风乌气象 AI 大模型预测台风路径
本次 Workshop:动手实践盘古、伏羲、风乌气象 AI 大模型 | 台风路径预报 由和鲸社区发起举办,面向所有人免费开放。
用户11172986
2024/07/06
8830
2024 气象人不可错过的免费 Workshop | 使用盘古、伏羲、风乌气象 AI 大模型预测台风路径
实测盘古气象模型在真实观测场中的预报效果如何
根据华为盘古气象模型团队在 nature 发表的论文显示,其模型准确率已经超越了 ECMWF 的 IFS 模型,但是这些论文中的检验结果都是在人工构造的理想化气象场中(ERA5)进行的,而 ERA5 与真实观测场又是有差距的,盘古在真实观测场中的表现如何,一直以来都缺乏一些实测的报告或者文章介绍。得益于盘古气象模型团队将其模型开源,使我可以在自己个人电脑上搭建盘古气象模型进行预报检验具有了可操作性。因此我专门花了一点时间,来做了一个对盘古气象模型在真实观测场中预报的小检验,以观察其在真实气象观测场中的预报效果。
自学气象人
2023/09/05
1.9K1
实测盘古气象模型在真实观测场中的预报效果如何
ERA5全球气象每小时、每日与每月数据:手动下载与Python批量下载
  本文介绍在ERA5气象数据的官方网站中,手动下载、Python代码自动批量下载逐小时、逐日与逐月的ERA5气象数据各类产品的快捷方法。
疯狂学习GIS
2023/12/26
7.2K0
ERA5全球气象每小时、每日与每月数据:手动下载与Python批量下载
AI预测极端天气提速5000倍!微软发布Aurora,借AI之眼预测全球风暴
自人类有历史以来,就一直执着于预测天气,以各种方式破解「天空之语」,我们慢慢发现,草木、云层似乎都与天气有关,这不仅仅是因为人类从事生产的需要,也是人类想要对着大风歌唱、在月光下吟诗的需要。
新智元
2024/06/05
3080
AI预测极端天气提速5000倍!微软发布Aurora,借AI之眼预测全球风暴
不是取代,而是共生!气象科学的未来需要AI与数值预报的有机结合
数值天气预报和 AI 气象预报存在天然的耦合关系,数值预报可以通过物理数学理论提供可解释的预报结果,AI 气象大模型则能够利用知识经验提高预报计算速度和精度,两者互补才是未来气象预报发展的最有效途径。
HyperAI超神经
2024/07/16
3310
不是取代,而是共生!气象科学的未来需要AI与数值预报的有机结合
DeepMind通天了!AI中期天气预报吊打全球顶级气象台:1台TPU1分钟预测10天天气
最近,DeepMind和谷歌新研究出了一种基于机器学习的天气模拟器,可以在60秒内预测10天内的天气,而且准确率极高!
新智元
2023/01/09
1.2K0
DeepMind通天了!AI中期天气预报吊打全球顶级气象台:1台TPU1分钟预测10天天气
首次应用!中气爱自研AI模型“坤舆”成功预测超级气旋风暴摩卡路径
近日,超级气旋风暴摩卡登陆缅甸,残余环流进入我国,造成广泛影响。摩卡生成之前,中气爱核心技术成员NZK调试刚刚研发完成的AI模型“坤舆”,并和中气爱其他成员通力合作,将其投入摩卡的路径预测之中。在摩卡还未获得命名时,坤舆模型的输出结果认为,摩卡将在缅甸实兑登陆(可视化结果包含在5月9日的中气爱b站视频中)。
自学气象人
2023/06/21
5380
首次应用!中气爱自研AI模型“坤舆”成功预测超级气旋风暴摩卡路径
AI助力数据驱动是否会改变NWP?(一)
2022年11月14-17日,欧洲中期天气预报中心(ECMWF)和欧空局(ESA)联合举办了第3届机器学习用于地球系统观测和预报主题研讨会。这次会期为4天的研讨会,采用以线下为主和少量线上报告的方式,包括了43个口头报告,40个墙报,内容十分丰富。
自学气象人
2023/06/21
3080
AI助力数据驱动是否会改变NWP?(一)
总结 | 北京城市气象研究所范水勇:数值天气预报介绍
AI 研习社按:「AI Challenger 全球 AI 挑战赛」是面向全球人工智能人才的开源数据集和编程竞赛平台,本次 AI 大赛气象赛道应用了一个很重要的数据源-「睿图」预报数据,睿图就是北京市气象局数值天气预报体系。
AI科技评论
2018/12/14
1.5K0
DeepMind大模型登Science:1分钟预测10天天气数据,90%指标超越人类最强模型
它的分辨率为0.25度经度/纬度(在赤道处约为28×28公里),而目前的最高分辨率为1度。
量子位
2023/11/16
5370
DeepMind大模型登Science:1分钟预测10天天气数据,90%指标超越人类最强模型
数据驱动:理查孙手工NWP实践百年后的新引擎
大约100年前,现代动力气象的鼻祖,巧妙绕过了难以得到解析解的偏微分方 程组,通过向观测数据学习,用天气图上不断丰富的各自物理量的观测和计算(如 通量)、借助模型对复杂问题的简化(如涡度守恒、正压近似等),让现代动力气 象学,在大气运动偏微分方程数值解被得到前数十年,就被有效用于天气预报。
自学气象人
2023/06/21
3840
数据驱动:理查孙手工NWP实践百年后的新引擎
再登Nature!从玻璃箱的水流到200万平方公里的降雨预报,DeepMind的AI物理模拟上天了
去年7月,DeepMind用图网络模拟了玻璃箱中的水体流动,如今他们将这个玻璃箱放大到了200万平方公里的大气层,并用深度生成模型取代了大气物理方程。
AI科技评论
2021/10/11
9190
再登Nature!从玻璃箱的水流到200万平方公里的降雨预报,DeepMind的AI物理模拟上天了
气象遇见机器学习
近些年来关于人工智能(AI)、机器学习(machine learning)、深度学习(deep learning)的新闻数不胜数。各领域也都高举人工智能大旗,试图利用机器学习,深度学习等技术解决行业内的问题,拓展新业务。尤其是在图像识别、语言识别等领域,深度学习的应用让人惊叹。
MeteoAI
2019/07/24
5.5K0
彩云天气:用神经网络「看见」北京的下一场雪
「经验告诉我们:天空的薄云,往往是天气晴朗的象征;那些低而厚密的云层,常常是阴雨风雪的预兆……」
机器之心
2019/03/06
1.2K0
彩云天气:用神经网络「看见」北京的下一场雪
AI助力数据驱动是否会改变NWP?(二)
本次会议的主要目的,除了学术交流之外,还要通过与会专家讨论,针对关键主题,得到会议相对统一的认识。为此,会议最后一天,按照会议主题进行了专题讨论并给出的相关会议结果。
自学气象人
2023/06/21
2740
AI助力数据驱动是否会改变NWP?(二)
基于深度学习天气预报(DLWP)模型的集合预报系统来开展次季节预测
“Traditional weather prediction tells us what is likely to happen within the next 24 hours and up to two weeks ahead, whereas climate prediction tells us what will likely happen in the coming seasons. Until recently, there was a gap between the weather and climate predictions leaving us unsure about what may happen between two weeks to two months from now. This time window between weather (up to 2 weeks) and climate (a season and longer) is known as “subseasonal.”The forecasting effort targeting this subseasonal time window and bridging the gap between the weather and climate predictions is known as subseasonal-to-seasonal (S2S) prediction.
气象学家
2022/01/18
1.9K0
基于深度学习天气预报(DLWP)模型的集合预报系统来开展次季节预测
推荐阅读
Nature主刊Pangu-Weather主观解读
1.5K0
第3篇 | arXiv-2023 | 盘古天气预报模型与气象业务数据的兼容性
6380
4个气象AI大模型免费在线体验,无需部署,零门槛畅玩!内含:NeuralGCM、盘古、伏羲、风乌
1.4K0
AI气象大模型最新总结 ! 揭秘智能天气预测的新纪元
13.1K0
2024 气象人不可错过的免费 Workshop | 使用盘古、伏羲、风乌气象 AI 大模型预测台风路径
8830
实测盘古气象模型在真实观测场中的预报效果如何
1.9K1
ERA5全球气象每小时、每日与每月数据:手动下载与Python批量下载
7.2K0
AI预测极端天气提速5000倍!微软发布Aurora,借AI之眼预测全球风暴
3080
不是取代,而是共生!气象科学的未来需要AI与数值预报的有机结合
3310
DeepMind通天了!AI中期天气预报吊打全球顶级气象台:1台TPU1分钟预测10天天气
1.2K0
首次应用!中气爱自研AI模型“坤舆”成功预测超级气旋风暴摩卡路径
5380
AI助力数据驱动是否会改变NWP?(一)
3080
总结 | 北京城市气象研究所范水勇:数值天气预报介绍
1.5K0
DeepMind大模型登Science:1分钟预测10天天气数据,90%指标超越人类最强模型
5370
数据驱动:理查孙手工NWP实践百年后的新引擎
3840
再登Nature!从玻璃箱的水流到200万平方公里的降雨预报,DeepMind的AI物理模拟上天了
9190
气象遇见机器学习
5.5K0
彩云天气:用神经网络「看见」北京的下一场雪
1.2K0
AI助力数据驱动是否会改变NWP?(二)
2740
基于深度学习天气预报(DLWP)模型的集合预报系统来开展次季节预测
1.9K0
相关推荐
Nature主刊Pangu-Weather主观解读
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验