爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4069|回复: 10

[求助] 如何将几百个站点资料输出成一个站点一个TXT

[复制链接]

新浪微博达人勋

发表于 2016-11-7 15:38:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 动力气象。 于 2016-11-8 10:03 编辑

现在是800多个站点资料全在一个TXT力。我现在想让各个站点单独存放在以各自站点命名的TXT里。现在我按站点名输出TXT。但是没法将数据输出到各个TXT里。以下是我编的程序。想法比较简单。但是不知道该怎么修改。

program main
    character*5  sta(803),sta2(12155142)
    real lat(12155142),lon(12155142)
    integer v(12155142),year(12155142),mon(12155142),day(12155142)
    integer j,i
    OPEN(2,FILE='f:\803sta.txt',STATUS='old')
      
     do j=1,803,1
        read(2,*) sta(j)
     enddo
   
     open(3,file='f:\803newave.txt',status='old')
     do i=1,12155142
         read(3,*) sta2(i),lat(i),lon(i),year(i),mon(i),day(i),v(i)
     enddo
     
    do j=1,1,1
       do i=1,121
          open(4,file='f:\2\'//sta(j)//'.txt',status='unknown')
    if(sta(j)==sta2(i)) then
        write(4,'(a6,2x,f6.2,2x,f6.2,2x,i4,2x,i2,2x,i2,2x,i6)') sta2(i),lat(i),lon(i),year(i),mon(i),day(i),v(i)
        end if
     enddo
    enddo
   close(2)
   close(3)
close(4)
     end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 16:10:38 | 显示全部楼层
写入文件应该用write吧。。。你用的是read。
do j=1,803
    open(4,file='f:\2\'//sta(j)//'.txt',status='unknown')
       do i=1,12155142   
         if(sta(j)==sta2(i)) then
           write(4,'(a6,2x,f6.2,2x,f6.2,2x,i4,2x,i2,2x,i2,2x,i6)') sta2(i),lat(i),lon(i),year(i),mon(i),day(i),v(i)
          end if
        enddo
    enddo
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-7 17:26:35 | 显示全部楼层
月满西楼 发表于 2016-11-7 16:10
写入文件应该用write吧。。。你用的是read。
do j=1,803
    open(4,file='f:\2\'//sta(j)//'. ...

编了一天。有点晕。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 18:36:32 | 显示全部楼层
循环啊 站点等于多少就输出成一个文件夹 批处理。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-8 10:04:27 | 显示全部楼层
修改以后这程序对是对了。但是运算好慢。。。十几个小时都只是输出了一百多个站点。。这效率太低了有木有什么改进的方法的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2016-11-8 17:12:49 | 显示全部楼层
在读取文件的时候就下功夫,增加数组的维度,不等于这个站点的,read到下一个维度里面去,这样程序快的多。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-9 12:42:15 | 显示全部楼层
言深深 发表于 2016-11-8 17:12
在读取文件的时候就下功夫,增加数组的维度,不等于这个站点的,read到下一个维度里面去,这样程序快的多。

读文件倒不是重点。这个应该是输出的时候内循环太大了,导致时间一直很久,跑了两天了,还没跑完。不过您说的这种方法我不是很明白,可以的话还麻烦您稍微详细的解释下。不甚感激
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2016-11-9 15:55:41 | 显示全部楼层
动力气象。 发表于 2016-11-9 12:42
读文件倒不是重点。这个应该是输出的时候内循环太大了,导致时间一直很久,跑了两天了,还没跑完。不过您 ...

不对,你把一堆的东西呼噜噜read到一个数组里面,就不太好处理,循环增加了很多···
如果在read数据的时候,增加维度,就容易处理,比如下面这个数组,一维的存储成12个,二维的就是3*4,如果这时候需要输出等于23的,那么一维情况下你要比较6次得到结果,二维的比较5次就得到了,在数据量非常大的时候,高维数据更占优势
11
12
13
21
22
23
31
32
33
41
42
43
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-9 16:02:17 | 显示全部楼层
言深深 发表于 2016-11-9 15:55
不对,你把一堆的东西呼噜噜read到一个数组里面,就不太好处理,循环增加了很多···
如果在read数据的 ...

谢谢哈。我好好研究研究
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-9 16:31:06 | 显示全部楼层
请问你是怎么下载到站点的数据的?
现在找数据找了很久还是到处找不到
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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