python处理地震sac数据_Fortran批量读取SAC地震数据文件,写SAC文件,并转换成SEGY...
[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...相关推荐
- R语言批量读取写入Excel数据 r导出输出写入excel多个sheet 导出excel 导入 excel 读入excel 表格
前一段,写过一篇:R语言中写入Excel的不同sheet表格,最近学习了tidyverse的方法,感觉需要总结一下,更新一下知识结构. 本文准备用实际数据,做一下操作: 「批量读取:」 批量读取多个E ...
- R语言批量读取写入Excel数据
本文准备用实际数据,做一下操作: 「批量读取:」 批量读取多个Excel数据 批量读取一个Excel数据的不同表格 「批量写入」 批量写入Excel数据 1,批量写入到不同的Excel中 2,批量写入 ...
- 读取CSV文件内容,将其转换成JSON字符串输出
CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...
- python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...
如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...
- python图像数据是几维数据_python实现读取类别频数数据画水平条形图案例
1.数据分组– 频数分布表 环境配置:import pandas as pd import numpy as np import matplotlib.pyplot as plt 按照你设定合适的间隔 ...
- python怎么从excel获取数据_python如何读取excel表数据
python读取excel表数据的方法:首先安装Excel读取数据的库xlrd:然后获取Excel文件的位置并且读取进来:接着读取指定的行和列的内容,并将内容存储在列表中:最后运行程序即可. pyth ...
- mysql一次读取500条数据_mysql批量插入500条数据
表格结构如下 需求name和password字段,生成如下格式: 总共批量生成500个. 解决思路:可以用mysql 存储过程 如果linux环境下可以用shell 我们先测试第一种,用存储过程.DE ...
- 22 Python IO、打印到屏幕、读取键盘输入、打开和关闭文件、文件定位、重命名和删除文件、Python里的目录、文件,目录相关的方法
22Python文件I/O 22.1打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: ...
- python自动下载邮件附件_Python批量下载电子邮件附件并汇总合并Excel文件
原标题:Python批量下载电子邮件附件并汇总合并Excel文件 前几天在公众号搞了一波送书活动,详见福利:免费赠送240本Python教材,该文推送之后,立刻收到了大量的样书申请表,那么接下来的工作 ...
- 用工具批量下载哔哩哔哩视频并且将内容转换成pdf
网上的b站视频下载工具其实已经是一箩筐了,但是大部分有个问题,就是不支持批量下载. 不废话,直接说搜索的结果,目前发现的两个可用的: b站下载姬:https://github.com/FlySelfL ...
最新文章
- 三星教父逝世!李健熙缔造的商业传奇和争议人生
- MapReduce DataJoin 链接多数据源
- MYSQL大小写的约定
- iPhone Three20软件引擎之构建开发环境与HelloWorld
- 推荐系统笔记(关键模块)
- python3 读取文本文件_python3文件的读写操作
- LELE的RPG难题
- 如何将 Microsoft Bot Framework 链接至微信公共号
- JavaScript 调用后台事件和方法
- 最近ubuntu+gpu装机记录
- NodeJS Stream(可读流、可写流) API解读
- Java 加密解密之对称加密算法PBE
- 分析两个网页设计思路
- C++学习一explicit
- .NET C# + ECharts 初学笔记 后台加载统计图表数据 - 简单示例
- 怎样让机器有人类思维
- 计算机网络基础(TCP/IP)
- Java实现 kiosk模式,適用於Linux Java Swing應用程序的Kiosk模式
- 【深度学习之美】LSTM长短记,长序依赖可追忆(入门系列之十四)
- 公式图片转latex神器Mathpix以及latex公式与word公式的相互转换
热门文章
- 怎么让图片平铺_美妆蛋、化妆刷到底应该怎么洗?
- 图像旋转之以原点为中心
- [转载] IoT设备配网方式总结
- C++多线程编程(真实入门)
- Windows API数据类型表
- java编译软件 Eclipse 的安装与使用
- ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
- 10分钟部署一套开源表单系统
- 百度编辑器 UEditor 使用方法 及 如何设置固定高度且带滚动条及 如何设置修改传值的 name 属性
- DSP31段调音教程及调音MP3