地震目錄和台站目錄的下載預處理(iris網站+shell文本處理)


下載iris網站的地震數據(選擇環形區域)

2011年數據獲取網址為https://service.iris.edu/fdsnws/event/1/query?starttime=2011-01-01T00:00:00&endtime=2012-01-01&lat=89&lon=179&maxradius=180&minradius=0&minmagnitude=4.5&includeallmagnitudes=true&orderby=time&format=geocsv

2010年數據獲取網址為https://service.iris.edu/fdsnws/event/1/query?starttime=2010-01-01T00:00:00&endtime=2011-01-01&lat=89&lon=179&maxradius=180&minradius=0&minmagnitude=4.5&includeallmagnitudes=true&orderby=time&format=geocsv

2009年數據獲取網址為https://service.iris.edu/fdsnws/event/1/query?starttime=2009-01-01T00:00:00&endtime=2010-01-01&lat=89&lon=179&maxradius=180&minradius=0&minmagnitude=4.5&includeallmagnitudes=true&orderby=time&format=geocsv

 

shell預處理地震目錄數據

分別觀察他們的有效行數

$ cat tel11.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | wc -l
5705

$ cat tel10.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | wc -l
6454

$ cat tel09.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | wc -l
6756

然后合成一個文件

$ cat tel11.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | tail -n5700 > tel09_11
$ cat tel10.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | tail -n6449 >> tel09_11
$ cat tel09.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | tail -n6751 >> tel09_11

篩選出2009-6-1到2011-12-31之間地震目錄,格式為:年 月 日 儒略日 時 分 秒 緯 經 深 震級

 $ cat tel09_11 | sed 's/T/ /g' | sed 's/Z//g' | sed 's/-/ /g' | awk '{if ($2!=2009 || $3>=6) print $1,$2,$3,$4,$5,$6,$7,$8,$9}' | sed 's/:/ /g' > tel0906_1112

 $ cat tel0906_1112 | awk '{print $1,$2,$3,strftime("%j",mktime($1" "$2" "$3" "$4" "$5" "$6)),$4,$5,$6,$7,$8,$9,$10}' > telyp0906_1112

格式化輸出,以實現不同的行對齊

$ cat telyp | awk 'BEGIN{OFS="\t"} {printf ("%4d %2d %2d %3d %2d %2d %2d %6.3f %7.3f %7.3f %3.2f\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)}' > EQKyp.lst

 

下載iris網站的台站數據

下載YP台網的地震數據https://service.iris.edu/irisws/fedcatalog/1/query?net=台陣名&minlat=0&maxlat=90&maxlon=180&minlon=-180&cha=???&format=text

 

shell處理台站數據

分別觀察他們的有效行數,發現文件開頭三行和末尾兩行沒有數據,需要去除。

$ cat network0.txt | head -n2378 | tail -n2375 | awk -F'[|]' '{if ($4=="BHE" || $4=="BHN" || $4=="BHZ") print $1,$2,$5,$6,$16,$17}' | sort -u > sta0

但是stayp有137行,用命令 $ awk '{print $2}' sta0 | sort -u | wc -l 發現台站用127個,說明有10個重復台站,可能因為時間不重疊的原因,再sort去重的時候沒有去除。因此需要手動挑選同名台站,選擇最長的時間。

然后挑選好台站之后,保存文件stayp,並將時間格式進行調整,保留月/日/年的日期格式

$ cat sta0 | sed 's/T0/ 0/g' | sed 's/T1/ 1/g' | sed 's/T2/ 2/g' | sed 's/-/ /g' | awk '{print $1,$2,$3,$4,$6"/"$7"/"$5,$10"/"$11"/"$9}' > net0

格式化輸出,以實現不同的行對齊

$ cat net0 | awk 'BEGIN{OFS="\t"} {printf ("%2s %5s %6.3f %7.3f %8.3f %10s %10s\n",$1,$2,$3,$4,$5,$6,$7)}'  > EQK0.lst

  

shell命令補充

替換命令:sed

用法:sed 's/查找內容/替換內容/g' filename

適用通配符:例如*和~//等

 

去重命令:uniq

去重方法1: uniq filename 將相鄰重復行去掉

去重方法2:sort -u filename 將亂序重復行去掉,等效於命令 $ sort -n filename | uniq

 

舉例:計算某列數據的平均值:

$ awk '{sum+=$1} END {print "average equal to", sum/NR, "number of variable is", NR}' filename | cat

注意NR是awk中的內置變量,代表行數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM