กลับไปยังบล็อก BIM และ IFC
ดิจิทัลทวิน · 2026-10-10 · 9 นาที
รถบัสเรียลไทม์บนโมเดล IFC: ดิจิทัลทวินสถานีขนส่งผ่าน MQTT
ที่สถานีขนส่ง Elielinaukio ข้างสถานีกลางเฮลซิงกิ ช่องจอดแต่ละช่องในโมเดล IFC จะสว่างขึ้นเมื่อมีรถบัสคันจริงจอดอยู่ พร้อมหมายเลขสายลอยอยู่ด้านบน ข้อมูลมาจากฟีด MQTT สาธารณะของ HSL ซึ่งเบราว์เซอร์รับโดยตรง
สถานีกลางเฮลซิงกิและสถานีขนส่ง Elielinaukio ในรูปแบบโมเดล IFC บนแผนที่ 3D พร้อมหมายเลขสายรถบัสแบบเรียลไทม์ลอยอยู่เหนือช่องจอด
สถานีขนส่งเป็นบททดสอบที่ดีสำหรับดิจิทัลทวิน (digital twin) เพราะสิ่งที่เกิดขึ้นที่นั่นเปลี่ยนไปทุกนาที ช่องจอด 17 ช่อง รถบัสเข้าออก ประตูเปิดปิด หากโมเดลแสดงสิ่งเหล่านี้ได้แบบเรียลไทม์จากข้อมูลสาธารณะ ก็แสดงได้แทบทุกอย่าง
ฉากนี้ทำเช่นนั้นกับ Elielinaukio สถานีขนส่งทางฝั่งตะวันตกของสถานีกลางเฮลซิงกิ ช่องจอดแต่ละช่องในโมเดล IFC จะสว่างขึ้นขณะที่มีรถบัสคันจริงจอดอยู่ โดยมีหมายเลขสายลอยอยู่ด้านบน ตำแหน่งรถมาจาก HSL หน่วยงานด้านการขนส่งของเฮลซิงกิ ซึ่งเผยแพร่ตำแหน่งของยานพาหนะทุกคันประมาณวินาทีละครั้งผ่าน MQTT และเบราว์เซอร์สมัครรับข้อมูลนี้โดยตรง
ประเด็นสำคัญ
- MQTT ผ่าน WebSocket ทำให้หน้าเว็บรับตำแหน่งยานพาหนะแบบเรียลไทม์ได้โดยไม่ต้องมีเซิร์ฟเวอร์ของตัวเองคั่นกลาง ตราบใดที่โบรกเกอร์อนุญาต ซึ่งโบรกเกอร์ของ HSL อนุญาต
- สมัครรับข้อมูลให้แคบเข้าไว้ การเลือกเฉพาะส่วนทางภูมิศาสตร์ของโครงสร้าง topic ทำให้มีเพียงรถบัสของสถานีขนส่งนี้ที่ส่งมาถึงเบราว์เซอร์
- ช่องจอดผูกกับรหัสป้ายหยุดรถของหน่วยงานขนส่ง และสีเปลี่ยนตามกฎที่อิงฟิลด์ในข้อความ: ประตูเปิด จอดนิ่ง กำลังเคลื่อนที่ หรือไม่มีรถ
- โมเดลรวม (federated model) จะยังวางตรงกันเมื่อโมเดลรองแต่ละชุดถูกหมุนตามค่าอ้างอิงพิกัดทางภูมิศาสตร์ (georeference) ของตัวเอง ในกรณีนี้ กรอบพิกัดของมหาวิหารเอียงต่างจากของสถานีขนส่ง 3°
ลองเลย: รถบัสของเฮลซิงกิ ณ ตอนนี้
เปิดสถานีขนส่ง สถานีรถไฟ และมหาวิหารบนแผนที่ ช่องจอดจะสว่างขึ้นเมื่อรถบัสคันจริงเข้ามา ตอนกลางคืนมีรถน้อย ช่องจอดจึงเป็นสีเทาอยู่นาน

