[Fortran] 纯文本查看 复制代码Module SACParameter

Integer, parameter :: FileUnit = 100

Character( Len = * ), Parameter :: Directer = '"'//'..\WAV\WAVFormYiliang\yiliang\*.*'//'"'

Type :: EventPara

Integer( kind = 4 ) :: StationNumber

Integer( kind = 4 ) :: FileNumber

Character( Len = 4 ), allocatable :: StationName(:) ! 台站名数组

Character( Len = 4 ), allocatable :: ComponentName(:,:) ! 三分量文件名(台站,分量)

Character( Len = 1 ), allocatable :: stringFileName(:,:) ! 文件名信息数组二维字符数组

Real(kind = 4), allocatable :: StationWaveformLong(:,:) ! 重采样后的波形长度(台站,分量)

Real(kind = 4), allocatable :: StationMaximumAmplitude(:,:)! 归一化后的最大振幅(台站,分量)

Real(kind = 4), allocatable :: StationDELTA(:,:) ! 重采样采样间隔(台站,分量)

End Type EventPara

Type :: SACHeader

Real( Kind = 4 ), Allocatable :: DELTA(:,:), DEPMIN(:,:), DEPMAX(:,:), SCALE(:,:), ODELTA(:,:), B(:,:), E(:,:), &

O(:,:), A(:,:), INTERNAL1(:,:), T0(:,:), T1(:,:), T2(:,:), T3(:,:), T4(:,:), T5(:,:), T6(:,:), T7(:,:), T8(:,:), T9(:,:), F(:,:), &

RESP0(:,:),RESP1(:,:),RESP2(:,:),RESP3(:,:),RESP4(:,:),RESP5(:,:),RESP6(:,:),RESP7(:,:),RESP8(:,:),RESP9(:,:), &

STLA(:,:),STLO(:,:),STEL(:,:),STDP(:,:),EVLA(:,:),EVLO(:,:),EVEL(:,:),EVDP(:,:),MAG(:,:), &

USER0(:,:), USER1(:,:), USER2(:,:), USER3(:,:), USER4(:,:), USER5(:,:), USER6(:,:), USER7(:,:), USER8(:,:), USER9(:,:), &

DIST(:,:), AZ(:,:), BAZ(:,:), GCARC(:,:), INTERNAL2(:,:), INTERNAL3(:,:), &

DEPMEN(:,:), CMPAZ(:,:), CMPINC(:,:), XMINIMUM(:,:), XMAXIMUM(:,:), YMINIMUM(:,:), YMAXIMUM(:,:), &

ADJTM(:,:), UNUSED1(:,:), UNUSED2(:,:), UNUSED3(:,:), UNUSED4(:,:), UNUSED5(:,:), UNUSED6(:,:)

Integer( Kind = 4 ), Allocatable :: NZYEAR(:,:), NZJDAY(:,:), NZHOUR(:,:), NZMIN(:,:), NZSEC(:,:), NZMSEC(:,:), NVHDR(:,:), &

NORID(:,:), NEVID(:,:), NPTS(:,:), NSPTS(:,:), NWFID(:,:), NXSIZE(:,:), NYSIZE(:,:), UNUSED7(:,:), &

IFTYPE(:,:), IDEP(:,:), IZTYPE(:,:), UNUSED8(:,:), IINST(:,:), ISTREG(:,:), IEVREG(:,:), IEVTYP(:,:), IQUAL(:,:), ISYNTH(:,:), IMAGTYP(:,:), IMAGSRC(:,:), &

UNUSED9(:,:), UNUSED10(:,:), UNUSED11(:,:), UNUSED12(:,:), UNUSED13(:,:), UNUSED14(:,:), UNUSED15(:,:), UNUSED16(:,:), &

LEVEN(:,:), LPSPOL(:,:), LOVROK(:,:), LCALDA(:,:), UNUSED17(:,:)

Character( Len = 16 ), Allocatable :: KEVNM(:,:)

Character( Len = 8 ), Allocatable :: KSTNM(:,:), KHOLE(:,:), KO(:,:), KA(:,:), KT0(:,:), KT1(:,:), KT2(:,:), KT3(:,:), KT4(:,:), KT5(:,:), KT6(:,:), KT7(:,:), KT8(:,:), KT9(:,:), &

KF(:,:), KUSER0(:,:), KUSER1(:,:), KUSER2(:,:), KCMPNM(:,:), KNETWK(:,:), KWaveformRD(:,:), KINST(:,:)

