📡

สถานีตรวจแผ่นดินไหวเสมือน

ดึง คลื่นไหวสะเทือนดิบ จากเครือข่าย FDSN (EarthScope/IRIS · GEOFON) แล้ววิเคราะห์เองทั้งหมด — สเปกโตรแกรม STFT, ตัวตรวจจับ STA/LTA, ปรับจุดเริ่มด้วย AIC, แล้วเทียบผลกับแคตาลอกทางการของ USGS

ต่างจากหน้า “แผ่นดินไหว” อย่างไร: หน้านั้นอ่านผลที่คนอื่นวิเคราะห์เสร็จแล้ว · หน้านี้เริ่มจาก sample แรกของเซนเซอร์

⏳ กำลังเริ่มระบบ

🗺️ สถานีที่เปิดข้อมูลสาธารณะรอบเมืองตาก

ค้นสดจาก FDSN station service ทั้งสองศูนย์ข้อมูล โดยตั้ง includerestricted=false — สิ่งที่เห็นบนแผนที่คือสถานีที่ เปิดจริง เท่านั้น จุดสีฟ้าคือเทศบาลเมืองตาก

📋 รายชื่อสถานี

เรียงตามระยะทางจากเทศบาลเมืองตาก · กด “เลือก” เพื่อส่งสถานีนั้นไปแท็บวิเคราะห์คลื่น
เครือข่าย สถานี ชื่อสถานที่ ระยะ (กม.) องศา ทิศจากตาก ช่วงเวลาให้บริการ ศูนย์ข้อมูล
📡กด “ค้นสถานี” เพื่อเริ่ม

⭐ สถานีที่แนะนำ (คัดมาแล้ว)

รายชื่อผู้สมัครที่คัดไว้พร้อมเหตุผล — สถานะ “ใช้ได้จริงไหม” ตรวจที่แท็บ Diagnostic

🎯 เลือกเหตุการณ์ทดสอบ

ชุดเหตุการณ์มาตรฐาน — นิยามเป็น เงื่อนไขค้นหา ไม่ใช่ค่าตายตัว ค่าจริง (เวลา ขนาด พิกัด) ดึงสดจากแคตาลอก USGS ทุกครั้งที่กด จึงไม่มีตัวเลขพิมพ์มือหลุดเข้าระบบ

📥 พารามิเตอร์การดึงคลื่น

เวลาทั้งหมดเป็น UTC (เวลาไทย = UTC + 7 ชม.) · ช่อง BHZ = broadband แนวดิ่ง ~20–40 sps · HHZ = high-gain ~100 sps (ละเอียดกว่า แต่ไฟล์ใหญ่กว่ามาก)

🌈 สเปกโตรแกรม (STFT)

Short-Time Fourier Transform — หน้าต่าง Hann, FFT radix-2 ที่เขียนเอง · แกนตั้ง = ความถี่ (Hz) · แกนนอน = เวลา · สี = กำลังงานเป็น dB · ต้องดึงคลื่นจากแท็บ “คลื่นดิบ” ก่อน
สเปกโตรแกรม

📊 สเปกตรัมกำลัง (Welch PSD) — ก่อนเทียบหลังเหตุการณ์

เปรียบเทียบสเปกตรัมของช่วง “เงียบก่อนเหตุการณ์” กับช่วง “มีสัญญาณ” — ระยะห่างระหว่างสองเส้นคือ อัตราส่วนสัญญาณต่อสัญญาณรบกวนเชิงความถี่ บอกว่าพลังงานของแผ่นดินไหวไปกองอยู่ที่ความถี่ไหน
Welch PSD

📍 หาตำแหน่งศูนย์กลางเอง จากหลายสถานี

สถานีเดียวบอกได้แค่ “มีอะไรเกิดขึ้น เมื่อไหร่” · ตั้งแต่ 3 สถานีขึ้นไปบอกได้ว่า “ที่ไหน”
หลักการ: คลื่น P เดินทางด้วยความเร็วที่ทราบ ถ้ารู้ว่ามันไปถึงแต่ละสถานีเมื่อไหร่ ก็ย้อนกลับไปหาจุดกำเนิดได้ — ระบบกวาดตารางพิกัดทั่วทั้งภูมิภาค แล้วเลือกจุดที่ทำให้เวลามาถึงที่ทำนายได้ตรงกับที่วัดได้จริงมากที่สุด
ความซื่อสัตย์ของการทดสอบ: การหาตำแหน่งใช้เฉพาะ เวลาที่เราจับได้เอง จากคลื่นดิบเท่านั้น พิกัดจากแคตาลอก USGS ถูกใช้แค่สองอย่างคือ (1) กำหนดว่าจะไปดึงข้อมูลช่วงเวลาไหน (2) เป็นเฉลยไว้เทียบตอนท้าย — ไม่ได้ถูกป้อนเข้าไปในการคำนวณ ผลที่ได้จึงเป็นตำแหน่งที่หามาเองล้วน ๆ

