爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 16108|回复: 26

[求助] fortran编程求助

[复制链接]

新浪微博达人勋

发表于 2012-3-6 19:37:36 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 shirllu 于 2012-3-9 11:07 编辑

  我做的是从原始资料中挑选出出现所关注天气过程,这个已经完成。做完程序之后,得到的资料排列为以下方式:
          站号  纬度 经度 年 月 日 其中每个站出现的次数不定,站的多少也不一定。
如下:50983  31    140  01  01  03
         50983  ..       ..    02  06  30
         50983  ..       ..    05  11  02
         50798  35     126 01  05  06
         50798  ..       ..    02  11  21
         50948  45     135 01 01  01
          ...........................................
  现在我要做的是将以上资料按照时间排列起来得到这样的结果:年 月 日 站 纬 经
                                                                                        01   01  01 50948 45 135
                                                                                        01   01  03 50983 31 140
                                                                                        。。。。。。。。。。。。。
想了很久没有弄出来,所以写上来,寻高人帮助。十分感谢~
---------------------------------------------------华丽丽的分割线------------------------------------------------------------
  在前几天提出了这个问题,通过清风的提议去用了一下access,问题得到了解决。今天有空将我所解决的过程贴上来,欢迎亲们热烈讨论~
1.access的介绍
Microsoft Office Access(前名 Microsoft Access)是由微软发布的关联式数据库管理系统。
(详细了解请问百度~)
2. access安装
access其实就是Microsoft  office组件里面的一种,可以在安装目录里面去找,安装即可。
3.使用过程介绍(截图说明)
  第一:导入数据
  用打开方式为Microsoft Office Access把数据打开,如下:
2.png

设置格式,以免处理数据中出现错误。
3.png
我的做法是将每列数据前的线往前挪了1列,如上图。
4.png
完成数据格式设置之后点完成。
第二、根据你的需求进行处理。
16.png
根据你的需求将数据进行处理,因为我的三维的排序,所以先将字段4进行升序排列,再将字段5进行升序排列,
字段6升序,再来一次字段5,字段4。这样就得到了我想要的在2001年1月1日的所需站点。依次为2001年1月2日·····
17.png

4、数据的导出
18.png
完成之后在下个导出数据包含格式和布局前打勾,这样就完成了。
15.png
但根据每个人excel的所用版本不一样,可能会出现下个情况
14.png
数据无法一次导出,则运用数据筛选器,根据自己的需求分几次导出数据。

13.png
这样就基本完成了。

(ps:每个人处理资料的思路不一样,所要的结果也不一样,所以这里只是介绍一种设计fortran算法较难或者说对于我这样fortran编程能力较差的同学来说,较为快捷解决问题的工具。)







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

新浪微博达人勋

发表于 2012-3-6 19:39:39 | 显示全部楼层
听你的描述,用表格软件应该还是好实现的...

PS 帮你把标题改了一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-6 19:43:19 | 显示全部楼层
什么表格软件呢,但我一共有10万行的资料哈
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-6 20:02:23 | 显示全部楼层
一个比较笨的方法,可以设一个自定义类型数组,包括站号经纬度年月日,共有10万个元素,把数据全部读进去,然后做一个年月日循环,从0一年一月一日开始逐日搜索,如01年01月01日有20个,把这20个按站号排序后输出一个新文件,搜索01年01月02日,如此重复。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-6 20:16:14 | 显示全部楼层
谢谢哈~我先试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-6 20:49:35 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-6 20:59:09 | 显示全部楼层
谢谢提议,excel估计做不了,数据估计太多,是三维的排序。年,月,日。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-3-6 23:00:07 | 显示全部楼层
shirllu 发表于 2012-3-6 20:59
谢谢提议,excel估计做不了,数据估计太多,是三维的排序。年,月,日。

要是会数据库的话就很方便了,几句话就搞定了...你可以学下数据库方面的知识,比如简单的access,把数据倒入后,按照条件排序就行了,其实excel的道理也是一样的,但是数据太多的话excel确实比较吃力,用fortran排的话算法设计可能有点难度,楼主不妨可以试试这样,我觉得实现起来应该还可以接受:
首先把你的年月日进行结合,生成一个大的整数,比如 20110101,20110102...
然后把这一列插入到这个文件中
再次重新读入该文件,按照新生成的列排序,就搞定了!我以前用数据库的时候设计ID这样做过,你不妨试试!

评分

参与人数 1金钱 +2 收起 理由
shirllu + 2

查看全部评分

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-3-6 23:04:23 | 显示全部楼层
evereen 发表于 2012-3-6 20:02
一个比较笨的方法,可以设一个自定义类型数组,包括站号经纬度年月日,共有10万个元素,把数据全部读进去, ...

理论上可行的,实际操作...我以前为了判断所选的N个站在不在某个文件中,采用了类似的逐站查找,这样每个站做的时候都需要把整个文件遍历1遍,那个文件才几千行,结果就相当效率低了,嘿嘿,这个三维数据估计...哈哈
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-3-6 23:22:26 | 显示全部楼层
本帖最后由 言深深 于 2012-3-6 23:25 编辑

深深同意四楼@evereen的做法,可行,十万行的数据fortran是能够承受的。并且有一个办法可以缩减计算量,将所有的站点构成子序列,站点内的自主排序,站点另行排序;
@topmad的确实因为excel处理不了这么大的数据;
@mofangbao的方法我相信可行,但是一时半会只怕掌握不了。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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