สถานีตรวจแผ่นดินไหวเสมือน
ดึง คลื่นไหวสะเทือนดิบ จากเครือข่าย FDSN (EarthScope/IRIS · GEOFON) แล้ววิเคราะห์เองทั้งหมด — สเปกโตรแกรม STFT, ตัวตรวจจับ STA/LTA, ปรับจุดเริ่มด้วย AIC, แล้วเทียบผลกับแคตาลอกทางการของ USGS
ต่างจากหน้า “แผ่นดินไหว” อย่างไร: หน้านั้นอ่านผลที่คนอื่นวิเคราะห์เสร็จแล้ว · หน้านี้เริ่มจาก sample แรกของเซนเซอร์
🗺️ สถานีที่เปิดข้อมูลสาธารณะรอบเมืองตาก
includerestricted=false — สิ่งที่เห็นบนแผนที่คือสถานีที่ เปิดจริง เท่านั้น จุดสีฟ้าคือเทศบาลเมืองตาก📋 รายชื่อสถานี —
| เครือข่าย | สถานี | ชื่อสถานที่ | ระยะ (กม.) | องศา | ทิศจากตาก | ช่วงเวลาให้บริการ | ศูนย์ข้อมูล | |
|---|---|---|---|---|---|---|---|---|
| 📡กด “ค้นสถานี” เพื่อเริ่ม | ||||||||
⭐ สถานีที่แนะนำ (คัดมาแล้ว)
🎯 เลือกเหตุการณ์ทดสอบ
📥 พารามิเตอร์การดึงคลื่น
BHZ = broadband แนวดิ่ง ~20–40 sps · HHZ = high-gain ~100 sps (ละเอียดกว่า แต่ไฟล์ใหญ่กว่ามาก)🌈 สเปกโตรแกรม (STFT)
📊 สเปกตรัมกำลัง (Welch PSD) — ก่อนเทียบหลังเหตุการณ์
📍 หาตำแหน่งศูนย์กลางเอง จากหลายสถานี
หลักการ: คลื่น P เดินทางด้วยความเร็วที่ทราบ ถ้ารู้ว่ามันไปถึงแต่ละสถานีเมื่อไหร่ ก็ย้อนกลับไปหาจุดกำเนิดได้ — ระบบกวาดตารางพิกัดทั่วทั้งภูมิภาค แล้วเลือกจุดที่ทำให้เวลามาถึงที่ทำนายได้ตรงกับที่วัดได้จริงมากที่สุด
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 แคตาลอกทางการ
| เหตุการณ์ | สถานี | M | ระยะ (กม.) | Origin (UTC) | P ทฤษฎี (วิ) | Trigger (วิ) | AIC pick (วิ) | คลาดเคลื่อน (วิ) | SNR (dB) | Md | ΔM |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 📋ยังไม่มีข้อมูล — ไปแท็บ “คลื่นดิบ” เลือกเหตุการณ์แล้วกดประมวลผล | |||||||||||
🩺 ตรวจการเข้าถึงข้อมูล FDSN
🧪 Self-test — พิสูจน์ว่า 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 แรกและขึ้นคำเตือน ไม่ได้เย็บต่อให้อัตโนมัติ
📚 เอกสารอ้างอิง
🌐 แหล่งข้อมูลและเครดิต
service.iris.edu · fdsnws-station, fdsnws-dataselect (miniSEED)geofon.gfz.de · เจ้าของเครือข่าย GE รวมสถานี NPW เนปยีดอ และอาร์เรย์ 6C คร่อมรอยเลื่อนสะกายearthquake.usgs.gov/fdsnws/event/1 · แคตาลอกที่ใช้เป็นเส้นฐานเปรียบเทียบ