WeatherNext 3 กับประเทศไทย: AI พยากรณ์อากาศรายชั่วโมงจากภาพดาวเทียม ใช้อย่างไรให้ถูก
เมื่อ 3 กันยายน 2026 Google DeepMind และ Google Research เปิดตัว WeatherNext 3 โมเดล AI พยากรณ์อากาศระดับโลกรุ่นล่าสุด จุดเด่นคือ อัปเดตทุกชั่วโมง ละเอียดถึง 5 กม. และนำ ภาพดาวเทียมแบบเรียลไทม์ เข้าโมเดลโดยตรง ตอนนี้เป็นโมเดลเบื้องหลังข้อมูลสภาพอากาศใน Google Search, Gemini และ Google Maps และนักพัฒนาดึงข้อมูลไปใช้เองได้
บทความนี้สรุปว่ามีอะไรใหม่ อ่านพยากรณ์แบบ ensemble อย่างไร และดึงข้อมูลมาใช้ในงานของเราได้ช่องทางไหนบ้าง โดยเน้นสิ่งที่ต้องรู้เมื่อนำมาใช้กับประเทศไทย ทั้งข้อจำกัดจาก paper ของโมเดลเอง และวิธีเทียบกับเกณฑ์และข้อมูลของกรมอุตุนิยมวิทยา (อต.)
1. WeatherNext 3 คืออะไร
การพยากรณ์อากาศแบบดั้งเดิม (Numerical Weather Prediction) แก้สมการฟิสิกส์ของบรรยากาศบนซูเปอร์คอมพิวเตอร์ ส่วน WeatherNext เป็นตระกูลโมเดล AI ที่ เรียนรู้รูปแบบจากข้อมูลบรรยากาศในอดีต จึงสร้างพยากรณ์ได้เร็วกว่ามาก
WeatherNext 3 ใช้สถาปัตยกรรม Functional Generative Network (FGN) mesh transformer และรับข้อมูลนำเข้าหลายแหล่ง
- ภาพดาวเทียมค้างฟ้า (geostationary) 11 ช่องสัญญาณ ประกอบเป็นภาพทั้งโลกที่ 0.1° ทุก 1 ชั่วโมง ระบบเรียลไทม์ใช้ GOES-18/19, Meteosat-9/11 และ Himawari-8/9 ซึ่งเป็นดวงที่มองเห็นประเทศไทย
- ข้อมูลฝน จากดาวเทียม IMERG ของ NASA และข้อมูลฝนย้อนหลังที่ Google สร้างจากเรดาร์บนดาวเทียม
- ข้อมูลสถานีภาคพื้นดิน จาก METAR (สถานีสนามบินราว 5,000 แห่งทั่วโลก), Mesonet (เครือข่ายหนาแน่น ส่วนใหญ่อยู่ในยุโรปและอเมริกาเหนือ) และ ICOADS (ข้อมูลทางทะเล)
- ข้อมูลวิเคราะห์สภาพบรรยากาศ ERA5 (1959–2015) และ HRES ของ ECMWF (ตั้งแต่ 2016) ใช้ทั้งฝึกโมเดลและเป็นจุดเริ่มต้นของการพยากรณ์
การรับภาพดาวเทียมเข้าโมเดลโดยตรงช่วยลดเวลาตั้งแต่เกิดการสังเกตการณ์จนได้พยากรณ์ จากรุ่นก่อนราว 7 ชั่วโมง เหลือประมาณ 3–4 ชั่วโมง
ตระกูล WeatherNext
| รุ่น | ประเภทโมเดล | กริด | ช่วงเวลา | ensemble |
|---|---|---|---|---|
| WeatherNext 1 Graph (GraphCast) | Graph Neural Network แบบ deterministic | 0.25° | 6 ชม. | 1 |
| WeatherNext 1 Gen (GenCast) | Diffusion แบบ probabilistic | 0.25° | 12 ชม. | 50 |
| WeatherNext 2 | FGN | 0.25° | 6 ชม. | 64 |
| WeatherNext 3 | FGN mesh transformer + ดาวเทียมเรียลไทม์ | 0.05° / 0.1° / 0.25° | 1 ชม. | 64 |
2. อะไรใหม่ใน WeatherNext 3
| WeatherNext 2 | WeatherNext 3 | |
|---|---|---|
| ความละเอียด | 0.25° (~25 กม.) | 0.05° (~5 กม.) อุณหภูมิ/ความชื้นที่สถานี · 0.1° (~10 กม.) ตัวแปรผิวดิน · 0.25° ระดับความกดอากาศ |
| ช่วงเวลาของพยากรณ์ | ทุก 6 ชม. | ทุก 1 ชม. |
| รอบการพยากรณ์ | 4 รอบต่อวัน | 24 รอบต่อวัน (ทุกชั่วโมง) |
| ระยะพยากรณ์ | 15 วัน | 15 วัน (รอบ 00/06/12/18 UTC) และ 48 ชม. (รอบรายชั่วโมงระหว่างนั้น) |
| ฝนสะสม | 6 ชม. | 1 ชม. |
| ตัวแปรด้านพลังงาน | — | ลมที่ความสูง 100 ม. (ระดับใบพัดกังหันลม), เมฆหลายระดับ, รังสีดวงอาทิตย์ |
ตัวแปรผิวดินหลักที่ 0.1° ได้แก่ อุณหภูมิและจุดน้ำค้างที่ 2 ม., ลมที่ 10 ม. และ 100 ม., ความกดอากาศระดับน้ำทะเล, อุณหภูมิผิวน้ำทะเล, ปริมาณเมฆ (รวม/สูง/กลาง/ต่ำ), รังสีดวงอาทิตย์ และฝนรายชั่วโมง
ถ้าเคยใช้ WeatherNext 2 ชื่อตัวแปรเปลี่ยนจากแบบนำหน้าเป็นแบบต่อท้าย เช่น 2m_temperature → temperature_2m และฝนเปลี่ยนจากสะสม 6 ชั่วโมงเป็น 1 ชั่วโมง โค้ดเดิมต้องแก้ทั้งชื่อคอลัมน์และวิธีรวมค่าฝน
3. แม่นยำแค่ไหน
Google รายงานว่า WeatherNext 3 พยากรณ์ฝน แม่นยำขึ้นสูงสุด 50% สำหรับการวางแผนล่วงหน้าตั้งแต่ 1 วันขึ้นไป โดยปรับปรุงมากที่สุดในพื้นที่ที่การพยากรณ์เคยไม่ค่อยแม่น เมื่อวัดด้วย CRPS ช่วงพยากรณ์ระยะสั้น ผลดีขึ้นสูงสุด 60% เมื่อเทียบกับข้อมูล IMERG, 30% เทียบกับ MRMS (ข้อมูลเรดาร์ของสหรัฐฯ) และ 10% เทียบกับเครื่องวัดฝนภาคพื้นดิน Google ยังอ้างผลประเมินแบบ live ของ Brightband ซึ่งเป็นผู้ประเมินภายนอก ว่าเป็นโมเดลพยากรณ์ระดับโลกที่แม่นยำที่สุดในขณะนั้น
ตัวเลขทั้งหมดนี้มาจากประกาศและ paper ของ Google เอง และมีรายละเอียดที่ต้องอ่านให้ครบก่อนนำมาใช้กับไทย (ดูหัวข้อถัดไป)
4. ก่อนใช้กับประเทศไทย: อ่าน paper ให้ครบ
paper ของ WeatherNext 3 บอกข้อจำกัดไว้ชัด และหลายข้อเกี่ยวกับสภาพอากาศแบบไทยโดยตรง
4.1 ยังไม่ได้ประเมินฝนหนัก
การประเมินความแม่นยำของฝนใน paper จำกัดไว้ที่ปริมาณปานกลางไม่เกิน 4 มม. ต่อ 6 ชั่วโมง เพราะเหตุการณ์ฝนหนักเกิดน้อยจนประเมินได้ไม่น่าเชื่อถือ ผู้เขียนระบุว่าจะประเมินฝนสุดขั้วในงานถัดไป
เทียบกับเกณฑ์ของกรมอุตุนิยมวิทยา ฝนหนักเริ่มที่ 35.1 มม. ต่อวัน และฝนหนักมากเริ่มที่ 90.1 มม. ซึ่งเป็นช่วงที่สำคัญที่สุดสำหรับงานเตือนภัย แปลว่า ตัวเลข "แม่นยำขึ้น 50%" ยังไม่ได้ครอบคลุมเหตุการณ์ที่ทำให้น้ำท่วมในไทย อีกทั้งชุดข้อมูลอ้างอิงตัวหนึ่ง (MRMS) เป็นเรดาร์ภาคพื้นดินของสหรัฐฯ จึงไม่ได้สะท้อนภูมิภาคเขตร้อน
4.2 สถานีที่ใช้ฝึกโมเดลในไทยส่วนใหญ่คือสนามบิน
ตัวแปรละเอียด 0.05° (อุณหภูมิและจุดน้ำค้างที่ 2 ม.) ฝึกจากข้อมูลสถานี ซึ่งเครือข่ายหนาแน่น (Mesonet) อยู่ในยุโรปและอเมริกาเหนือเป็นหลัก ในไทยจึงเหลือสถานี METAR ของสนามบินเป็นส่วนใหญ่ paper ยังรายงานว่าโมเดลมี bias ในพื้นที่ที่มีสถานีน้อย เช่น เทือกเขาแอนดีสและหิมาลัย แม้จะไม่ได้กล่าวถึงไทยโดยตรง แต่พื้นที่ภูเขาทางภาคเหนือและพื้นที่ห่างไกลสนามบินควรตรวจเทียบกับสถานีจริงก่อนใช้
4.3 ฝนมรสุมและพายุฟ้าคะนองเฉพาะจุด
ตามกรมอุตุนิยมวิทยา ฤดูฝนของไทยเริ่มราวกลางเดือนพฤษภาคมถึงกลางเดือนตุลาคม ตามมรสุมตะวันตกเฉียงใต้ ส่วน ภาคใต้ยังมีฝนชุกต่อไปถึงเดือนธันวาคม และมักมีฝนหนักถึงหนักมากจนเกิดอุทกภัย โดยเฉพาะภาคใต้ฝั่งตะวันออก ฝนส่วนหนึ่งมาจากพายุฝนฟ้าคะนองที่มีขนาดเล็กกว่ากริด 10 กม. ค่าฝนรายช่องจึงเป็น "ค่าเฉลี่ยของพื้นที่ราว 100 ตร.กม." ไม่ใช่ปริมาณ ณ จุดเดียว ฝนหนักเฉพาะจุดจึงมักถูกเกลี่ยให้ต่ำลง paper ยังพบรูปแบบหกเหลี่ยมตามโครงสร้าง mesh ของโมเดลปรากฏในภาพฝนด้วย
4.4 พายุหมุนเขตร้อน: ทางเดินพายุดีขึ้น แต่ช่วงความไม่แน่นอนแคบเกินไป
paper ประเมินพายุทุกแอ่ง รวมถึงแปซิฟิกตะวันตกที่พายุมักเคลื่อนผ่านทะเลจีนใต้เข้าสู่ไทย พบว่าความคลาดเคลื่อนของทางเดินและความแรงของพายุดีขึ้นจาก WeatherNext 2 แต่ ensemble มีการกระจาย แคบเกินจริง (under-spread) มากกว่ารุ่นก่อน ช่วง _p10–_p90 ของพายุจึงอาจดูมั่นใจเกินกว่าที่ควร
4.5 แนวทางใช้งานในไทย
- ใช้ WeatherNext 3 เป็น ข้อมูลประกอบ สำหรับดูแนวโน้มและความไม่แน่นอน ไม่ใช่ตัวตัดสินการเตือนภัย
- ตรวจเทียบ (verify) กับเครื่องวัดฝนในพื้นที่ ก่อนเชื่อตัวเลข เช่น สถานีอัตโนมัติ (AWS) ของกรมอุตุนิยมวิทยา หรือสถานีโทรมาตรใน ThaiWater อย่างน้อยหนึ่งฤดูฝน
- สำหรับฝนหนักและพายุ ให้อ้างอิง ประกาศเตือนภัยของกรมอุตุนิยมวิทยา เป็นหลัก ส่วนการแจ้งเตือนสาธารณภัยถึงประชาชนเป็นหน้าที่ของ กรมป้องกันและบรรเทาสาธารณภัย (ปภ.) ซึ่งเริ่มทดสอบระบบแจ้งเตือนผ่านมือถือแบบ Cell Broadcast ในเดือนพฤษภาคม 2568 และทดสอบพร้อมกันทั่วประเทศเมื่อ 20 มกราคม 2569
5. อ่านพยากรณ์แบบ ensemble ให้เป็น
WeatherNext 3 ไม่ได้ให้คำตอบเดียว แต่สร้าง 64 ฉากทัศน์ (ensemble members) ที่เป็นไปได้ ในชุดข้อมูลบน BigQuery และ Earth Engine ทั้ง 64 ค่าถูกสรุปไว้แล้วเป็น 6 สถิติต่อตัวแปร คือ _mean, _p10, _p25, _p50, _p75 และ _p90
สิ่งที่เห็นจากรูป
- ค่าเฉลี่ยทำให้พีคดูต่ำลง เพราะแต่ละฉากทัศน์ให้ฝนตกหนักสุดคนละเวลา เมื่อเฉลี่ยแล้วพีคจึงแบนลง
_p90หมายถึง "มีเพียง 10% ของฉากทัศน์ที่ฝนมากกว่านี้" จึงเหมาะกับการวางแผนรับมือกรณีแย่- ความกว้างของแถบ บอกความไม่แน่นอน ถ้าแถบกว้าง แปลว่าโมเดลยังไม่มั่นใจ ควรสื่อสารกับผู้ใช้ว่ามีโอกาสหลายแบบ
- ยังมีฉากทัศน์ที่สูงกว่า
_p90อยู่ ถ้าต้องดูกรณีสุดขั้ว ต้องใช้ข้อมูลครบทั้ง 64 สมาชิกจาก Cloud Storage
แสดง _mean เป็น "ค่าที่น่าจะเป็น" คู่กับ _p90 เป็น "กรณีฝนมากที่ควรเตรียมรับ" ผู้อ่านจะเห็นทั้งสองด้าน แต่การเทียบกับเกณฑ์รายวันของกรมอุตุนิยมวิทยามีรายละเอียดเรื่องรอบวันและการรวมค่า ดูหัวข้อ 8
6. ช่องทางเข้าถึงข้อมูล
| ช่องทาง | ได้อะไร | เหมาะกับ |
|---|---|---|
| Google Maps Platform Weather API | พยากรณ์รายจุดแบบสำเร็จรูป (REST) | แอปและเว็บที่อยากได้คำตอบทันที |
| BigQuery | ตาราง weathernext_3_0_0_0p1deg และ weathernext_3_0_0_0p05deg (สถิติ 6 ค่า) | วิเคราะห์ด้วย SQL, join กับข้อมูลธุรกิจ |
| Earth Engine | ImageCollection ชื่อเดียวกัน | งานเชิงพื้นที่, ทำแผนที่, รวมกับภาพดาวเทียม |
| Cloud Storage (Zarr) | gs://weathernext3_spatial/ ครบ 64 สมาชิก, gs://weathernext3_statistics_spatial/ สรุปสถิติ | ประมวลผลขนาดใหญ่, ฝึกโมเดลต่อ |
การขอสิทธิ์ (BigQuery / Earth Engine / Cloud Storage): กรอกแบบฟอร์มขอเข้าถึงในหน้า Access WeatherNext forecasts ด้วยบัญชี Google (Gmail หรือ Workspace) ไม่เสียค่าข้อมูล นักศึกษาและนักวิจัยขอได้ ไม่ต้องมีสัญญา Google Cloud แบบเสียเงิน ปกติอนุมัติภายใน 5–7 วันทำการ (ค่าประมวลผลของ BigQuery และ Earth Engine คิดตามเงื่อนไขของแต่ละบริการ)
- ข้อมูล เรียลไทม์ (อายุน้อยกว่า 1 ชั่วโมง) อยู่ภายใต้ GDM Real-Time Weather Forecasting Experimental Data Terms of Use
- ข้อมูล ย้อนหลัง (อายุ 1 ชั่วโมงขึ้นไป) อยู่ภายใต้ CC BY 4.0 ต้องให้เครดิต
- Google ระบุว่าผลพยากรณ์ให้ "ตามสภาพ" เพื่อข้อมูลและการวิจัย ไม่ใช่พยากรณ์อากาศทางการ ในประเทศไทย ประกาศทางการยังเป็นของกรมอุตุนิยมวิทยา
7. โค้ดตัวอย่าง
7.1 Weather API: พยากรณ์รายชั่วโมงของจุดหนึ่ง
Google ระบุว่า Weather API ใช้ WeatherNext 3 ตั้งแต่ 3 ก.ย. 2026 วิธีนี้ง่ายที่สุด แต่ต้องมี API key ของ Google Maps Platform ที่ผูกบัญชีเรียกเก็บเงิน (ดูอัตราค่าบริการในหน้า Maps Platform) และได้พยากรณ์รายจุดที่ประมวลผลแล้ว ไม่ได้ข้อมูล ensemble ดิบ
ตามหน้า coverage ประเทศไทยใช้ได้ทุก endpoint ทั้งสภาพอากาศปัจจุบัน พยากรณ์รายชั่วโมงและรายวัน ข้อมูลย้อนหลัง และ weather alerts แต่เอกสารไม่ได้ระบุว่า alerts ของไทยมาจากหน่วยงานใด ก่อนนำไปแสดงเป็นคำเตือน จึงควรตรวจเทียบกับประกาศของกรมอุตุนิยมวิทยา
// node weather-api.mjs (ตั้ง GOOGLE_MAPS_API_KEY ใน environment ก่อน)
const url = new URL("https://weather.googleapis.com/v1/forecast/hours:lookup");
url.search = new URLSearchParams({
key: process.env.GOOGLE_MAPS_API_KEY,
"location.latitude": 13.7563, // กรุงเทพฯ
"location.longitude": 100.5018,
hours: 24, // ได้สูงสุด 240 ชม. (หน้าละ 24 ชม. ใช้ pageToken ดึงหน้าถัดไป)
});
const res = await fetch(url);
if (!res.ok) throw new Error(`Weather API ${res.status}: ${await res.text()}`);
const { forecastHours } = await res.json();
for (const h of forecastHours) {
const t = new Date(h.interval.startTime).toLocaleString("th-TH", { timeZone: "Asia/Bangkok" });
console.log(
t,
`${h.temperature.degrees}°C`,
`โอกาสฝน ${h.precipitation.probability.percent}%`,
`ฝน ${h.precipitation.qpf.quantity} มม.`,
);
}เรียก Weather API จาก backend แล้ว cache ผลไว้ ถ้าจำเป็นต้องเรียกจากเบราว์เซอร์ ให้จำกัด key ด้วย HTTP referrer และจำกัดให้ใช้ได้เฉพาะ Weather API ใน Google Cloud Console
7.2 BigQuery: ฝนกรณีแย่ (p90) 48 ชั่วโมงข้างหน้า
หลังได้รับสิทธิ์ ชุดข้อมูลจะปรากฏในโปรเจกต์ของเรา ให้แทน YOUR_PROJECT_ID.YOUR_DATASET_ID ด้วยชื่อที่ได้รับ ตารางแบ่ง partition ตาม init_time จึง ต้องกรอง init_time เสมอ เพื่อลดปริมาณข้อมูลที่สแกน (และค่าใช้จ่าย)
DECLARE latest TIMESTAMP DEFAULT (
SELECT MAX(init_time)
FROM `YOUR_PROJECT_ID.YOUR_DATASET_ID.weathernext_3_0_0_0p1deg`
WHERE init_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
);
SELECT
DATETIME(f.time, 'Asia/Bangkok') AS local_time,
ROUND(f.temperature_2m_mean - 273.15, 1) AS temp_c, -- เคลวิน → °C
ROUND(f.total_precipitation_1hr_mean * 1000, 1) AS rain_mean_mm, -- เมตร → มม.
ROUND(f.total_precipitation_1hr_p90 * 1000, 1) AS rain_p90_mm,
ROUND(f.wind_speed_10m_mean, 1) AS wind_ms
FROM `YOUR_PROJECT_ID.YOUR_DATASET_ID.weathernext_3_0_0_0p1deg` AS t,
t.forecast AS f
WHERE t.init_time = latest
AND ST_INTERSECTS(t.geography_polygon, ST_GEOGPOINT(100.5018, 13.7563)) -- กรุงเทพฯ
AND f.hours <= 48
ORDER BY f.time;แต่ละแถวของตารางคือ 1 ช่องกริดของรอบพยากรณ์หนึ่ง ส่วนคอลัมน์ forecast เป็น array ของทุกชั่วโมงข้างหน้า การเขียน FROM t, t.forecast AS f คือการ "แตก" array ออกเป็นแถว
อุณหภูมิเป็น เคลวิน (ลบ 273.15) และฝนสะสม 1 ชั่วโมงเป็น เมตร (คูณ 1,000 เป็นมิลลิเมตร) ถ้าลืมแปลง ค่าฝน 0.012 จะดูเหมือนแทบไม่มีฝน ทั้งที่จริงคือ 12 มม. ต่อชั่วโมง
7.3 Earth Engine (Python): ฝนรายวันที่เชียงใหม่ 3 วัน ตามรอบวันของกรมอุตุฯ
import ee
from datetime import datetime, timezone, timedelta
ee.Authenticate()
ee.Initialize(project="YOUR_PROJECT_ID")
COLLECTION = "projects/gcp-public-data-weathernext/assets/weathernext_3_0_0_0p1deg"
point = ee.Geometry.Point(98.98, 18.79) # เชียงใหม่ (ลองจิจูด, ละติจูด)
init_time = "2026-10-04T00:00:00Z" # รอบ 00 UTC = 07:00 น. เวลาไทย (ต้นวันฝนของ อต.)
forecast = (
ee.ImageCollection(COLLECTION)
.filter(ee.Filter.eq("start_time", init_time))
.filter(ee.Filter.lte("forecast_hour", 72))
.select(["total_precipitation_1hr_mean", "total_precipitation_1hr_p90"])
)
# getRegion คืนค่าเป็นตาราง: แถวแรกเป็นหัวตาราง ที่เหลือเป็นข้อมูลแต่ละชั่วโมง
header, *rows = forecast.getRegion(point, 10_000).getInfo()
col = {name: i for i, name in enumerate(header)}
daily = {}
for r in rows:
valid = datetime.fromtimestamp(r[col["time"]] / 1000, timezone.utc)
# ฝนของชั่วโมงที่ "สิ้นสุด" ตอน 00:00 UTC เป็นของวันก่อนหน้า จึงลบ 1 ชั่วโมงก่อนจัดกลุ่ม
rain_day = (valid - timedelta(hours=1)).date() # วัน UTC = 07:00–07:00 น. เวลาไทย
d = daily.setdefault(rain_day, [0.0, 0.0])
d[0] += r[col["total_precipitation_1hr_mean"]] * 1000
d[1] = max(d[1], r[col["total_precipitation_1hr_p90"]] * 1000)
for day in sorted(daily):
mean_mm, max_p90_mm = daily[day]
print(f"วันฝน {day} 07:00 น. ฝนรวม (mean) {mean_mm:5.1f} มม. ชั่วโมงที่ p90 สูงสุด {max_p90_mm:4.1f} มม.")โค้ดด้านบนจึง ไม่บวก _p90 รายชั่วโมงเข้าด้วยกัน เพราะจะได้ค่าที่สูงเกินจริง (ไม่มีฉากทัศน์ไหนที่ฝนตกหนักระดับ p90 ทุกชั่วโมงพร้อมกัน) แต่รายงานเป็น "ชั่วโมงที่ p90 สูงสุด" แทน ถ้าต้องการ p90 ของฝนสะสม 24 ชม. ที่ถูกต้อง ต้องรวมฝนของแต่ละสมาชิกก่อน แล้วค่อยหา percentile จากข้อมูลครบ 64 สมาชิกบน Cloud Storage ส่วนผลรวมของ _mean รายชั่วโมงนั้นบวกกันได้ เพราะค่าเฉลี่ยของผลรวมเท่ากับผลรวมของค่าเฉลี่ย
ตัวอย่าง BigQuery และ Earth Engine ด้านบนดัดแปลงจาก Starter Guide ทางการ ถ้าต้องการตัวอย่างเพิ่ม เช่น การวาดแผนที่ทั้งโลก หรือการอ่าน Zarr ด้วย xarray ดูได้จาก Colab notebooks ของ WeatherNext
8. เทียบกับเกณฑ์และข้อมูลของกรมอุตุนิยมวิทยา
8.1 เกณฑ์ที่ใช้ในประกาศของ อต.
กรมอุตุนิยมวิทยากำหนด เกณฑ์อากาศ ที่ใช้ในพยากรณ์และประกาศ ถ้าเว็บหรือแอปของเราใช้คำเดียวกัน ผู้ใช้จะไม่สับสน
| เกณฑ์ปริมาณฝน (24 ชม.) | เกณฑ์การกระจายของฝน | ||
|---|---|---|---|
| ฝนเล็กน้อย | 0.1–10.0 มม. | ฝนบางพื้นที่ | น้อยกว่า 20% ของพื้นที่ |
| ฝนปานกลาง | 10.1–35.0 มม. | ฝนกระจายเป็นแห่ง ๆ | 20–40% |
| ฝนหนัก | 35.1–90.0 มม. | ฝนกระจาย | 40–60% |
| ฝนหนักมาก | 90.1 มม. ขึ้นไป | ฝนเกือบทั่วไป / ฝนทั่วไป | 60–80% / 80% ขึ้นไป |
เกณฑ์การกระจายของฝนใช้กับกริด 0.1° ได้ตรง ๆ เช่น นับว่าช่องกริดในจังหวัดหนึ่งมีฝนตั้งแต่ 0.1 มม. กี่เปอร์เซ็นต์ แล้วแปลงเป็นคำว่า "ฝนกระจาย" หรือ "ฝนทั่วไป"
8.2 รอบวันฝน 07:00–07:00 น. ตรงกับวัน UTC
อต. พิจารณาปริมาณฝนใน 24 ชั่วโมง ตั้งแต่ 07:00 น. ของวันหนึ่งถึง 07:00 น. ของวันรุ่งขึ้น และหน้าสภาพอากาศรายจังหวัดก็รายงาน "ฝนสะสมวันนี้ (ตั้งแต่ 07:00 น.)" ซึ่งตรงกับ 00:00 UTC พอดี จึงได้เปรียบตรงที่ รวมฝนรายชั่วโมงตามวัน UTC ก็ได้ฝนรายวันแบบเดียวกับ อต. และรอบพยากรณ์ 00 UTC ของ WeatherNext 3 ก็ออกตรงต้นวันฝนพอดี
ข้อผิดพลาดที่พบบ่อยคือจัดกลุ่มตามวันที่เวลาไทยแบบเที่ยงคืนถึงเที่ยงคืน ซึ่งจะได้ฝนคนละช่วงกับรายงานของ อต. และเทียบกันไม่ได้
-- ฝนรายวันตามรอบวันของ อต. พร้อมจัดระดับตามเกณฑ์ปริมาณฝน
SELECT
DATE(TIMESTAMP_SUB(f.time, INTERVAL 1 HOUR)) AS rain_day_from_0700, -- วัน UTC = 07:00–07:00 น.
ROUND(SUM(f.total_precipitation_1hr_mean) * 1000, 1) AS rain_mean_mm,
ROUND(MAX(f.total_precipitation_1hr_p90) * 1000, 1) AS max_hourly_p90_mm,
CASE
WHEN SUM(f.total_precipitation_1hr_mean) * 1000 >= 90.1 THEN 'ฝนหนักมาก'
WHEN SUM(f.total_precipitation_1hr_mean) * 1000 >= 35.1 THEN 'ฝนหนัก'
WHEN SUM(f.total_precipitation_1hr_mean) * 1000 >= 10.1 THEN 'ฝนปานกลาง'
WHEN SUM(f.total_precipitation_1hr_mean) * 1000 >= 0.1 THEN 'ฝนเล็กน้อย'
ELSE 'ไม่มีฝน'
END AS tmd_category
FROM `YOUR_PROJECT_ID.YOUR_DATASET_ID.weathernext_3_0_0_0p1deg` AS t,
t.forecast AS f
WHERE t.init_time = TIMESTAMP('2026-10-04 00:00:00 UTC') -- 07:00 น. เวลาไทย
AND ST_INTERSECTS(t.geography_polygon, ST_GEOGPOINT(98.98, 18.79)) -- เชียงใหม่
AND f.hours <= 72
GROUP BY rain_day_from_0700
ORDER BY rain_day_from_0700;rain_mean_mm คือฝนเฉลี่ยของช่องกริดราว 10 × 10 กม. และเฉลี่ยทั้ง 64 ฉากทัศน์ ส่วนเกณฑ์ของ อต. ใช้กับปริมาณฝนที่วัดได้ ณ สถานี ซึ่งมักสูงกว่าค่าเฉลี่ยพื้นที่เมื่อเป็นพายุฝนฟ้าคะนอง ค่า "ฝนปานกลาง" จากโมเดลจึงอาจมีบางจุดในช่องนั้นที่ฝนหนักแล้ว ควรแสดงคำว่า "ปริมาณฝนเฉลี่ยของพื้นที่" ให้ผู้ใช้เข้าใจ
8.3 เทียบกับแบบจำลองของ อต. เอง
กรมอุตุนิยมวิทยามีแบบจำลองพยากรณ์อากาศบนระบบคอมพิวเตอร์สมรรถนะสูง (HPC) และเปิดเป็น TMD Weather Forecast API ซึ่งเอกสารระบุโดเมนพยากรณ์ราย 3 ชั่วโมงล่วงหน้า 10 วันที่ความละเอียด 9 กม. และรายชั่วโมงล่วงหน้า 72 ชั่วโมงที่ 3 กม. โดย API พยากรณ์รายชั่วโมงตามพิกัดเรียกได้สูงสุด 48 ชั่วโมง ต้องสมัครและสร้าง OAuth access token ก่อน และถูกจำกัดจำนวนครั้งที่เรียก (ตัวอย่างในเอกสารแสดง 60 ครั้งต่อนาที)
ดึงฝนจากแบบจำลองของ อต. ที่จุดเดียวกัน แล้ววางคู่กับ WeatherNext 3 จะเห็นว่าสองแบบจำลองเห็นตรงกันหรือไม่ ถ้าเห็นต่างกันมาก แปลว่าความไม่แน่นอนสูง
// node tmd-hourly.mjs (สมัครที่ data.tmd.go.th/nwpapi แล้วตั้ง TMD_TOKEN ใน environment)
const url = new URL("https://data.tmd.go.th/nwpapi/v1/forecast/location/hourly/at");
url.search = new URLSearchParams({
lat: 18.79, // เชียงใหม่
lon: 98.98,
fields: "rain,tc", // ฝนรายชั่วโมง (มม.), อุณหภูมิ (°C)
duration: 48, // สูงสุด 48 ชม. (ไม่ระบุ date/hour = เริ่มชั่วโมงปัจจุบัน เวลาไทย)
});
const res = await fetch(url, {
headers: { accept: "application/json", authorization: `Bearer ${process.env.TMD_TOKEN}` },
});
if (!res.ok) throw new Error(`TMD API ${res.status}`); // 401 = token ผิด, 429 = เกิน rate limit
const json = await res.json();
for (const f of json.WeatherForecasts[0].forecasts) {
console.log(f.time, `ฝน ${f.data.rain} มม.`, `${f.data.tc}°C`);
}8.4 ตรวจเทียบกับฝนที่วัดได้จริง
ก่อนใช้ตัวเลขของ WeatherNext 3 ในพื้นที่ใด ควรตรวจเทียบย้อนหลังอย่างน้อยหนึ่งฤดูฝน
- เก็บพยากรณ์ฝนรายวันจากรอบ 00 UTC ทุกวัน (ข้อมูลอายุเกิน 1 ชั่วโมงเป็น CC BY 4.0 เก็บไว้ได้)
- ดึงฝนที่วัดได้จริงในวันฝนเดียวกันจากสถานีของ อต. (TMD Open Data) หรือสถานีโทรมาตรใน ThaiWater
- นับว่าโมเดลจัดระดับตรงกับค่าวัดจริงบ่อยแค่ไหนในแต่ละระดับ โดยเฉพาะวันที่วัดได้ "ฝนหนัก" ขึ้นไป ว่าโมเดลจับได้กี่ครั้ง (hit) และเตือนเกินกี่ครั้ง (false alarm)
ผลที่ได้จะบอกได้ดีกว่าตัวเลขรวมระดับโลกว่าโมเดลเชื่อถือได้แค่ไหนในพื้นที่ของเรา
9. ใช้คู่กับแหล่งข้อมูลอื่นอย่างไร
| ต้องการ | แหล่งที่เหมาะ |
|---|---|
| ประกาศเตือนภัยสภาพอากาศทางการ | กรมอุตุนิยมวิทยา |
| แจ้งเตือนสาธารณภัยถึงประชาชน | ปภ. |
| ฝนที่วัดได้จริง / ข้อมูลสำหรับตรวจเทียบ | สถานีของ อต. (TMD Open Data), สถานีโทรมาตรใน ThaiWater |
| ระดับน้ำจริงในแม่น้ำ | สถานีโทรมาตรของ สสน. / กรมชลประทาน |
| แบบจำลองความละเอียดสูงสำหรับไทยโดยเฉพาะ | TMD Weather Forecast API |
| ฝนพยากรณ์รายชั่วโมง + ความไม่แน่นอน (64 ฉากทัศน์) | WeatherNext 3 |
| พยากรณ์ฟรี ไม่ต้องขอสิทธิ์ ทดลองเร็ว | Open-Meteo |
| ลม 100 ม. / รังสีดวงอาทิตย์ สำหรับพลังงานหมุนเวียน | WeatherNext 3 |
จุดแข็งของ WeatherNext 3 สำหรับงานในไทยคืออัปเดตทุกชั่วโมงและมี percentile ให้ใช้ทันที ทำให้สื่อสารความไม่แน่นอนได้ แต่ยังต้องพิสูจน์เรื่องฝนหนักในพื้นที่ของเราเอง ใช้คู่กับข้อมูลสถานีจริง และอ้างอิงประกาศของกรมอุตุนิยมวิทยาเสมอ
แหล่งอ้างอิง
- Introducing WeatherNext 3 (Google Blog, 3 ก.ย. 2026)
- WeatherNext models: ข้อมูลจำเพาะทุกรุ่น
- Access WeatherNext forecasts: วิธีขอสิทธิ์และช่องทางเข้าถึง
- Google Maps Platform Weather API: Hourly forecast
- Google Maps Platform Weather API: Coverage
- Rasp, S., Babenko, B., Masters, D., El-Kadi, A., Merchant, S. และคณะ (2026). WeatherNext 3: Increasing resolution and performance of global weather models with raw observations. arXiv:2609.03582
- กรมอุตุนิยมวิทยา: เกณฑ์อากาศ
- กรมอุตุนิยมวิทยา: ฤดูกาลของประเทศไทย (รวมเกณฑ์ฝน 24 ชม. 07:00–07:00 น.)
- กรมอุตุนิยมวิทยา: สภาพอากาศรายจังหวัด (ฝนสะสมตั้งแต่ 07:00 น.)
- TMD Weather Forecast API (เอกสาร)
- TMD Open Data
- Thai PBS: ปภ. ทดสอบระบบ Cell Broadcast พร้อมกัน 77 จังหวัดทั่วประเทศ (20 ม.ค. 2569)