Micaps3类数据解析的思考

Micaps3类数据很早之前就接触过了,当时是用fortran针对具体的文件进行解析,在昨天之前,我还一直觉得3类数据很不规范,解析起来也没个通用的方法,现在看来是我没有认真的去思考,每次都是针对特殊情况给出解决方法就没有去再多想,直到昨天,在swan后台需要读取3类格式的数据,结果发现他们的3类数据“看上去无规律可循”,比如:

又比如:

还有这样的:

表现出来就是文件头的行数不一致,列数不一致,以前为了省事,一直都是直接去开头几行为文件头,或者取当文件变成5列的时候开始计算为数据,但是这个对上面的有些数据就不适用了,不能通用。

于是我又去翻了翻Micaps的文件格式:

这时候发现靠行数和列数是不能解决问题的,那应该如何判断?

我又看了一遍说明,这时候突然想到是应该判断文件头的总“单词”个数,数了一下,不管用多少行,多少列,总个数一直是14个,看了应噶就是这样读取了。

有了想法程序就好办了,只要逐行分割,累加单词个数,达到14个之后才开始是数据,而最后一个就是数据的行数(其实也不一定要用到,判断文件结束的方法很多),下面是我写的一个c#的解析程序的一部分:

现在想想,其他ascii格式的micaps数据解析应该也是用类似的思路来实现才能保证解析的正确性。

Micaps3类数据解析的思考:等您坐沙发呢!

发表评论

点击正确的图片来提交评论:
快捷键:Ctrl+Enter