一个月前写了一篇“使用Arcgis处理CMIP6(netCDF)数据的流程”后,一直收到朋友们的私信,也几乎天天都有交流。说来惭愧,后来我放弃了使用Arcgis进行处理这一条路,而是直接采用Python提取栅格点的时间序列数据,进行处理。

目前忙着降尺度的工作,可能会减少在知乎上的交流,因此在这里我会把目前掌握的部分数据提取方法分享出来,希望能帮到大家。


不用写代码的方法:

这个方法是我后面才发现的,优点就四个字:简单粗暴!,缺点是输出格式死板,需要就格式问题调整很久。

首先,你需要在电脑上装有java的环境(别皱眉,只要有环境就行,不需要coding);

然后,点击下面链接,下载panoply(这个软件也有制图的功能,并且成图操作非常简单友好);

https://www.giss.nasa.gov/tools/panoply/​www.giss.nasa.gov

下载好之后打开这个软件,选择nc文件,右边可以看到数据描述性信息,选中要输出的变量,如PR,右键选择export csv,然后等着就行。

不知道为什么一直上传图片失败,图先欠着,下同...

输出之后的csv文件普遍非常大,我示例中最大的一个达到了6g以上。它的数据输出后是这样的,每个时间点的全球数据作为一个矩阵,每一列是同一经度下,每一行是同一纬度下,以分辨率360*720为例,这个矩阵的大小就是(360,720),它是月尺度的,从1850-2014一共165年,1980个月,所以一共有1980个这样的矩阵,综上,PR的数据形态就是(1980,360,720)。

但是这样的数据形式我们不好应用,下面介绍使用python的方法提取。


默认大家都拥有配置好的python3环境,我们需要的库有:netCDF4,numpy,pandas。

其中netCDF4用来查看数据,了解数据信息,制定提取策略。numpy和pandas用于提取数据,并按我们需要的格式输出。

主要是查看数据的shape:

for 

然后你会看到我在前面提过的(t,x,y)这个形式,可以理解为一个三维矩阵(t,(x,y)),(x,y)代表数据的分辨率,如(360,720),就意味着一共有360*760个栅格点,对应到纬度和经度后,我们就可以知道这个数据是0.5度*0.5度的栅格,即50km分辨率。

那么现在我们要做的就是提取我们想要的数据了。很多朋友都在问我怎么按区域提取数据,我没有做这个工作,我是按照手里有的实测站点位置来检索栅格点并下载数据的,按区域下载的思路我放在最后说。

pr

首先定义一个函数用来找到我们所需经纬度点最近的栅格点:

import 

现在写一个for循环,提取出某个点的时间序列数据到一个list中:

for 

同理,通过循环嵌套就可以提取出所有的点的时间序列数据。

这时,有的朋友可能会发现输出的结果里没有时间这一列。这是因为我发现nc文件中的时间格式如果直接导出的话看起来类似于时间戳,但是转化后会发现对不上,所以我采取了自己生成日期序列的笨办法(月尺度的还好,日尺度的很麻烦,因为大多数模型都没有闰年这个概念,即没有2月29日,生成日尺度日期序列时要避开这一坑),把list转为数据框后,加上日期序列这一index,再输出为csv即可。不过,如果做多模型,并且后续处理分析也在python中完成的话,我觉得完全没必要将中间数据输出。

如果要做月变化的对比,可以采取切片的方式,将list按12步长切片,每一片都是一年的12条数据。

def 

数据提取暂且说这么多,开头提到的按区域提取数据的思路,我的想法是:通过目标区域的外多边形坐标经纬度点集,然后做一个遍历判断,把在多边形内的点筛选出来,得到符合要求的点的索引号,然后把这些点的数据输出。但是因为这段时间太忙,还没有动手尝试过,大家有思路的话,也欢迎在评论区交流。