1️⃣ เลือกเหตุการณ์

ใช้เหตุการณ์ที่เลือกไว้แล้วจากแท็บ “คลื่นดิบ” หรือกดค้นใหม่จากพรีเซ็ต

🔬 วิธีการหาตำแหน่ง

โมเดลความเร็ว — เปลือกโลกแบนสองชั้นที่ประกาศค่าไว้ชัดเจน: เปลือก Vp = 5.80 กม./วิ, เนื้อโลกบน Vp = 8.00 กม./วิ, ความหนาเปลือก H = 35 กม. คลื่น P แรกที่มาถึงคือค่าน้อยกว่าระหว่าง Pg (คลื่นตรงผ่านเปลือก) กับ Pn (คลื่นหัวเลี้ยวใต้โมโฮ) ซึ่งจะสลับกันเป็นตัวนำที่ระยะประมาณ 150–200 กม.

การค้นหา — กวาดตารางสามชั้น หยาบ 0.25° → 0.05° → 0.01° แต่ละชั้นค้นรอบจุดที่ดีที่สุดของชั้นก่อนหน้า พร้อมกวาดความลึก 8 ค่า เหตุผลที่ใช้ grid search แทนวิธีเชิงอนุพันธ์แบบ Geiger คือพื้นผิว RMS ในบริเวณที่ Pg กับ Pn สลับกันเป็นตัวนำนั้นไม่นูน วิธีอนุพันธ์จะติดหลุมเฉพาะที่ได้ง่าย

เวลาเกิดเหตุ — ไม่ต้องกวาดหา ที่พิกัดใด ๆ ค่าที่ดีที่สุดคือค่าเฉลี่ยของ (เวลาที่จับได้ − เวลาเดินทางที่ทำนาย) จึงเหลือตัวแปรที่ต้องกวาดจริงแค่ 3 ตัว

ความไม่แน่นอน — เก็บทุกจุดในตารางละเอียดที่ค่า RMS ไม่เกินค่าต่ำสุด + 1 วินาที แล้วรายงานเป็นกรอบพื้นที่ กรอบยิ่งแคบยิ่งมั่นใจ

ช่องว่างมุมกวาด (azimuthal gap) — มุมที่กว้างที่สุดที่ไม่มีสถานีเลยเมื่อมองจากศูนย์กลาง ต่ำกว่า 180° ถือว่าใช้ได้ เกิน 270° แปลว่าตำแหน่งจะยืดไปตามทิศที่ไม่มีสถานี — เป็นตัวชี้วัดคุณภาพที่สำคัญกว่าจำนวนสถานีเสียอีก

ข้อจำกัดที่ต้องรู้: โมเดลเปลือกแบนใช้ได้ดีที่ระยะไม่เกินราว 1,000 กม. เท่านั้น เกินกว่านั้นต้องคิดความโค้งของโลกและใช้โมเดลอย่าง IASP91 · ความลึกเป็นตัวแปรที่หายากที่สุดเสมอ ถ้าสถานีใกล้สุดอยู่ไกลกว่าความลึกของแผ่นดินไหวมาก ๆ ค่าความลึกที่ได้แทบไม่มีความหมาย · และเราใช้เฉพาะเฟส P ถ้าเพิ่มการจับ S ด้วยจะบีบตำแหน่งได้แน่นขึ้นอีกมาก

📋 ตารางเทียบผล — ตัวตรวจจับของเรา vs แคตาลอกทางการ