Integer(kind = 4), Allocatable :: Header1(:,:) ! 头端一(台站,分量)

Real(kind = 4), Allocatable :: Header2(:,:) ! 头端二(台站,分量)

Character(Len = 8), Allocatable :: Header3(:,:) ! 头端三(台站,分量)

real( kind = 4 ), Allocatable :: Waveform(:,:,:) ! 波形(台站,分量,记录)

Integer(kind = 4), Allocatable :: WaveformLong(:,:) ! 波形长度(台站,分量)

End Type SACHeader

End module SACParameter

Program Main

USE SACParameter

Implicit None

type(EventPara) :: EVENT1

type(SACHeader) :: SACFILE1

External WriteName, SplitName

!Character( Len = * ), Intent( In ) :: DirecterPath

Integer :: i, j, k, m, n

!Character( Len = * ), Parameter :: Path = '"'//'DirecterPath'//'"'

Call DoWithWildcard( '..\WAV\WAVFormYiliang\yiliang\*.*' , WriteName , n )

If ( N >= 0 ) then

Write(*,*) '共' , N , '个文件!'

End If

pause 1

Call DoWithWildcard( '..\WAV\WAVFormYiliang\yiliang\*.*' , SplitName , n )

Do i = 1, EVENT1%StationNumber

Write(*,*) EVENT1%StationName(i)

Do j = 1, EVENT1%FileNumber

Write(*,*) EVENT1%ComponentName(i,j)

End do

End do

End Program Main

Subroutine DoWithWildcard(cWildcard,CallBack,iTotal)

Use DFLib,only:GetFileInfoQQ,GetLastErrorQQ,FILE$INFO,FILE$LAST,FILE$ERROR,FILE$FIRST,ERR$NOMEM,ERR$NOENT,FILE$DIR

USE SACParameter

Implicit None

type(EventPara) :: EVENT1

type(SACHeader) :: SACFILE1

Interface

Subroutine CallBack( FileName , loop )

Character(*),Intent(In) :: FileName

Integer,Intent(In) :: loop

End Subroutine CallBack

End Interface

Character*(*),Intent(In)::cWildcard

Integer,Intent(Out)::iTotal

TYPE (FILE$INFO) info

INTEGER(4)::Wildhandle,length,retInt

Wildhandle = FILE$FIRST

iTotal = 0

DO WHILE (.TRUE.)

length = GetFileInfoQQ(cWildCard,info,Wildhandle)

IF ((Wildhandle .EQ. FILE$LAST) .OR.(Wildhandle .EQ. FILE$ERROR)) THEN

SELECT CASE (GetLastErrorQQ())

CASE (ERR$NOMEM) !//内存不足

iTotal = - 1

Return

CASE (ERR$NOENT) !//碰到通配符序列尾

Return

CASE DEFAULT

iTotal = 0

Return

END SELECT

END IF

If ((info%permit.AND.FILE$DIR).Eq.0) then

Call CallBack( Trim(info.Name) , iTotal + 1 )

iTotal = iTotal + 1

End If

END DO

EVENT1%FileNumber = iTotal

!Allocate(EVENT1%stringFileName(EVENT1%FileNumber))

End Subroutine DoWithWildcard

Subroutine WriteName( FileName , loop )

USE SACParameter

Implicit None

type(EventPara) :: EVENT1

type(SACHeader) :: SACFILE1

Character( Len = *),Intent(In) :: FileName

Integer,Intent(In) :: loop

Write(*,*) loop , FileName

End Subroutine WriteName

Subroutine SplitName( FileName , loop )

USE SACParameter

Implicit None

type(EventPara) :: EVENT1

type(SACHeader) :: SACFILE1

Character(*),Intent(In) :: FileName

Integer,Intent(In) :: loop

Integer( kind = 4) :: i, j, k, m = 0, n = 0, FileNameLong

Character( Len = 1 ) :: separator = "."

Character( Len = 4 ) :: Station

FileNameLong = len_trim(FileName)

j = Index( FileName, separator )

k = Index( FileName, separator, .True. )

If( Station /= FileName(1:j - 1)) then

n = n + 1

m = 1

Station = FileName(1:j - 1)

write(*,*) Station

pause 2

EVENT1%StationName(n) = FileName(1:j - 1)

EVENT1%ComponentName(n,m) = FileName( k + 1:FileNameLong)

Else

EVENT1%ComponentName(n,m) = FileName( k + 1:FileNameLong)

m = m + 1

