Ilmu Gempa Teknologi Panduan

Menggunakan Data GeoShake dengan ObsPy: Panduan Praktis

6 mnt baca Oleh GeoShake Team
Bentuk gelombang seismik pada layar gelap di samping sensor yang tidak fokus — membaca data gerakan tanah GeoShake dengan ObsPy

GeoShake menerbitkan data seismiknya secara terbuka di bawah lisensi CC BY 4.0 — tanpa akun, tanpa kunci API, tanpa formulir permintaan. Jika Anda memakai ObsPy, Anda bisa membaca gerakan tanah dari jaringan dalam sekitar tiga puluh detik.

Panduan ini menunjukkan caranya secara persis, dengan perintah nyata dan keluaran nyata. Panduan ini juga menyatakan dengan terus terang untuk apa data ini tidak cocok, karena bagian itu lebih penting daripada tutorialnya.


Apa yang tersedia

Layanan Endpoint Yang Anda dapat
FDSN station https://api.geoshake.org/fdsnws/station/1/ Metadata stasiun (jaringan, kode, lokasi)
FDSN event https://api.geoshake.org/fdsnws/event/1/ Katalog kejadian terdeteksi
SeedLink seedlink.geoshake.org:18000 Aliran gerakan tanah langsung 1 Hz
Unduhan SAC api.geoshake.org/api/stations/…/sac Burst bentuk gelombang kejadian (~110 Hz)

Semuanya anonim dan tanpa autentikasi. Lisensinya CC BY 4.0 — pakai untuk keperluan komersial, pakai dalam makalah, cukup cantumkan kredit jaringan.


Metadata stasiun

from obspy.clients.fdsn import Client

client = Client("https://api.geoshake.org", timeout=40)
inventory = client.get_stations(network="GW", level="station")
print(inventory)

Keluaran nyata:

Inventory created at 2026-08-04T21:03:40.034000Z
	Created by: GeoShake
	Sending institution: GeoShake (GeoShake Community Seismic Network)
	Contains:
		Networks (1):
			GW
		Stations (9):
			GW.GEO274YU (GEO-274YU)
			GW.GEO2TRS8 (GEO-2TRS8)
			GW.GEOA73T7 (GEO-A73T7)
			GW.GEOBH2JN (GEO-BH2JN)
			GW.GEODQZFV (GEO-DQZFV)
			GW.GEOFVYSA (GEO-FVYSA)
			GW.GEOQA2HF (GEO-QA2HF)
			GW.GEOT7ND5 (GEO-T7ND5)
			GW.GEOT9ZBK (GEO-T9ZBK)
		Channels (0):

Perhatikan Channels (0). Itu bukan bug — lihat Apa yang bukan data ini di bawah.

Penyaringan geografis bekerja seperti yang diharapkan:

inv = client.get_stations(
    network="GW", minlatitude=40, maxlatitude=42, level="station"
)
print(len(inv[0]), "stasiun")     # -> 6 stasiun

Katalog kejadian

catalog = client.get_events()
print(catalog)
4 Event(s) in Catalog:
2026-07-02T09:42:24.533000Z | +36.824,  +30.257 | 4.7  MMI | automatic
2026-07-02T13:18:54.640000Z | +36.574,  +31.007 | 2.5  MMI | automatic
2026-07-10T10:10:36.932000Z | +36.574,  +31.057 | 2.1  MMI | automatic
2026-07-12T09:26:49.467000Z | +37.272,  +31.105 | 4.5  MMI | automatic

Ada dua hal yang perlu dibaca dengan cermat di sini. Tipe magnitudonya MMI — kelas intensitas guncangan yang diturunkan dari jaringan, bukan magnitudo momen. Dan setiap kejadian ditandai automatic: belum ada seismolog yang meninjaunya. Sebuah kejadian masuk katalog ketika tiga stasiun atau lebih terpicu dan lolos uji moveout yang konsisten dengan satu sumber tunggal yang merambat pada sekitar 6 km/s.

Katalognya kecil karena jaringannya masih muda. Akan bertambah.


Setiap stasiun menerbitkan selubung aktivitas 1 Hz pada kanal LNZ secara terus-menerus.

from obspy.clients.seedlink.basic_client import Client as SeedLinkClient
from obspy import UTCDateTime

sl = SeedLinkClient("seedlink.geoshake.org", port=18000, timeout=30)
print(sl.get_info(level="station"))
[('GW', 'BH2JN'), ('GW', 'FVYSA'), ('GW', 'QA2HF')]

Mengambil tiga menit terakhir:

end = UTCDateTime()
stream = sl.get_waveforms("GW", "BH2JN", "00", "LNZ", end - 180, end)
print(stream)
4 Trace(s) in Stream:
GW.BH2JN.00.LNZ | 2026-08-04T21:02:06Z - 2026-08-04T21:02:12Z | 1.0 Hz, 7 samples
GW.BH2JN.00.LNZ | 2026-08-04T21:02:14Z - 2026-08-04T21:03:11Z | 1.0 Hz, 58 samples
GW.BH2JN.00.LNZ | 2026-08-04T21:03:13Z - 2026-08-04T21:04:10Z | 1.0 Hz, 58 samples
GW.BH2JN.00.LNZ | 2026-08-04T21:04:12Z - 2026-08-04T21:05:06Z | 1.0 Hz, 58 samples

