您的位置:主页 > 成功案例 > 斯伦贝谢软件使用技巧 > ECLIPSE操作技巧 >

成功案例

ECLIPSE操作技巧>>

32.如何将Eclipse和IAM输出的RSM类型文件自动转换为CSV格式

1. RSM文件介绍

Eclipse和IAM中的模型结果输出为RSM为后缀的文件。此文件的数据为文本型,内部是以块表的形式保存了所有已定义的结果数据:每个数据块为10列的块表,块表的行内容为模型的数据结果值,行数是基于模拟的天数的变值,达到最大列数(10)后,将其他参数再继续写入下一个块表,重复此过程,直到将将所有参数结果写入完毕。

此文件结构中的列定义和行定义都不是一个固定值,是基于模型的数据结果而定,所以很难直接将这些结果直接导入其他软件使用。为了解决此问题,可以用编程的方法自动化的将RSM文件转换为csv文件,这样其他软件都可以轻松的导入csv文件来使用Eclipse或IAM的模拟结果。以下示例是用C# .NET编写,当然也可以用其他的编程语言,实现思路可参考此文实现。

2. 技术实现

如介绍中所述,RSM文件具有非常规文件结构。 要将此文件转换为csv文件,需要首先解析RSM文件。 因此,首先编写一个解析器,它遍历RSM文件中的所有块表,并将它们存储在表的数组中,再循环遍历解析每个块表中的数据将其写入到csv文件。

创建的类结构如下:

•RsmFile:表示实际的RSM文件

•RsmBlock:每个RSM文件由许多块表组成,块列为1个日期列和9个参数列

•RsmTable:包含参数值的实际表

2.1 RSMFile数据结构

RSMFile结构定义如下:

•块1

ØBlockHeader1

ØTableHeader1

ØTableValues1

•块2

ØBlockHeader2

ØTableHeader2

ØTableValues2

•等等

为了显示RSM文件结构,使用了Eclipse示例中的SPE9示例。

这是RSM块表的示例。红色标题显示模型的名称,使用的Eclipse版本,执行的日期戳和电脑名,以虚线结束。

绿色的表头显示表的列定义。在此示例中,表头的第一行是参数类型,第二行是参数单位,第三行是井名称。

蓝色表格包含所有值。第一列始终是日期或时间戳(使用关键字DATE或TIME)。该表在新块开始的位置结束,或者在到达最后一个块的位置结束,为空行。

块的开始由数字1识别。这可用于解析RSM文件中的不同块。

2.2 RsmFile.Parse()

为了解析RSM文件,我们需要调用RsmFile.Parse()。 这将创建RsmFile对象的新实例。

RsmFile rsmFile = RsmFile.Parse(File.ReadAllLines(rsmPath).ToArray());

.Parse()方法要求包含实际文件的所有行的字符串数组。

2.3 RsmFile.ToCsv()

创建RsmFile对象时,我们可以使用ToCsv()方法创建csv文件。 下一个示例显示如何调用ToCsv()方法并将结果写入文件:

3. 工具使用

此示例中实现的转换工具编写为命令行,应用举例:

C:\EclipseRsmToCsv>EclipseRsmToCsv.exe EclipseRsmToCsv 1.0.0.0

Copyright c   2017

-i, --input   必填项. RSM文件.

-o, --output   必填项..csv文件.

-m, --measurements   必填项. 参数项.

-s, --start   [可选] 开始日期.

Format[dd/MM/yyyy].

-e, --end   [可选] 结束日期.

Format[dd/MM/yyyy].

-h, --help   显示帮助信息.

前三个参数是必需的:

-i 输入RSM文件的路径

-o csv文件写入的位置

-m 输出中需要哪些参数类型(例如WGPR和WGIR)。

最后两个参数是可选的:可以指定开始日期和结束日期,以便仅将部分模拟结果写入csv。

注意:如果TIME关键字用作RSM文件中的时间戳,则需要开始日期才能计算日期戳。 如果未选择开始日期,则使用默认的开始日期01/01/1900。 如果使用DATE关键字,则不必指定开始日期。

例子:

C:\ EclipseRsmToCsv> EclipseRsmToCsv.exe -i SPE9.RSM -o SPE9.csv -m WGPR

将WGPR写入SPE9.csv。

C:\ EclipseRsmToCsv> EclipseRsmToCsv.exe -i SPE9.RSM -o SPE9.csv -m WGPR WGIR

将WGPR和WGIR写入SPE9.csv。

C:\ EclipseRsmToCsv> EclipseRsmToCsv.exe -i SPE9.RSM -o SPE9.csv -m WGPR -s 01/01/2015 -e 31/12/2015

将2015年的WGPR和WGIR写入SPE9.csv。

4. CSV结果文件

EclipseRsmToCsv以下列格式输出csv:

WGPR,MSCF/DAY,,PROD2,1-1-2015,0 WGPR,MSCF/DAY,,PROD2,2-1-2015,2054.024

WGPR,MSCF/DAY,,PROD2,3-1-2015,2028.551 WGPR,MSCF/DAY,,PROD2,7-1-2015,2004.881

WGPR,MSCF/DAY,,PROD2,13-1-2015,2004.653

第一列是参数类型,第二列是单位,第三列是可选倍数,第四列是井名,第五列是日期戳,第六列是参。

地址:北京市朝阳区酒仙桥路20号颐堤港一座4层

邮编:100015 传真:010-64309502

Copyright © 2002-2024 斯伦贝谢科技服务(北京)有限公司  京ICP备 06043577 号-1