C++生成 桔灯 Aether仪器的 *.atts 格式 时间域文件

Aether大地电磁系统

Aether 是全新一代高速低速同时采集的大地电磁系统,通过 GPS 进行同步授时定位, 所有通道完全同步采集,连续时间序列存储。也可以用于任何传统电磁法 MT、 ATM、 CSAMT、 TEM、SIP、TDIP 等任何电法、电磁法数据的采集,及其地球物理新方法创新,电磁环境监 测等方面。

 

Aether是全新一代高频低频同时采集的电磁系统。它通过GPS进行同步授时定位,所有通道完全同步采集,连续时间序列存储。可以用于任何传统天然源电磁法MT、AMT,也可以用于常规有源法CSAMT、TEM、SIP、TDIP等。

通过3G/4G/5G网络,实时传输和下载时间序列数据,无需现场下载;适合用于长周期电磁和地震监测。

特点

● 连续时间序列存储

多通道数据连续记录,用以保证数据完整性,有限时间内可用数据最多,提高野外工作效率,增加抗干扰处理手段。完全区别于其它“老”仪器的间断采集方式,破坏了数据完整性,也降低了工作效率。

● 实时阻抗估计

可实时显示时间序列波形、频谱、仪器所有工作状态,并可实时处理并显示阻抗。

● 高低频同时记录

支持24bit 6通道高频(最高96kHz)和32bit 6通道低频(最高4kHz)在)同时采集和存储;同时采集单个点的高频数据和低频数据,避免不同仪器、不同时间采集数据拼接的问题。

● 电磁通道通用

Aether系列支持任意电磁法的传感器输入,包括电极、感应线圈磁探头、磁通门探头、地震速度传感器、加速度传感器等。

● GPS同步时间与坐标

精确的GPS授时,保证每个采样点都有精确的时间标签,并记录GPS位置。

自有设备采集的明码时间域文件转换成*.atts格式:

无码无真相:

#include "WriteBinary.h"


WriteBinary::WriteBinary(QStringList aoStrFileName, ATTS_HEAD oHead) :
    gaoStrFileName(aoStrFileName),
    goHead(oHead)
{

}