เปิดโปรแกรมดู IFC แบบอินเทอร์แอกทีฟ
สิ่งที่คุณกำลังดูอยู่
โมเดล IFC 3 ชุดที่อ้างอิงพิกัดทางภูมิศาสตร์แล้ว (ETRS89 / GK25, EPSG:3879) บนเมืองจาก OpenStreetMap ได้แก่ สถานีกลางที่ออกแบบโดย Eliel Saarinen พร้อมชานชาลา มหาวิหารบนจัตุรัสวุฒิสภา (Senate Square) และสถานีขนส่งพร้อมช่องจอด 17 ช่อง (หมายเลข 20 ถึง 36) เสา ป้าย และหลังคาคลุม เลเยอร์เรียลไทม์ 2 ชั้นจากสถาบันอุตุนิยมวิทยาฟินแลนด์แสดงคุณภาพอากาศและสภาพอากาศ
ช่องจอดขณะที่รถบัสเข้าออก: เสาและป้ายแต่ละชิ้นเปลี่ยนสีตามสิ่งที่รถบัส ณ ป้ายหยุดรถนั้นกำลังทำอยู่
| สีของช่องจอด | กฎที่ใช้กับข้อความของ HSL | ความหมาย |
|---|
| เขียว | ประตูเปิด (drst = 1) | ผู้โดยสารกำลังขึ้นรถ |
| น้ำเงิน | ความเร็วต่ำกว่า 0.5 m/s | จอดนิ่งอยู่ที่ช่องจอด |
| เหลืองอำพัน | ค่าอื่นใดที่อ่านได้ ณ ป้ายหยุดรถนั้น | กำลังเข้าหรือออก |
| เทา | ไม่มีค่าที่อ่านได้นาน 45 วินาที | ไม่มีรถ |
ใช้กฎแรกที่ตรงเงื่อนไข หมายเลขสาย (desi) จะลอยอยู่เหนือช่องจอด
ทำไมใช้ MQTT ไม่ใช่ GTFS-Realtime
GTFS-Realtime เป็นรูปแบบที่ใช้กันทั่วไปสำหรับข้อมูลขนส่งสาธารณะแบบเรียลไทม์ และ HSL ก็เผยแพร่ในรูปแบบนี้ แต่ฟีดนั้นไม่ส่ง header CORS ที่เบราว์เซอร์ต้องใช้เพื่ออ่านข้อมูลจากเว็บไซต์อื่น การใช้ฟีดนี้จึงหมายถึงต้องรันพร็อกซี ฟีด high-frequency positioning (ตำแหน่งความถี่สูง) ต่างออกไป: เป็น MQTT ผ่าน WebSocket เป็นสาธารณะ ไม่ต้องใช้คีย์ และเข้าถึงได้จากหน้าเว็บใดก็ได้
สำหรับงานนี้ ฟีดดังกล่าวยังให้ข้อมูลมากกว่าด้วย แต่ละข้อความคือรถบัสหนึ่งคัน ส่งมาประมาณวินาทีละครั้ง พร้อมสายรถ ความเร็ว สถานะประตู และป้ายหยุดรถที่รถจอดอยู่[hfp] ตัว topic บอกว่ารถอยู่ที่ใด การสมัครรับข้อมูลจึงตัดให้เหลือเพียงพื้นที่ส่วนหนึ่งของเมืองได้:
/hfp/v2/journey/ongoing/vp/bus/+/+/+/+/+/+/+/+/60;24/19/73/#
การสมัครรับข้อมูลทีละระดับ: เครื่องหมาย + แต่ละตัวรับค่าใดก็ได้ และ geohash จำกัดสตรีมให้เหลือเฉพาะเซลล์รอบสถานีขนส่ง
ส่วนสุดท้าย 60;24/19/73 คือเซลล์หนึ่งในกริดทางภูมิศาสตร์ของ HSL รอบสถานีขนส่ง เบราว์เซอร์จะได้รับเฉพาะรถบัสในเซลล์นั้นเท่านั้น โดยอ่านข้อความวินาทีละครั้งและเก็บเฉพาะข้อความล่าสุดของแต่ละป้าย รถบัสที่อยู่ระหว่างป้าย ซึ่งไม่มีป้ายระบุในข้อความ จะถูกข้ามไป
จากรหัสป้ายหยุดรถสู่ช่องจอด
HSL ระบุป้ายหยุดรถด้วยหมายเลข ส่วนโมเดล IFC ระบุด้วยชื่อ รายการป้ายหยุดรถที่ HSL เผยแพร่ช่วยเชื่อมทั้งสองเข้าด้วยกัน: ปัจจุบันช่องจอด 9 จาก 17 ช่องมีป้ายหยุดรถของ HSL และแต่ละช่องคือการผูกข้อมูล (binding) หนึ่งรายการ องค์ประกอบค้นหาด้วยชื่อ เช่น “Bay 20” เป็นต้น ซึ่งจะพบเสาและป้ายทั้งสามแผ่นของแต่ละช่องจอด
| ช่องจอด | รหัสป้ายหยุดรถ HSL |
|---|
| 20 | 1020128 |
| 22 | 1020131 |
| 23 | 1020133 |
| 24 | 1020135 |
| 25 | 1020132 |
| 26 | 1020239 |
| 28 | 1020243 |
| 29 | 1020245 |
| 30 | 1020130 |
จากรายการป้ายหยุดรถ GTFS ของ HSL ซึ่งอ่านครั้งเดียวตอนเขียนฉาก ช่องจอดอีก 8 ช่องไม่มีป้ายหยุดรถและเป็นสีเทาตลอด
การ์ดของชานชาลาในตอนกลางคืน: เมื่อไม่มีรถบัสที่ชานชาลา ส่วนข้อมูลเรียลไทม์จะบอกตามจริงแทนการแสดงค่าเก่า คู่กับข้อมูล IFC ของเสา
{
"id": "hsl-hfp-elielinaukio",
"url": "wss://mqtt.hsl.fi:443/",
"topics": ["/hfp/v2/journey/ongoing/vp/bus/+/+/+/+/+/+/+/+/60;24/19/73/#"],
"mapping": { "idField": "VP.stop", "timeField": "VP.tst" }
}
แหล่งข้อมูลอุปกรณ์ (device source) นี้คือทั้งหมดที่ต้องใช้เพื่ออ่านข้อมูลจากกองรถอื่นหรือพื้นที่อื่น: โบรกเกอร์ที่รองรับ MQTT ผ่าน WebSocket ชุด topic และฟิลด์ในข้อความที่ใช้ระบุอุปกรณ์ ส่วนที่เหลือของฉากยังคงเหมือนเดิม
คุณภาพอากาศและสภาพอากาศ
เลเยอร์แผนที่ทั้งสองมาจากข้อมูลเปิดของสถาบันอุตุนิยมวิทยาฟินแลนด์[fmi] ซึ่งอ่านในเบราว์เซอร์เป็น simple feature ของ WFS ขณะที่เราตรวจสอบ มีสถานีตรวจวัดคุณภาพอากาศ 11 แห่งและสถานีตรวจอากาศ 7 แห่งรอบเมือง ข้อมูลคุณภาพอากาศอัปเดตรายชั่วโมงและอาจมาช้าถึง 40 นาที ส่วนข้อมูลสภาพอากาศอัปเดตทุก 10 นาที
สามโมเดล หนึ่งแผนที่
สถานีรถไฟ มหาวิหาร และสถานีขนส่งเป็นไฟล์แยกกัน และแต่ละไฟล์มีค่าอ้างอิงพิกัดทางภูมิศาสตร์ของตัวเอง แกนเฉพาะที่ (local axes) ของมหาวิหารหมุนต่างจากแกนของสถานีขนส่ง (ซึ่งเป็นตัวยึดตำแหน่งของแผนที่) อยู่ 3° หากโปรแกรมดูเพียงเลื่อนโมเดลอื่นเข้าที่โดยไม่หมุน มหาวิหารจะเอียงผิดไป 3° และคลาดเคลื่อนประมาณ 2 m ที่มุมอาคาร
โปรแกรมดูจะหมุนแต่ละโมเดลให้เข้ากับกรอบพิกัดของตัวเอง โดยหมุนรอบจุดศูนย์กลางของโมเดลนั้น เมื่อวัดเทียบกับรูปร่างอาคารของมหาวิหารใน OpenStreetMap ตอนนี้ผนังอยู่ห่างจากรูปร่างดังกล่าว 0.56 m และเอียงต่างกัน 0.37° ส่วนต่างที่เหลือนี้สะท้อนความแม่นยำที่โมเดลและ OSM แต่ละฝ่ายวาดอาคารหลังนี้
ข้อจำกัดที่ควรบอกให้ชัด
- โมเดลเหล่านี้สร้างขึ้นเพื่อใช้อธิบาย โดยอิงจากแหล่งข้อมูลสาธารณะ ไม่ใช่ผลการสำรวจรังวัด
- มีเพียง 9 ช่องจอดที่มีป้ายหยุดรถของ HSL อีก 8 ช่องจึงไม่เคยสว่างขึ้นเลย
- ตอนกลางคืนมีรถบัสวิ่งน้อย ช่องจอดจึงเป็นสีเทาอยู่นาน
- ข้อมูลภูมิประเทศระดับโลกในบริเวณนี้มีค่าสูงกว่าระบบความสูงของฟินแลนด์ประมาณ 18 m โมเดลจึงวางอยู่บนพื้นผิวภูมิประเทศแทนที่จะอยู่ที่ความสูงตามที่ระบุไว้ แต่ความสูงสัมพัทธ์ระหว่างโมเดลยังคงรักษาไว้
- แท็บที่อยู่เบื้องหลังจะได้รับข้อความน้อยครั้งลง เพราะเบราว์เซอร์ลดความถี่ของตัวจับเวลา (timer) ในแท็บที่ซ่อนอยู่
รูปแบบฉากเดียวกันนี้ใช้ขับเคลื่อนจัตุรัสกลางเมืองด้วยข้อมูลจักรยานสาธารณะและจุดชาร์จใน ทวินบาร์เซโลนาจากข้อมูลเปิด และสถานีสองแห่งในโตเกียวด้วยข้อมูลรถไฟและรถรางใน ทวินขนส่งสาธารณะโตเกียวจาก ODPT สำหรับทวินที่รับข้อมูลจากเซนเซอร์แทนฟีดขนส่งสาธารณะ ดู LiDAR แบบเรียลไทม์ในดิจิทัลทวินบนเว็บ
รถบัสเรียลไทม์บนโมเดล IFC: ดิจิทัลทวินสถานีขนส่งผ่าน MQTT