แต่ละแถวคือหนึ่งเหตุการณ์ที่ประมวลผลแล้วในเซสชันนี้ ตัวเลขที่ต้องดูคือ ค่าคลาดเคลื่อนของ pick (เวลาที่เราจับได้ − เวลาที่ทฤษฎีบอก) ไม่ใช่ “เร็วกว่าแคตาลอกกี่วินาที”
ข้อควรระวังเรื่องการตีความ: การเทียบว่า “เราตรวจจับได้เร็วกว่าแคตาลอก” นั้นเทียบกันตรง ๆ ไม่ได้ เพราะเราอ่านข้อมูลจาก คลังย้อนหลัง (archive) ซึ่งมีความหน่วงเป็นนาทีถึงชั่วโมง ขณะที่ศูนย์เตือนภัยจริงรับสตรีมสด ตัวเลขที่มีความหมายและตรวจสอบได้จริงคือ ค่าคลาดเคลื่อนเทียบเวลามาถึงเชิงทฤษฎี (IASP91) ซึ่งวัดคุณภาพของตัวตรวจจับล้วน ๆ ไม่ปนกับความหน่วงของระบบส่งข้อมูล
เหตุการณ์ สถานี M ระยะ (กม.) Origin (UTC) P ทฤษฎี (วิ) Trigger (วิ) AIC pick (วิ) คลาดเคลื่อน (วิ) SNR (dB) Md ΔM
📋ยังไม่มีข้อมูล — ไปแท็บ “คลื่นดิบ” เลือกเหตุการณ์แล้วกดประมวลผล

🩺 ตรวจการเข้าถึงข้อมูล FDSN

ทดสอบของจริงจากเซิร์ฟเวอร์นี้ — ไม่ใช่การเดา แต่ละสถานีจะถูกยิงจริง 3 ชั้น: (1) ศูนย์ข้อมูลตอบไหม (2) มี metadata สาธารณะไหม (3) ดึงคลื่น 20 วินาทีได้จริงไหม

🧪 Self-test — พิสูจน์ว่า DSP ถูกก่อนเชื่อผลจากข้อมูลจริง

ป้อนสัญญาณที่ รู้คำตอบล่วงหน้า เข้าไปในอัลกอริทึมเดียวกันกับที่ใช้กับข้อมูลจริง แล้วเช็คว่าได้คำตอบนั้นกลับมา ถ้าแถวไหนแดง แปลว่าอย่าเพิ่งเชื่อผลจากแท็บอื่น

🔬 วิธีการโดยละเอียด

ทุกขั้นตอนเขียนเองในไฟล์นี้ ไม่ได้เรียกไลบรารี DSP ภายนอก — เปิดดูโค้ดตรวจสอบได้

1 · การได้มาซึ่งข้อมูล

ขอผ่าน fdsnws/dataselect ด้วย format=miniseed — ได้ไบต์ดิบตามที่เครื่องวัดบันทึกไว้จริง เซิร์ฟเวอร์ไม่แตะต้องข้อมูลเลย ไม่กรอง ไม่ตัดค่าเฉลี่ย ไม่แปลงหน่วย งานทั้งหมดจึงเป็นของเราเอง ค่าที่ได้เป็น counts ดิบจาก ADC

PHP ทำหน้าที่แค่ส่งไบต์ผ่าน (api=mseed) ส่วนการถอดรหัส Steim1/Steim2 ทำในเบราว์เซอร์ — เหตุผลคือ DSP ทั้งชุดอยู่ในเบราว์เซอร์อยู่แล้ว และเซิร์ฟเวอร์แชร์โฮสต์จะได้ไม่ต้องแบกอาเรย์หลายแสนตัวจนชน memory_limit · ตัวถอดรหัสมีชุดทดสอบของตัวเองอยู่ในแท็บ “ตรวจสอบตัวเอง” (T18–T20) เทียบกับระเบียนที่รู้คำตอบล่วงหน้า

หมายเหตุประวัติ: เดิมหน้านี้ใช้ irisws/timeseries ซึ่งแปลงเป็น ASCII ให้เสร็จ แต่ EarthScope ปิดบริการนั้นถาวรเมื่อ 26 ส.ค. 2569 พร้อมกับ irisws/traveltime และ fdsnws/availability

2 · การเตรียมสัญญาณ — และบทเรียนหนึ่งข้อ

ตัดแนวโน้มเชิงเส้น (least-squares detrend) แล้วส่งเข้าฟิลเตอร์โดยตรง ไม่ใส่ taper ในเส้นทางตรวจจับ