void WriteBinary::run()
{
    /* atts file */
    FILE *pFileATTS;

    QString oStrFileName = gaoStrFileName.first();

    oStrFileName.chop(8);

    QString oStrFileATTS = QString( oStrFileName + ".atts");
    pFileATTS = fopen ( (oStrFileATTS.toLocal8Bit().data()), "wb" );

    fwrite(&goHead.flag,      8, 1, pFileATTS);
    fwrite(&goHead.nChan,     2, 1, pFileATTS);
    fwrite(&goHead.bits,      2, 1, pFileATTS);
    fwrite(&goHead.format,    4, 1, pFileATTS);
    fwrite(&goHead.Fs,        8, 1, pFileATTS);
    fwrite(&goHead.UnixBegin, 4, 1, pFileATTS);
    fwrite(&goHead.UsBegin,   4, 1, pFileATTS);
    fwrite(&goHead.UnixEnd,   4, 1, pFileATTS);
    fwrite(&goHead.UsEnd,     4, 1, pFileATTS);
    fwrite(&goHead.nSize,     8, 1, pFileATTS);
    fwrite(&goHead.notchFreq, 8, 1, pFileATTS);
    fwrite(&goHead.notchHarm, 2, 1, pFileATTS);
    fwrite(&goHead.unused,   30, 1, pFileATTS);

    for(int i = 0; i < 16; i++)
    {
        fwrite(&(goHead.Chan[i].Valid),   2, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].Comp),    2, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].Direct),  2, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].lens),    4, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].ChName),  4, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].SN),     16, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].Gain),    4, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].Offset),  4, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].Azimuth), 4, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].CRes),    4, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].iAC),     2, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].iDC),     2, 1, pFileATTS);
        fwrite(&(goHead.Chan[i].unused),  4, 1, pFileATTS);
    }

    fwrite(&goHead.Stn,        4, 1, pFileATTS);
    fwrite(&goHead.Lat,        8, 1, pFileATTS);
    fwrite(&goHead.Long,       8, 1, pFileATTS);
    fwrite(&goHead.Alt,        4, 1, pFileATTS);
    fwrite(&goHead.Line,       4, 1, pFileATTS);
    fwrite(&goHead.rKchanACDC, 4, 1, pFileATTS);
    fwrite(&goHead.unused2,  998, 1, pFileATTS);
    fwrite(&goHead.Comment,   64, 1, pFileATTS);
    fwrite(&goHead.ends,       2, 1, pFileATTS);

    QMap<int, QString> oMap;

    oMap.clear();

    foreach(QString oStrFile, gaoStrFileName)
    {
        qDebugV0()<<oStrFile.right(5).left(1).toInt()<<oStrFile;

        /* 通道编号和文件名对应好 */
        oMap.insert(oStrFile.right(5).left(1).toInt(), oStrFile);
    }

    //qDebugV0()<<oMap<<goHead.nSize/5<<goHead.nSize;

    QByteArray baLine;

    baLine.clear();

    QStringList asLine;
    asLine.clear();

    QString sData;
    sData.clear();

    float fLine = 0.0;

    /* Ex */
    QFile oFileEx(oMap.value(1));
    if(!oFileEx.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebugV5()<<"Can't open the file!"<<oFileEx.errorString()<<endl;
    }
    oFileEx.readLine();

    /* Ey */
    QFile oFileEy(oMap.value(2));
    if(!oFileEy.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebugV5()<<"Can't open the file!"<<oFileEy.errorString()<<endl;
    }
    oFileEy.readLine();

    /* Hx */
    QFile oFileHx(oMap.value(4));
    if(!oFileHx.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebugV5()<<"Can't open the file!"<<oFileHx.errorString()<<endl;
    }
    oFileHx.readLine();

    /* Hy */
    QFile oFileHy(oMap.value(5));
    if(!oFileHy.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebugV5()<<"Can't open the file!"<<oFileHy.errorString()<<endl;
    }
    oFileHy.readLine();

    /* Hz */
    QFile oFileHz(oMap.value(6));
    if(!oFileHz.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebugV5()<<"Can't open the file!"<<oFileHz.errorString()<<endl;
    }
    oFileHz.readLine();

    for(int j = 0; j < goHead.nSize/5; j++)
    {
        /* Ex */
        baLine.clear();

        baLine = oFileEx.readLine();
        QString sLineEx(baLine);

        sLineEx.remove("\n");
        asLine = sLineEx.split(",", QString::SkipEmptyParts);
        sData  = asLine.first();
        fLine  = sData.simplified().toFloat();
        fwrite(&fLine, goHead.bits/8, 1, pFileATTS);

        /* Ey */
        baLine.clear();

        baLine = oFileEy.readLine();
        QString sLineEy(baLine);

        sLineEy.remove("\n");
        asLine = sLineEy.split(",", QString::SkipEmptyParts);
        sData  = asLine.first();
        fLine  = sData.simplified().toFloat();
        fwrite(&fLine, goHead.bits/8, 1, pFileATTS);

        /* Hx */
        baLine.clear();

        baLine = oFileHx.readLine();
        QString sLineHx(baLine);

        sLineHx.remove("\n");
        asLine = sLineHx.split(",", QString::SkipEmptyParts);
        sData  = asLine.first();
        fLine  = sData.simplified().toFloat();
        fwrite(&fLine, goHead.bits/8, 1, pFileATTS);

        /* Hy */
        baLine.clear();

        baLine = oFileHy.readLine();
        QString sLineHy(baLine);

        sLineHy.remove("\n");
        asLine = sLineHy.split(",", QString::SkipEmptyParts);
        sData  = asLine.first();
        fLine  = sData.simplified().toFloat();
        fwrite(&fLine, goHead.bits/8, 1, pFileATTS);

        /* Hz */
        baLine.clear();

        baLine = oFileHz.readLine();
        QString sLineHz(baLine);

        sLineHz.remove("\n");
        asLine = sLineHz.split(",", QString::SkipEmptyParts);
        sData  = asLine.first();
        fLine  = sData.simplified().toFloat();
        fwrite(&fLine, goHead.bits/8, 1, pFileATTS);
    }

    oFileEx.flush();
    oFileEy.flush();
    oFileHx.flush();
    oFileHy.flush();
    oFileHz.flush();

    oFileEx.close();
    oFileEy.close();
    oFileHx.close();
    oFileHy.close();
    oFileHz.close();

    fflush(pFileATTS);
    fclose(pFileATTS);

    emit Sig("转换完成!\n" + oStrFileATTS);
}

QFile ,Q_DISABLE_COPY。可以使用QList<QFile*> 来存放文件指针。大佬们见笑了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find jre:jre:zip:call:1.0.0-SNAPSHOT in http://download.eclipse.org/recommenders/models/oxygen/ was cached in the local repository, resolution will not be reattempted until the update interval of models has elapsed or updates are forced at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:453) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:255) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:232) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:303) at org.eclipse.recommenders.models.ModelRepository.resolveInternal(ModelRepository.java:193) at org.eclipse.recommenders.models.ModelRepository.resolve(ModelRepository.java:172) at org.eclipse.recommenders.internal.models.rcp.EclipseModelRepository.resolve(EclipseModelRepository.java:168) at org.eclipse.recommenders.internal.models.rcp.DownloadModelArchiveJob.run(DownloadModelArchiveJob.java:76) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Failure to find jre:jre:zip:call:1.0.0-SNAPSHOT in http://download.eclipse.org/recommenders/models/oxygen/ was cached in the local repository, resolution will not be reattempted until the update interval of models has elapsed or updates are forced at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:240) at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:215) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:594) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:512) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:430) ... 8 more
最新发布
07-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值