panda提取时间戳中的日期_CMIP6数据提取---Python实现方案相关推荐

  1. panda提取时间戳中的日期_Pandas处理时间序列数据的20个关键知识点

    时间序列数据有许多定义,它们以不同的方式表示相同的含义.一个简单的定义是时间序列数据包括附加到顺序时间点的数据点. 时间序列数据的来源是周期性的测量或观测.许多行业都存在时间序列数据.举几个例子: 一 ...

  2. panda提取时间戳中的日期_工作中常用的十个日期时间计算公式,你一定要收藏...

    1.计算本月天数 在单元格输入公式:=DAY(EOMONTH(TODAY(),0)) 后将格式改为常规. 2,计算年龄 在C4单元格输入公式:=DATEDIF(B4,TODAY(),"y&q ...

  3. panda提取时间戳中的日期_《我在时间尽头等你》中的文案,总有一个戳中你的泪点...

    1. 最好的爱情是什么样?不只是爱闪闪发光的你,是连同你的脆弱.敏感.哭泣,也一并捧在手心:不只是爱和你在一起的幸福,是连同生活的辛苦.委屈.不测,也坚定站在你的身边. 2. 一个人如果爱着什么,是会 ...

  4. python读取日期_从文件中读取日期和数据(Python)

    我想从文件中读取时间字符串和数据,但是当我使用loadtxt时,我不能同时读取字符串和数字,因为字符串不是浮点型的.所以我尝试使用genfromtxt并使用delimiter=[]+[]+[]作为我所 ...

  5. java向mysql写入数据慢_通过java代码往mysql数据库中写入日期相关数据少13个小时...

    通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...

  6. java通过poi读取excel中的日期类型数据或自定义类型日期

    java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的  12-十月-2019,而Excel中输入的是 2019/10/12 ...

  7. 利用正则表达式提取网页中Table内的数据

    利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  8. python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...

    python中为什么用json有什么作用 如何用python读取json里面的值啊我爱你,所以我给了你伤害我的权力,只要我能忍受,我会一直陪伴着你,但你不能伤害我太多. 数据如下,我想要读取name. ...

  9. JAVA正则提取字符串中的日期

    在我们解析字符串的时候,有这么一个需求,需要提取字符中的日期,例如:"开奖日期:2021年3月28日 兑奖截止日期:2021年5月26日" 输入样例: 开奖日期:2021年3月28 ...

最新文章

  1. Practical Vim 第一章 第二章
  2. Mac过热降频的罪魁祸首,竟是插到了左边的Type-C口
  3. 织梦正则批量替换文章内容内链变成绝对路径
  4. Spring Cloud Alibaba - 23 Gateway初体验
  5. MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法
  6. epoll(eventpoll)是干嘛的?IO多路转接技术(相较select、poll的优点)
  7. synchronized与java.util.concurrent.locks.Lock的相同之处和不同之处
  8. 是否应该饮用酵素和自制的葡萄酒
  9. Java中lastValue_在Logstash中为sql_last_value使用表的ID?
  10. 在Spring项目中集成使用MongoDB
  11. springcloud工作笔记094---springcloud项目后端验证_hibernate validator后端校验字段_介绍了解
  12. PHP 调用shell命令
  13. Windows win7下VMware Virtual Ethernet Adapter未识别网络解决方法
  14. MySQL 常用函数大全
  15. 软件开发人员的简历项目经验怎么写?
  16. win10 软件移动位置信息服务器,如何修改win10软件默认安装位置
  17. 如何使用iTunes与iTools导出微信聊天记录
  18. Unity基础开发之事件函数的执行顺序
  19. Jane Austen谈Python:文学与技术的交集
  20. 自带显示大屏 富士通ScanSnap iX1500扫描仪初体验

热门文章

  1. 关于函数strtok和strtok_r的使用要点和实现原理(一)
  2. 公式字母上方法的波浪线~如何添加
  3. PageRank算法Python实现
  4. SSM毕设项目校园生活互助平台ep2p1(java+VUE+Mybatis+Maven+Mysql)
  5. python 执行命令,并获取结果及执行状态(os.popen、subprocess.Popen、os.system)
  6. 利用朴素贝叶斯进行新闻文本分类
  7. DCF(Discounted Cashflow)模型一(自由现金流)
  8. Linux面板小程序,宝塔面板微信小程序使用图文教程
  9. 在AWS中国区使用kops安装k8s完全指南
  10. Python re 正则:抓取网页上电驴/磁力/迅雷链接