ทำไมถึงไม่ใส่ taper: เวอร์ชันแรกของโมดูลนี้ใส่ Hann taper 5% ตามตำราก่อนตรวจจับ ผลคือระบบจับเวลาผิดที่ขอบทุกครั้ง เหตุผลคือ taper ลดแอมพลิจูดช่วงต้นร่องรอยลงจนเกือบศูนย์ พอหน้าต่าง LTA (ซึ่งยาว 30 วินาที) ไปคร่อมบริเวณนั้น ตัวหารเล็กผิดปกติ อัตราส่วน STA/LTA จึงพุ่งทันทีที่หน้าต่างพ้นเขต taper — กลายเป็น “จุดเริ่มเทียม” ที่ตัวตรวจจับกินเบ็ดเต็ม ๆ
ทางแก้: ตัด taper ออกจากเส้นทางตรวจจับ จัดการขอบของฟิลเตอร์ด้วย odd-reflection padding ใน filtfilt แทน ส่วน taper ที่จำเป็นจริง ๆ สำหรับงานสเปกตรัมนั้นอยู่ในแต่ละหน้าต่างของ STFT/Welch อยู่แล้ว บั๊กนี้ถูกล็อกไว้ด้วยการทดสอบข้อที่ 13 ในแท็บ Self-test

นอกจากนี้ช่วง อุ่นเครื่อง (STA + LTA แรก) ถูกแรเงาไว้บนกราฟ STA/LTA และไม่ถูกนับเป็น trigger เพราะหน้าต่าง LTA ยังเต็มไม่พอ อัตราส่วนในช่วงนั้นเชื่อถือไม่ได้

3 · ฟิลเตอร์ Butterworth

สร้างจาก biquad section แบบ RBJ ที่ตั้งค่า Q ตามตำแหน่งขั้ว Butterworth Q = 1/(2·cos((2k+1)π/2N)) ต่อกันเป็นชั้น band-pass ทำเป็น high-pass ตามด้วย low-pass กรองสองรอบ ไป-กลับ (filtfilt) เพื่อให้ได้ zero-phase — จุดเริ่มของคลื่นไม่ถูกเลื่อน ซึ่งสำคัญมากเวลา pick

4 · STA/LTA

ค่าเฉลี่ยระยะสั้นหารด้วยค่าเฉลี่ยระยะยาวของฟังก์ชันลักษณะเฉพาะ (CF) คำนวณด้วย running sum จึงเป็น O(n) มี CF ให้เลือก 4 แบบ รวมถึง energy+derivative ตาม Allen (1978) ที่ถ่วงน้ำหนักอนุพันธ์เพื่อไวต่อการเปลี่ยนความถี่กะทันหัน

5 · AIC — ปรับจุดเริ่มให้คม

STA/LTA บอกว่า “แถว ๆ นี้มีอะไร” แต่จุดที่มันข้ามเกณฑ์มักช้ากว่าจุดเริ่มจริง จึงเอาหน้าต่างรอบ trigger มาหาค่าต่ำสุดของ AIC(k)=k·ln(var(x[0..k]))+(n−k−1)·ln(var(x[k+1..n])) ซึ่งคือจุดที่แบ่ง “สัญญาณรบกวน” กับ “สัญญาณ” ได้ดีที่สุดในเชิงสถิติ (Maeda 1985)

6 · เวลาเดินทางเชิงทฤษฎี

เรียก irisws/traveltime ซึ่งรัน TauP บนโมเดล IASP91 จริง ถ้าเรียกไม่ได้จะถอยไปใช้โมเดลเปลือกโลกแบนที่ประกาศค่าไว้ชัดเจน (H=35 กม., Vp 5.80/8.00, Vs 3.36/4.62) — โมเดลสำรองนี้ใช้ได้เฉพาะระยะใกล้กว่า 1,000 กม.

7 · ขนาดจากความยาวโคดา (Md)

Md = −0.87 + 2.00·log₁₀(τ) + 0.0035·Δ เมื่อ τ คือความยาวสัญญาณจนกลับสู่ระดับรบกวน และ Δ คือระยะทางเป็นกิโลเมตร

ข้อจำกัดที่ต้องบอกตรง ๆ: สัมประสิทธิ์ชุดนี้ Lee และคณะปรับเทียบไว้กับแคลิฟอร์เนียตอนกลาง ยังไม่เคยปรับเทียบกับธรณีวิทยาของอินโดจีน ตัวเลข Md ที่ได้จึงควรอ่านเป็น “ค่าประมาณคร่าว ๆ” เท่านั้น การปรับเทียบใหม่ด้วยเหตุการณ์ในภูมิภาคนี้เป็นงานต่อยอดที่ทำได้จริงและมีคุณค่าเชิงวิชาการ

⚠️ ข้อจำกัดที่รู้ตัว

สถานีเดียว = หาตำแหน่งไม่ได้ — ระบุพิกัดศูนย์กลางต้องใช้อย่างน้อย 3 สถานี หน้านี้ทำได้แค่ “ตรวจจับ + จับเวลา” ไม่ใช่ “หาตำแหน่ง”

