气象数据之积温数据的获取与处理

数据获取

数据从中国气象共享网站获取
注册之后记得经常登陆签到,就当自己充了个vip一样在这里插入图片描述
要不你刚开始能下载的数据量就是2.0M.
到筛选那输入3.0点筛选在这里插入图片描述
出现了2个3.0然鹅只能选择第2种,因为第一种需要科研用户才能下载,科研用户需要省级以上的项目才能成为科研用户。所以只能选第二种,只有166个站点的数据,像我要处理的山东省的站点的数据只有6个。
然后点进去之后选择时间,间隔只能为2个月,比如选择2009.03-2009.04,然后弹出来一堆数据,由于我要的是气温数据,所以选择TEM,具体要什么数据就可以参照网站内的word,选择格式说明的doc就ok,在这里插入图片描述
每种后缀名对应的数据以及每种数据在.TXT中的对应列的含义也在里面。
筛选完之后就在这里插入图片描述
勾选2个TEM即可,重复操作,像10年跨度的数据可能需要操作一会。选完之后在数据框中提交,等待一会然后等数据处理成功之后就可以下载,下载给的是链接。
然后把它复制到记事本里面去,剪切一下一个一个下载就ok,下完之后把文件全部放一个文件夹里就行,为后期的处理铺垫,像我做的数据需要10年,每年8个月,一共就是80个.TXT。
数据
由于80个文本而且是全国的气象站点,所以处理起来挺麻烦的,如果一年一年的话,就需要把数据放一起然后筛选,这样时间成本一下就上去了,于是鄙人失眠了半个晚上想出了代码处理。最后tic toc一下用了将近5秒就拿出了山东省6个站点10年的积温数据
生物积温:指的是每天平均气温≥10℃的数据。
由于用的是MODIS数据15景合成的数据,规定的生长期为3月6日-10月6日,所以需要找出这里面≥10℃的数据,由于数据都是整月的数据,需要自己剔除一部分数据,如3.1-3.6,10.6-10.31日。
由于数据文件的命名非常的对称,为批量处理埋下了伏笔,其实就是真正循环就是为了字符串的拼接。
SURF_CLI_CHN_MUL_DAY_CES-TEM-12001-200910.TXT
所以只需要想办法把字符串拼接起来即可。由于是10年每年8个月,所以外层循环套年份,内层套月份。

file1 = 'SURF_CLI_CHN_MUL_DAY_CES-TEM-12001-';
file2 = '.TXT';
year = {'2009','2010','2011','2012','2013','2014','2015','2016','2017','2018'};
month =  {'03','04','05','06','07','08','09','10'};  %``

真正重要的就是这部分,因为外层年份用元胞数组{j}获取内层月份用{i}表示,
在这里插入图片描述
这样就阔以了,先拼出字符串好让textread能找到,我也尝试过用fid和fopen但是这样出现的数据是大元胞,又的继续重构,于是在小体量数据下还是用了textread,如果是像之前104w条数据还是建议用fid,fopen。
整体的思路就是先找到站点,然后拿出温度所在的列,就是第8列,如果是3月份取后面的25天,如果是10月就6天,然后是找到大于10℃的位置,由于数据是以0.1℃为单位,所以这里大于等于100,然后把所有的数据给并起来,最后得到一个总和就是这个年份的积温,其他6个站点也是同理,外层大循环就得到10年的数据。由于最后做总和的时候会有一个累加的过程,所以需要差分以及取出第一个数据,就需要差分拼接合成最后一个矩阵。在这里插入图片描述
最后一个xlswrite把它写到excel表里去,因为实在是不想自己加搜索路径,不如让系统自动帮我把绝对路径的前面部分自己找出来了。
在这里插入图片描述
这是最后运行的时间,比excel繁杂的操作快多了。
在这里插入图片描述
这个是后来加了range部分的结果,然后自己改一改excel就ok了在这里插入图片描述
这个就是最后的结果,然后和站点的坐标数据放一起然后便于导入Arcmap,导入的最后结果咯。在这里插入图片描述
然而之前把属性数据忘记放进去了直接导入了,就不想管了就这样把。
感谢我2点时Mind Palace的运动让我失眠到5点,昨天差点猝死。

发布了14 篇原创文章 · 获赞 2 · 访问量 847

猜你喜欢

转载自blog.csdn.net/weixin_43342986/article/details/103091189