爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11069|回复: 14

[求助] fortran批量处理读取文件目录之后如何处理

[复制链接]

新浪微博达人勋

发表于 2013-2-13 11:17:06 | 显示全部楼层 |阅读模式

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

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

x
按照清风版主的帖子,我已经把一个文件夹目录下的nc文件名称全部读到了dir.txt,程序如下所示:
program main
character(200) aaaa
character(200) buffer
integer n,i
n=64
open(1,file='d:/data/dir.txt',access="sequential", status="old")
do 10,i=1,n,1
  read(1, fmt="(A79)") aaaa
  open(2,file=aaaa,access="sequential", status="old")
  read(2, fmt="(A79)") buffer
  print*,aaaa
10 continue
close(1)
end
以上都可以成功实现。
现在的问题是每一个nc文件之中有如下变量及其信息如下所示:
Source:
           D:\data\2\pottmp.sig995.1948.nc
Format:
           classic
Global Attributes:
           Conventions = 'COARDS'
           title       = '4x daily NMC reanalysis (1948)'
           history     = 'created 99/05/11 by Hoop (netCDF2.3)'
           description = 'Data is from NMC initialized reanalysis
                         (4x/day).  These are the 0.9950 sigma level values.'
           platform    = 'Model'
           references  = 'http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.html'
Dimensions:
           lon  = 144
           lat  = 73
           time = 1464  (UNLIMITED)
Variables:
    lat   
           Size:       73x1
           Dimensions: lat
           Datatype:   single
           Attributes:
                       units         = 'degrees_north'
                       actual_range  = [9.00e+01 -9.00e+01]
                       long_name     = 'Latitude'
                       standard_name = 'latitude'
                       axis          = 'Y'
    lon   
           Size:       144x1
           Dimensions: lon
           Datatype:   single
           Attributes:
                       units         = 'degrees_east'
                       long_name     = 'Longitude'
                       actual_range  = [0.00e+00 3.58e+02]
                       standard_name = 'longitude'
                       axis          = 'X'
    time  
           Size:       1464x1
           Dimensions: time
           Datatype:   double
           Attributes:
                       units         = 'hours since 1-1-1 00:00:0.0'
                       long_name     = 'Time'
                       actual_range  = [1.71e+07 1.71e+07]
                       delta_t       = '0000-00-00 06:00:00'
                       standard_name = 'time'
                       axis          = 'T'
    pottmp
           Size:       144x73x1464
           Dimensions: lon,lat,time
           Datatype:   int16
           Attributes:
                       long_name               = '4xDaily potential temperature at sigma level 995'
                       unpacked_valid_range    = [1.50e+02 9.00e+02]
                       actual_range            = [1.98e+02 3.41e+02]
                       units                   = 'degK'
                       add_offset              = 3.43e+03
                       scale_factor            = 0.1
                       missing_value           = 3.28e+04
                       precision               = 1
                       least_significant_digit = 1
                       GRIB_id                 = 13
                       GRIB_name               = 'POT'
                       var_desc                = 'Potential Temperature'
                       dataset                 = 'NMC Reanalysis'
                       level_desc              = 'Surface'
                       statistic               = 'Individual Obs'
                       parent_stat             = 'Other'
                       valid_range             = [-3.28e+04 -2.53e+04]

我的问题是,在上面的fortran程序之中,我应该如何把不同的变量进行处理呢?我想把对每一个格点的数据进行统计,超过一定阈值如5,就计数,不超过5就不计数。并把最终的计数放在相应的格点。现在还不是很清楚,如何把nc文件中的变量在fortran程序之中单独赋给变量或者数组。然后对这些变量和数组进行操作。最终输出几个维度的文件:a(lon,lat,time,poptmp),或者单独一个变量一个信息如b(lat),c(lon)……,不知道大家有没有例子或者提供建议。

看了很多帖子,发现很少有读取文件名之后,接下来的操作的帖子。
请大家帮忙,提供一个参考的例子。

谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-17 09:54:07 | 显示全部楼层

你好 这个问题解决了吗?我现在用fortran打开几十个文件不知道有没有什么好的办法 难道要需要写几十个open?谢谢 代表广大新手感谢你
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 成长值: 0
发表于 2013-2-13 21:00:41 | 显示全部楼层
不知道你有没有注意到,fortran处理nc文件比较麻烦,需要下载插件,具体搜索论坛相关教程看看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-2-13 21:21:01 | 显示全部楼层
言深深 发表于 2013-2-13 21:00
不知道你有没有注意到,fortran处理nc文件比较麻烦,需要下载插件,具体搜索论坛相关教程看看

嗯。我是处理nc、txt、dat和二进制无格式文件。除了nc之外,其他的不知深深版主有没有什么建议。请指点!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-2-13 22:24:45 | 显示全部楼层
言深深 发表于 2013-2-13 21:00
不知道你有没有注意到,fortran处理nc文件比较麻烦,需要下载插件,具体搜索论坛相关教程看看

1、嗯。深深版主我现在最主要的问题是就是我能够把一个目录下的二进制文件名称读到一个txt文件之中。但是接下来。我这个文件之中如何处理还不是很清楚。我想看看例子。但是找了半天也没有找到。
2、还有就是我还在处理txt文件。这些txt是气象共享网下载的数据。包含站点号、经纬度、降水、温度等等。我把这些文件的名称读到了一个单独的txt文件之中,但是这些任何一个文件之中包含以上降水等等要素。我还是不是很清楚如何把他们赋值到变量,然后进行统计计算。想看看有没有例子。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-2-15 08:56:18 | 显示全部楼层
kongfeng0824 发表于 2013-2-13 22:24
1、嗯。深深版主我现在最主要的问题是就是我能够把一个目录下的二进制文件名称读到一个txt文件之中。但是 ...

1  读取的时候,要明白文件的排列方式,然后按照排列方式读取,跟读取二进制还是txt没有太大的关系
2 无论是什么文件,读取出来以后,就可以进行相应的计算,要根据你读取时候的数组的方式进行算法的设计,然后进行计算,最后把结果输出
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-2-15 22:13:54 | 显示全部楼层
topmad 发表于 2013-2-15 08:56
1  读取的时候,要明白文件的排列方式,然后按照排列方式读取,跟读取二进制还是txt没有太大的关系
2 无 ...

嗯谢谢。现在我已经解决了第一步了。第二部的问题是我的文件之中有好几个变量要素。我还不知道应该如何去把不同的变量要素提取出来。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-2-16 08:12:03 | 显示全部楼层
kongfeng0824 发表于 2013-2-15 22:13
嗯谢谢。现在我已经解决了第一步了。第二部的问题是我的文件之中有好几个变量要素。我还不知道应该如何去 ...

不是很明白你的意思  既然都读取出来了,难道还愁变量的提取
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-2-18 02:14:12 | 显示全部楼层
topmad 发表于 2013-2-16 08:12
不是很明白你的意思  既然都读取出来了,难道还愁变量的提取

嗯。还是不是很清楚到底该如何处理。读出来了,但是不太明白。自己在捉摸琢磨啊。多谢了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-16 14:35:20 | 显示全部楼层
请问楼主问题解决了么,我现在也遇到这个问题啦,我是有一千多个数据文件,文件名读到一个dir.txt文件中后我就不知道怎么进行循环处理数据了,我的是降水资料,里面的信息是站点号,经纬度,海拔,降水这五个数据,想要提取一定范围的降水数据出来,不知道把程序加在哪个部分{:5_275:}
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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