ไม่ใช่ระบบเตือนภัย — คลังข้อมูล FDSN มีความหน่วงเป็นนาทีถึงชั่วโมง ใช้เพื่อการศึกษาและวิเคราะห์ย้อนหลังเท่านั้น การเตือนภัยจริงต้องใช้สตรีม SeedLink และเป็นหน้าที่ของกรมอุตุนิยมวิทยา

ยังไม่ถอดผลตอบสนองเครื่องมือแบบเต็ม — ตัวเลือก “คูณ gain” ใช้เฉพาะอัตราขยายขั้นที่ 0 ยังไม่ deconvolve ทั้ง response ดังนั้นแอมพลิจูดที่ความถี่ห่างจากย่านแบนราบจะเพี้ยน

Md ยังไม่ปรับเทียบกับภูมิภาค — ตามที่ระบุข้างต้น

ช่องว่างข้อมูล (gap) — ถ้าช่วงที่ขอมีข้อมูลขาด ตัวอ่านจะหยุดที่ขอบ segment แรกและขึ้นคำเตือน ไม่ได้เย็บต่อให้อัตโนมัติ

📚 เอกสารอ้างอิง

Allen, R.V. (1978) Automatic earthquake recognition and timing from single traces. BSSA 68(5), 1521–1532. — ต้นตำรับ STA/LTA และ CF แบบ energy+derivative
Withers, M. et al. (1998) A comparison of select trigger algorithms for automated global seismic phase and event detection. BSSA 88(1), 95–106.
Maeda, N. (1985) A method for reading and checking phase times in autoprocessing system of seismic wave data. Zisin 38, 365–379. — AIC picker
Sleeman, R. & van Eck, T. (1999) Robust automatic P-phase picking. PEPI 113, 265–275.
Trnkoczy, A. (2012) Understanding and parameter setting of STA/LTA trigger algorithm. NMSOP-2, IS 8.1, GFZ. — คู่มือเลือกค่าพารามิเตอร์
Lee, W.H.K. et al. (1972) A method of estimating magnitude of local earthquakes from signal duration. USGS Open-File Report 72-224. — สูตร Md
Welch, P.D. (1967) The use of FFT for the estimation of power spectra. IEEE Trans. Audio Electroacoust. AU-15, 70–73.
Cooley, J.W. & Tukey, J.W. (1965) An algorithm for the machine calculation of complex Fourier series. Math. Comput. 19, 297–301.
Kennett, B.L.N. & Engdahl, E.R. (1991) Traveltimes for global earthquake location and phase identification. GJI 105, 429–465. — โมเดล IASP91
Bracewell, R. (2000) The Fourier Transform and Its Applications, 3rd ed. McGraw-Hill. — Hilbert transform / analytic signal
Harris, F.J. (1978) On the use of windows for harmonic analysis with the DFT. Proc. IEEE 66(1), 51–83. — หน้าต่าง Hann

🌐 แหล่งข้อมูลและเครดิต

EarthScope Consortium / IRIS DMCservice.iris.edu · fdsnws-station, fdsnws-dataselect (miniSEED)
SEED Reference Manual v2.4 — รูปแบบ Fixed Section of Data Header, blockette 1000 และการบีบอัด Steim1/Steim2 (FDSN, 2012)
GEOFON / GFZ Helmholtz Centre Potsdamgeofon.gfz.de · เจ้าของเครือข่าย GE รวมสถานี NPW เนปยีดอ และอาร์เรย์ 6C คร่อมรอยเลื่อนสะกาย
USGS Earthquake Hazards Programearthquake.usgs.gov/fdsnws/event/1 · แคตาลอกที่ใช้เป็นเส้นฐานเปรียบเทียบ
Thai Meteorological Department (TMD) — ผู้ดำเนินการเครือข่าย TM (Thai Seismic Monitoring Network, จดทะเบียน FDSN ปี 2008)
Department of Meteorology and Hydrology, Myanmar (DMH-NEDC) — ผู้ดำเนินการเครือข่าย MM (จดทะเบียน FDSN ปี 2016)
ข้อมูลคลื่นไหวสะเทือนจากเครือข่ายเหล่านี้เปิดให้ใช้เพื่อการวิจัยและการศึกษา หากนำผลไปเผยแพร่ ควรอ้างอิงเครือข่ายและศูนย์ข้อมูลตามที่ระบุในหน้า FDSN ของแต่ละเครือข่าย