End if

EVENT1%StationNumber = n

End Subroutine SplitName

python处理地震sac数据_Fortran批量读取SAC地震数据文件,写SAC文件,并转换成SEGY...相关推荐

  1. R语言批量读取写入Excel数据 r导出输出写入excel多个sheet 导出excel 导入 excel 读入excel 表格

    前一段,写过一篇:R语言中写入Excel的不同sheet表格,最近学习了tidyverse的方法,感觉需要总结一下,更新一下知识结构. 本文准备用实际数据,做一下操作: 「批量读取:」 批量读取多个E ...

  2. R语言批量读取写入Excel数据

    本文准备用实际数据,做一下操作: 「批量读取:」 批量读取多个Excel数据 批量读取一个Excel数据的不同表格 「批量写入」 批量写入Excel数据 1,批量写入到不同的Excel中 2,批量写入 ...

  3. 读取CSV文件内容,将其转换成JSON字符串输出

    CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...

  4. python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...

    如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...

  5. python图像数据是几维数据_python实现读取类别频数数据画水平条形图案例

    1.数据分组– 频数分布表 环境配置:import pandas as pd import numpy as np import matplotlib.pyplot as plt 按照你设定合适的间隔 ...

  6. python怎么从excel获取数据_python如何读取excel表数据

    python读取excel表数据的方法:首先安装Excel读取数据的库xlrd:然后获取Excel文件的位置并且读取进来:接着读取指定的行和列的内容,并将内容存储在列表中:最后运行程序即可. pyth ...

  7. mysql一次读取500条数据_mysql批量插入500条数据

    表格结构如下 需求name和password字段,生成如下格式: 总共批量生成500个. 解决思路:可以用mysql 存储过程 如果linux环境下可以用shell 我们先测试第一种,用存储过程.DE ...

  8. 22 Python IO、打印到屏幕、读取键盘输入、打开和关闭文件、文件定位、重命名和删除文件、Python里的目录、文件,目录相关的方法

    22Python文件I/O 22.1打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: ...

  9. python自动下载邮件附件_Python批量下载电子邮件附件并汇总合并Excel文件

    原标题:Python批量下载电子邮件附件并汇总合并Excel文件 前几天在公众号搞了一波送书活动,详见福利:免费赠送240本Python教材,该文推送之后,立刻收到了大量的样书申请表,那么接下来的工作 ...

  10. 用工具批量下载哔哩哔哩视频并且将内容转换成pdf

    网上的b站视频下载工具其实已经是一箩筐了,但是大部分有个问题,就是不支持批量下载. 不废话,直接说搜索的结果,目前发现的两个可用的: b站下载姬:https://github.com/FlySelfL ...

最新文章

  1. 三星教父逝世!李健熙缔造的商业传奇和争议人生
  2. MapReduce DataJoin 链接多数据源
  3. MYSQL大小写的约定
  4. iPhone Three20软件引擎之构建开发环境与HelloWorld
  5. 推荐系统笔记(关键模块)
  6. python3 读取文本文件_python3文件的读写操作
  7. LELE的RPG难题
  8. 如何将 Microsoft Bot Framework 链接至微信公共号
  9. JavaScript 调用后台事件和方法
  10. 最近ubuntu+gpu装机记录
  11. NodeJS Stream(可读流、可写流) API解读
  12. Java 加密解密之对称加密算法PBE
  13. 分析两个网页设计思路
  14. C++学习一explicit
  15. .NET C# + ECharts 初学笔记 后台加载统计图表数据 - 简单示例
  16. 怎样让机器有人类思维
  17. 计算机网络基础(TCP/IP)
  18. Java实现 kiosk模式,適用於Linux Java Swing應用程序的Kiosk模式
  19. 【深度学习之美】LSTM长短记,长序依赖可追忆(入门系列之十四)
  20. 公式图片转latex神器Mathpix以及latex公式与word公式的相互转换

热门文章

  1. 怎么让图片平铺_美妆蛋、化妆刷到底应该怎么洗?
  2. 图像旋转之以原点为中心
  3. [转载] IoT设备配网方式总结
  4. C++多线程编程(真实入门)
  5. Windows API数据类型表
  6. java编译软件 Eclipse 的安装与使用
  7. ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
  8. 10分钟部署一套开源表单系统
  9. 百度编辑器 UEditor 使用方法 及 如何设置固定高度且带滚动条及 如何设置修改传值的 name 属性
  10. DSP31段调音教程及调音MP3