Celah antar-trace itu nyata. Stasiun dihosting di koneksi internet rumahan, dan satu-dua detik hilang saat sebuah paket hilang. Gunakan stream.merge(method=1) jika Anda butuh trace yang menyambung.

Server yang sama bekerja dengan jAmaSeis, sehingga bisa dipakai di kelas: arahkan ke seedlink.geoshake.org:18000 dan siswa menonton stasiun secara langsung.


Bentuk gelombang kejadian

Kejadian yang terpicu disimpan sebagai burst singkat berlaju tinggi dan disajikan sebagai SAC:

import urllib.request
from obspy import read

url = ("https://api.geoshake.org/api/stations/"
       "GEO-BH2JN/waveforms/85/sac?comp=mag")
urllib.request.urlretrieve(url, "event.sac")

st = read("event.sac")
tr = st[0]
print(tr)
print(f"puncak {abs(tr.data).max():.4f} m/s^2")
GW.BH2JN..MAG | 2026-07-15T19:30:52.279000Z - 2026-07-15T19:30:58.619796Z | 109.1 Hz, 693 samples
puncak 0.2447 m/s^2

Koordinat stasiun ikut dalam header SAC (stla, stlo), jadi ObsPy punya yang dibutuhkan untuk perhitungan jarak. Komponen yang tersedia: x, y, z, dan mag (magnitudo vektor). Jendelanya berjalan dari sekitar 2,3 detik sebelum pemicuan hingga 4 detik sesudahnya — riwayat pra-kejadian berasal dari ring buffer di perangkat.


Apa yang bukan data ini

Bagian ini lebih penting daripada semua yang di atasnya.

Sensornya tidak terkalibrasi. Stasiun GeoShake memakai akselerometer MEMS kelas konsumen. Respons instrumen tidak diterbitkan, itulah sebabnya metadata stasiun berhenti di level stasiun dan Channels kembali kosong. Amplitudo bersifat indikatif, bukan tertelusur secara metrologis. Jika analisis Anda memerlukan fungsi transfer yang diketahui, ini bukan kumpulan data yang tepat.

Kode jaringannya sementara. Kami menerbitkan di bawah GW, dan GW belum terdaftar di FDSN. Kami pindah ke sana setelah menemukan bahwa kode kami sebelumnya, GS, milik Survei Geologi Amerika Serikat — tabrakan nama yang akan mencemari arsip bersama mana pun. Pendaftaran direncanakan begitu jaringan cukup besar untuk layak mendapat kode permanen. Sampai saat itu, perlakukan GW sebagai pengenal lokal dan jangan menggabungkannya ke arsip bersama dengan asumsi permanen.

Deteksi bersifat otomatis dan belum ditinjau. Positif palsu ada. Truk, pintu yang dibanting, dan gempa kecil sama-sama bisa memicu stasiun; asosiasi multi-stasiun menyaring sebagian besar, tapi tidak semuanya.

Cakupannya tidak merata dan masih muda. Sembilan stasiun, sebagian besar mengelompok. Rekaman berkelanjutan paling awal dimulai 2026-07-11.

Dua ganjalan yang akan Anda temui. ObsPy memberi peringatan bahwa layanan kami tidak mengiklankan starttime, endtime, location (station) maupun mindepth, maxdepth, orderby (event). Layanan stasiun menerima starttime tanpa error tetapi mengabaikannya — Anda akan menerima semua stasiun alih-alih himpunan tersaring, tanpa keluhan apa pun. Untuk sekarang, saring di sisi klien. Selain itu, SeedLink saat ini membawa tiga stasiun sementara layanan stasiun FDSN mendaftar sembilan; stasiun yang lebih baru belum mengalirkan data.

Tak satu pun dari ini membuat datanya tidak berguna. Ini membuatnya spesifik: cakupan yang rapat, murah, dan berfidelitas rendah yang melengkapi jaringan profesional, bukan menyaingi mereka.


Sitasi

Jika data ini masuk ke sesuatu yang Anda terbitkan, mohon sitasi:

DOI: 10.5281/zenodo.21313786

Kami senang mendengarnya — hubungi kami.


Firmware-nya juga terbuka

Jika Anda ingin tahu persis bagaimana sebuah deteksi dibuat alih-alih memercayai katalognya, firmware-nya publik di bawah GPL-3.0, bersama implementasi referensi TypeScript yang menjadi acuan verifikasi pemrosesan sinyalnya. Perangkat memastikan kode C-nya cocok dengan referensi itu pada setiap boot dan menolak menyala diam-diam jika tidak cocok.

Bagian itulah yang paling ingin kami lihat dibedah oleh seorang seismolog: github.com/GeoShake/geoshake

Dokumentasi API lengkap, termasuk endpoint yang tidak dibahas di sini, ada di api.geoshake.org/developer.

Supaya jelas soal cakupan: firmware, desain casing, dan datanya terbuka. Desain PCB dan backend cloud bersifat proprietary — jadi perangkat secara keseluruhan bukan perangkat keras sumber terbuka, dan kami tidak menyebutnya begitu.

Siap bergabung dengan jaringan?

Dapatkan sensor GeoShake T1 dan mulai deteksi gempa di rumah.

GeoShake T1

Bagikan artikel ini: