mseed

DolphinDB的mseed插件可以读取miniSEED文件的数据到DolphinDB的内存表中,且可以将DolphinDB的一段连续时间的采样值写入到miniSEED格式的文件中。

本插件使用了IRIS的libmseed开源库的读写接口。

mseed插件目前支持版本:relsease200, release130, relsease120, release110。

在插件市场安装插件

版本要求

  • DolphinDB Server: 2.00.10及更高版本

安装步骤

  1. 在DolphinDB 客户端中使用 listRemotePlugins 命令查看插件仓库中的插件信息。

    login("admin", "123456")
    listRemotePlugins()
  2. 使用 installPlugin 命令完成插件安装。

    installPlugin("mseed")

    返回:<path_to_Mseed_plugin>/PluginMseed.txt

  3. 使用 loadPlugin 命令加载插件。

    loadPlugin("mseed")

用户接口

mseed::read

语法

mseed::read(file)

详情

读取一个miniSEED文件,返回一个DolphinDB的内存表。

参数

  • file:需要读取的miniSEED文件所在的绝对路径。类型为字符串的常量。

返回值

返回一个DolphinDB内存表,包含如下字段:

  • value:读取到的采样值。类型为int, float或double。
  • time:采样值对应的时间戳。类型为timestamp。
  • id:采样值所在块的sid。类型为symbol。

例子

ret=mseed::read("<FileDir>/SC.JZG.00.BHZ.D.2013.001");

mseed::write

语法

mseed::write(file, sid, startTime, sampleRate, value, [overwrite=false])

详情

将一段连续的采样值写入到miniSEED文件。

参数

  • file:需要写入的miniSEED文件所在的绝对路径。类型为string的常量。
  • sid:写入到miniSEED文件的一个块的sid。类型为string的常量。
  • startTime:写入到miniSEED文件一个块的startTime。类型为timestamp的常量。
  • sampleRate:写入到miniSEED文件的sampleRate。类型为int, long, float或double的常量。
  • value:写入miniSEED文件的采样值的向量。类型为int, float或double。
  • overwrite:是否覆盖之前写入的数据,默认为false。类型为bool的常量。

返回值

如果写入成功,返回true。

例子

time=timestamp(2013.01.01);
sampleRate=100.0;
vec=rand(100, 100);
ret=mseed::write("/home/zmx/aaa", "XFDSN:SC_JZG_00_B_H_Z", time, sampleRate, vec);

mseed::parse

语法

mseed::parse(data)

详情

解析miniseed格式的字节流,返回一个DolphinDB的内存表。

参数

  • data:miniseed格式的字节流。为string类型或char类型的vector。

返回值

返回一个DolphinDB内存表,包含如下字段:

  • value:读取到的采样值。类型为int, float或double。
  • time:采样值对应的时间戳。类型为timestamp。
  • id:采样值所在块的sid。类型为symbol。

例子

fin=file("/media/zmx/aaa");
buf=fin.readBytes(512);
ret=mseed::parse(buf);

stringBuf=concat(buf);
ret=mseed::parse(stringBuf);

mseed::parseStream

语法

mseed::parseStream(data)

详情

解析miniseed格式的字节流,返回一个字典,包含一个内存表和成功解析的字节流长度。如果解析失败,返回一个仅包含成功解析的字节流长度的字典。

参数

  • data:miniseed格式的字节流。为string类型或char类型的vector。

返回值

返回一个dolphindb字典,包含如下键值:

  • ret[`data]: 一个dolphindb内存表,包含如下字段:
    • value:读取到的采样值。类型为int, float或double。
    • time:采样值对应的时间戳。类型为timestamp。
    • id:采样值所在块的sid。类型为symbol。
  • ret[`size]: 成功解析的字节流的长度。类型为long的常量。
  • ret[`metaData]: 一个dolphindb内存表,包含如下字段:
    • id:采样值所在块的sid。类型为symbol。
    • startTime:采样开始时间。类型为timestamp。
    • receivedTime:接收数据时间。类型为timestamp。
    • actualCount:实际解析出来的数据个数。类型为int。
    • expectedCount:miniSEED包头指定的采样值个数。类型为int。
    • sampleRate:miniSEED采样率。类型为double。

例子

fin=file("/media/zmx/aaa");
buf=fin.readBytes(512);
ret=mseed::parseStream(buf);

stringBuf=concat(buf);
ret=mseed::parseStream(stringBuf);

mseed::parseStreamInfo

语法

mseed::parseStreamInfo(data)

详情

解析miniseed格式的字节流的块信息,返回一个字典,包含一个内存表和成功解析的字节流长度。

参数

  • data:miniseed格式的字节流。为string类型或char类型的vector。

返回值

返回一个dolphindb字典,包含如下键值:

  • ret[`data]: 一个dolphindb内存表,包含如下字段:
    • sid:读取到的mseed块的分量名称。字符串类型。
    • blockLen:读取到的mseed块的长度。类型为int。
  • ret[`size]: 成功解析的字节流的长度。类型为int的常量。

例子

fin=file("/media/zmx/aaa");
buf=fin.readBytes(512);
ret=mseed::parseStreamInfo(buf);

stringBuf=concat(buf);
ret=mseed::parseStreamInfo(stringBuf);

mseed::streamize

语法

mseed::streamize(data, sampleRate, [blockSize])

详情

按照所在行数的顺序将表中的采样数据转换成miniseed格式的CHAR Vector。需要提前对sid列、时间戳进行排序。

参数

  • data:采样数据信息的一张表,包含如下列:
    • 第一列为sid, 类型为symbol或string。
    • 第二列为时间戳。类型为TimeStamp。
    • 第三列为采样数值。类型为int, float或double。
    • 只会取前三列作为输入参数,第四列及其以后不做处理。
  • sampleRate:采样频率。类型为int, long, float或double。
  • blockSize:miniSEED格式的块大小,默认是512。类型为int。

例子

sidVec = take("XFDSN:SN_C0059_40_E_I_E", 1000).symbol()
tsVec = now() + 1..1000
dataVec = 1..1000
data = table(sidVec as sid, tsVec as ts, dataVec as data)
ret = mseed::streamize(data, 1000)