mseed
DolphinDB的mseed插件可以读取miniSEED文件的数据到DolphinDB的内存表中,且可以将DolphinDB的一段连续时间的采样值写入到miniSEED格式的文件中。
本插件使用了IRIS的libmseed开源库的读写接口。
mseed插件目前支持版本:relsease200, release130, relsease120, release110。
在插件市场安装插件
版本要求
- DolphinDB Server: 2.00.10及更高版本
安装步骤
在DolphinDB 客户端中使用 listRemotePlugins 命令查看插件仓库中的插件信息。
login("admin", "123456") listRemotePlugins()
使用 installPlugin 命令完成插件安装。
installPlugin("mseed")
返回:<path_to_Mseed_plugin>/PluginMseed.txt
使用 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)