爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 29925|回复: 27

[其他] 数据处理,HadISST1_SST_1870-1900.txt转nc

[复制链接]

新浪微博达人勋

发表于 2021-1-12 21:52:50 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
数据处理,HadISST1_SST_1870-1900.txt 转 nc

这个问题我做了很久没有找到合适的方法,用ncl自带的asciiread不能直接读,请问论坛各位前辈怎么处理呢?
ncl能处理吗?不能的话用什么办法或者软件可以呢?

数据排列以月为单位,每个月之前有一行数据说明

数据排列以月为单位,每个月之前有一行数据说明

txt打开是这样的

txt打开是这样的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-1-14 09:57:16 | 显示全部楼层

回帖奖励 +10 金钱

hadley sst有封装好的nc文件啊,为啥不直接下nc文件?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-12 21:59:11 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-12 23:01:30 | 显示全部楼层

回帖奖励 +10 金钱

Python语言,大概不超过10行就能完成数据准备
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-13 08:44:50 | 显示全部楼层
edwardli 发表于 2021-1-12 23:01
Python语言,大概不超过10行就能完成数据准备

怎么实现呢,我写的代码读不出来
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-13 10:06:32 | 显示全部楼层

回帖奖励 +10 金钱

  1. loadscript("$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl")
  2. loadscript("$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl")
  3. loadscript("$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl")
  4. begin  

  5.         lat=fspan(89.5,-89.5,180)
  6.         lon=fspan(-179.5,179.5,360)
  7.        
  8.         lat!0="lat"
  9.         lat@long_name="latitude"
  10.         lat@units="degrees_north"
  11.         lon!0="lon"
  12.         lon@long_name="longitude"       
  13.         lon@units="degrees_east"

  14.         f0=asciiread("/mnt/e/NCL/SST/HadISST1_SST_2004.txt",(/2172,360/),"integer")
  15.         sst_jan=f0(1:180,:)
  16.         sst_jan@_FillValue=-32768       
  17.         sst_jan2float=tofloat(sst_jan)/100.

  18.         sst_jan2float!0="latitude"
  19.         sst_jan2float!1="longitude"
  20.         sst_jan2float&latitude=lat
  21.         sst_jan2float&longitude=lon
  22.         sst_jan2float@units="C"
  23.         sst_jan2float@long_name="sea surface temperature in january 2004"
  24.         printVarSummary(sst_jan2float)

  25.         sst_feb=f0(182:361,:)
  26.         sst_feb@_FillValue=-32768
  27.         sst_feb2float=tofloat(sst_feb)/100.       

  28.         sst_feb2float!0="latitude"
  29.         sst_feb2float!1="longitude"
  30.         sst_feb2float&latitude=lat
  31.         sst_feb2float&longitude=lon
  32.         sst_feb2float@units="C"
  33.         sst_feb2float@long_name="sea surface temperature in february 2004"
  34.         printVarSummary(sst_feb2float)

  35.         system("rm -f /mnt/e/NCL/SST/HadISST1_SST_2004.nc")
  36.         fo=addfile("/mnt/e/NCL/SST/HadISST1_SST_2004.nc","c")
  37.         fo->sst_jan=sst_jan2float
  38.         fo->sst_feb=sst_feb2float

  39. end
复制代码
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-13 10:12:47 | 显示全部楼层
我下载了HadISST1_SST_2004.txt.gz这个数据,测试了一下,没什么问题,你可以参考一下 。这个数据格式稍微麻烦了一点就是每隔一个月就有一行说明,所以读的时候需要跳过那一行说明。剩下的月份你可以计算一下行数,读就行了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-13 10:42:28 | 显示全部楼层

回帖奖励 +10 金钱

matlab应该也可以做
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-14 08:37:05 | 显示全部楼层
sc0rp1o1 发表于 2021-1-13 10:12
我下载了HadISST1_SST_2004.txt.gz这个数据,测试了一下,没什么问题,你可以参考一下 。这个数据格式稍微 ...

这个一共若是年份太多了挨着算有点多诶,可以循环实现吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-14 09:13:26 | 显示全部楼层
lt5201314 发表于 2021-1-14 08:37
这个一共若是年份太多了挨着算有点多诶,可以循环实现吗

循环应该是可以的,你得想一下 sst = f0(:,:) 这一行应该怎么写
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表