📖 คู่มือใช้งาน TTVE

ระบบประมาณปริมาณจราจรไทย สำหรับคนทำงานจริง

TTVE ย่อมาจาก Thai Traffic Volume Estimator — ระบบประมาณปริมาณจราจรไทย ใช้ข้อมูล probe vehicle (TomTom Move / HERE Probe / iTIC) ผสมกับการสอบเทียบจาก DOH AADT (กรมทางหลวง) เพื่อให้ได้ปริมาณจราจรรายชั่วโมง ตามมาตรฐาน HCM 2010 + DMRB Vol 12 + DOH คู่มือออกแบบทางหลวง พ.ศ. 2543

🚀 Quickstart 60 วินาที

  1. คลิก หน้าเริ่มต้น → กด "📦 โหลด sample data" เพื่อให้ระบบมีตัวอย่าง
  2. ไป หน้าขอข้อมูล → เลือก tab MidBlock
  3. กด "📍 Pin" → คลิกบน map ตรงจุดที่สนใจ
  4. เลือก preset "7 วัน" → กด "▶ Submit"
  5. รอ ~3 วินาที → ดูผล + กด Download CSV

💡 Concept หลัก ที่ต้องรู้

3 ประเภทข้อมูลที่ระบบให้ได้

ประเภทหมายถึงเหมาะกับหน่วย
MidBlockปริมาณรถบน ช่วงถนน (ระหว่างแยก)วิเคราะห์ flow บนถนน, AADTคัน/ชม (veh/h)
TMCTurning Movement Count — รถเลี้ยวซ้าย/ตรง/ขวา/U ที่แยกออกแบบสัญญาณไฟ, capacityคัน/ชม ต่อ leg ต่อ turn
ODOrigin-Destination — จำนวน trip จากโซน A → โซน Bวางแผนระยะยาว, เปลี่ยนระบบขนส่งtrip/ช่วงเวลา

WHERE / WHEN / WHAT

ทุกคำขอต้องตอบ 3 คำถาม:

Calibration & Validation

GEH Statistic (UK DMRB Vol 12): การวัดความใกล้เคียงระหว่างค่า model กับ ground truth
  GEH < 5 = ใช้ได้ดี (planning grade)    5-10 = ระวัง    >10 = ไม่ผ่าน ต้อง recalibrate
เกณฑ์ผ่าน: ≥ 85% ของจุด validation ต้อง GEH < 5

🔄 Workflow แนะนำ

Workflow A — MidBlock จุดเดียว (15 วินาที)

  1. หน้า Request → tab MidBlock → กด Pin
  2. คลิก map ตรงจุดที่สนใจ (เช่น "แยกอโศก")
  3. เลือก preset "7 วัน" → granularity "รายชั่วโมง"
  4. กด Submit → ดูผล + Download CSV

Workflow B — TMC แยกเดียว (1 นาที)

  1. หน้า Request → tab TMC → กด Center
  2. คลิกกลางแยกบน map → ระบบ auto-detect 4 legs
  3. เลือก peak hours (07:00-19:00) → granularity "15 นาที"
  4. กด Submit → ดู turn matrix [from_leg × {L, T, R, U}]

Workflow C — OD Study (3-5 นาที)

  1. หน้า Request → tab OD
  2. กด "🟢 Origin polygon" → วาด polygon รอบโซน origin
  3. กด "🟠 Dest polygon" → วาด polygon รอบโซน destination
  4. เลือก mode: pair (1-to-1) / matrix (all combos) / many_to_one
  5. กด 💰 Cost preview → ดูราคาก่อน
  6. กด ▶ Submit → รอ async (อาจ 30 นาที สำหรับงานใหญ่)

📍 MidBlock Fields

Fieldความหมายตัวอย่าง
volumeปริมาณรถประมาณการ (คัน/ชม)2,045.8
v_lowerขอบล่าง confidence band 80% (น้อยสุดที่อาจเป็นจริง)1,565.9
v_upperขอบบน confidence band 80%2,525.7
speed_kmhความเร็วเฉลี่ยจาก probe58.4
sample_sizeจำนวน probe ที่ใช้ใน bucket นี้47
confidenceคะแนนความมั่นใจ 0-1 (สูง = น่าเชื่อ)0.85
p_hatPenetration rate ที่ใช้ — % รถ probe ต่อรถทั้งหมด0.0283 = 2.83%
flagสถานะ: ok/low_probes/extrapolatedok

🔀 TMC Fields

Fieldความหมาย
legsขาเข้าทิศต่างๆ ของแยก (NB/EB/SB/WB หรือชื่อที่ตั้ง)
matrix[leg]turn count จากขา leg นั้น
LLeft turn (เลี้ยวซ้าย)
TThrough (ตรง)
RRight turn (เลี้ยวขวา)
UU-turn (กลับรถ)
ข้อจำกัดสำคัญ: TMC จาก probe ได้แค่ระดับ approach ไม่ได้ระดับเลน สำหรับ lane-level ต้องใช้ CCTV+AI deploy ต่างหาก

🌐 OD Fields

Fieldความหมาย
origin_id / destination_idชื่อโซน (ที่คุณตั้งหรือ admin code)
trip_count_totalจำนวน trip รวมในช่วงเวลา
avg_travel_time_minเวลาเดินทางเฉลี่ย (นาที)
by_vehicle_classแยกตามประเภทรถ (car, truck, moto, bus)
sample_sizeจำนวน trip จริงที่ตรวจพบ (จะ scale ขึ้น)

📊 Quality Scoring (เกรด)

คะแนนเกรดหมายความว่า
≥ 0.85Aดีเยี่ยม ใช้ได้ทันที
0.70-0.84Bดี เหมาะกับ planning
0.55-0.69Cพอใช้ ต้องระวัง
0.40-0.54Dใช้เป็นแนวโน้มเท่านั้น
< 0.40Fอย่าใช้ตัดสินใจ

คะแนนคำนวณจาก: completeness × confidence × freshness

🏛 หน่วยงานรัฐ

🚗 บริษัทที่ปรึกษา

🏢 Real estate / Retail

📚 นักวิจัย

📦 Logistics

🚦 Smart city

🤝 Vendors ที่รองรับ

Vendorใช้สำหรับAccuracyCost
demoทดสอบ / pilot2/9$0
tomtom_trafficMidBlock highway6/9$$
here_probeMidBlock + jam factor7/9$$$
mapbox_movementMidBlock + OD เริ่มต้น5/9$$
ais_insightsOD ระดับ macro (cellular)9/9$$$$

💰 Budget Guardrails

ทุก request ผ่าน 3 cap:

ถ้าเกิน 80% → warning, 95% → block (HTTP 402)

ปรับได้ผ่าน env: TTVE_BUDGET_MONTHLY_USD, TTVE_BUDGET_DAILY_USD, TTVE_BUDGET_PER_REQUEST_USD

🔑 API Keys

สร้าง key ผ่าน:

ใช้ผ่าน header:

Authorization: Bearer ttve_xxxxxxxxxxxx

📐 Methodology & Academic References

ส่วนนี้สำหรับท่านที่ต้องใช้ TTVE ใน รายงานวิชาการ / TIA / EIA / Master's thesis / journal paper — คำอธิบายเต็มของวิธีการพร้อม peer-reviewed references ที่อ้างอิงได้

📜 ทั้งหมดนี้พิมพ์ออกมาเป็น Methodology Sheet ได้: เปิดผลใน History → คลิก 👁 → กดปุ่ม ⬇ Methodology Sheet สีน้ำเงิน → ได้ไฟล์ .txt ที่แนบเป็น Appendix ของรายงานได้เลย พร้อม citation + references + verification checklist

🔬 Pipeline ของ TTVE (ภาพรวม)

┌──────────────┐   ┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│ Probe Vendor │ → │  Calibration │ → │   Estimate   │ → │  Validation  │
│ (raw GPS)    │   │ (penetration)│   │   (FD model) │   │  (GEH stat)  │
└──────────────┘   └──────────────┘   └──────────────┘   └──────────────┘
  TomTom/HERE        XGBoost           van Aerde         DMRB Vol 12
  Mapbox/AIS         vs DOH AADT       Single-regime     GEH < 5 = pass

1. Probe → Volume conversion (Sekuła 2018 [1])

Probe data ให้เรา vehicle count subset แต่เราต้องการ total volume อาศัย penetration rate p ที่ประมาณการได้:

V_total(s, t) = N_probe(s, t) / p(s, t, vendor, day_of_week, hour)

โดย p ถูกประมาณด้วย XGBoost ที่เทรนกับคู่ (probe count, DOH AADT) ในจุด validation ตามวิธี Sekuła et al. (2018) [1] — MAPE typical ที่ Bangkok arterial ≈ 12-18%

2. Speed estimation — Fundamental Diagram (van Aerde [3])

Single-regime model:

k = 1 / (c₁ + c₂/(v_f − v) + c₃·v)

โดย v_f = free-flow speed (จาก probe ตอน free-flow), k = density, c₁..c₃ = calibrated constants ตาม van Aerde (1995) [3] — เหมาะกับถนนไทยทั้ง motorway, arterial, urban (parameter set ต่างกัน)

3. Validation — GEH Statistic (DMRB Vol 12 [4])

UK Highways Agency กำหนด GEH formula:

GEH = √( 2·(M − C)² / (M + C) )

โดย M = modelled (TTVE), C = counted (DOH AADT ground truth)

GEHGradeเหมาะกับ scope ไหน
< 3.0EXCELLENTsignal timing · microsim · individual link calibration
3.0 - 5.0PASSplanning grade · TIA report · capacity analysis
5.0 - 10.0MARGINALstrategic study · regional planning ระดับใหญ่ — ต้อง supplement
> 10.0FAILrecalibrate ก่อน · ห้ามใช้

เกณฑ์ผ่าน DMRB Vol 12 §11.4: ≥ 85% ของจุด validation ต้องมี GEH < 5 (peak hour), และ ≥ 80% สำหรับ off-peak

4. Vehicle classification (DOH-calibrated)

Probe data ไม่ได้แยกประเภทรถโดยตรง (ยกเว้น TomTom Trucks) → TTVE ใช้ DOH 12-class proportional split จากสถานี calibration:

v_class_i(s, t) = V_total(s, t) × p_class_i(s, day_type, period)

โดย p_class_i มาจาก DOH AADT 12-class data ของสถานีที่ใกล้ที่สุด (รัศมี ≤ 5 km, road class เดียวกัน) — ขยายเป็น 4 super-class: car / truck / moto / bus

5. Uncertainty quantification (Conformal Prediction)

80% confidence interval ใช้ conformal prediction ตาม Vovk et al. (2005) [5] — bootstrap residuals จาก calibration set ให้ได้ v_lower / v_upper ที่ valid coverage 80% โดยไม่ assume distribution

6. 🚦 Thai Traffic Engineering Metrics (new in this build)

ระบบจะคำนวณ metric ตามมาตรฐานวิศวกรรมจราจรทุกครั้งที่ download CSV / PDF / Methodology — ค่าทุกตัวมีอยู่ใน CSV header แล้ว ใช้ได้กับงาน TIA/EIA ทันที

PCE (Passenger Car Equivalent) — DOH 2000

ประเภทรถPCEหมายเหตุ
รถยนต์นั่ง / Pickup1.0baseline
รถบรรทุก 6-10 ล้อ2.5avg; trailer = 3.5
รถจักรยานยนต์0.33DOH 2000 (BMA บางที่ใช้ 0.5)
รถบัส2.04+ ล้อ

Conversion: PCU/h = car·1.0 + truck·2.5 + moto·0.33 + bus·2.0

Capacity (PCU/h/lane) — DOH planning values

Road classPCU/h/laneตัวอย่าง
Motorway / Expressway2,200ทางพิเศษ, มอเตอร์เวย์
Trunk (ทล. หลัก)1,900ทล. 1, 2, 4 ฯลฯ
Primary arterial1,800สุขุมวิท, พหลโยธิน
Secondary / Collector1,500ถนนรอง
Tertiary / Residential1,200 / 800ซอย

LOS (Level of Service) — HCM 2010 thresholds (urban arterial)

LOSv/cคำอธิบาย
A< 0.55Free flow, very low delay
B0.55 - 0.70Reasonably free flow
C0.70 - 0.80Stable flow, moderate delay
D0.80 - 0.90Approaching unstable
E0.90 - 1.00At capacity, unstable
F≥ 1.00Forced/breakdown flow

PHF / K-factor / D-factor

Additional validation metrics

📜 ทั้งหมดนี้พิมพ์ใน CSV header + PDF report + Methodology Sheet ให้พร้อมแนบในรายงาน ลองดาวน์โหลด CSV หรือ PDF Report ในหน้า History

🌉 Grade-Separated Intersections — วิธีจัดการ Overpass/Tunnel

แยกในกรุงเทพหลายแห่งมี โครงสร้างยกระดับด้านบน (ทางด่วน/BTS) หรือ tunnel ใต้ดิน (MRT) ซึ่งกระทบ TMC อย่างมากเพราะ:

TTVE ใช้ 3 วิธีร่วมกัน (vertical disambiguation):

วิธีทำอะไรAccuracy
1. OSM layer/bridge tags กรอง probe ที่ map-matched ไปยัง way ที่มี layer>0 หรือ bridge=yes High ถ้า OSM ข้อมูลครบ
2. Speed signature รถบนทางด่วน:วิ่ง consistent >60 km/h ที่แยก · รถ ground-level: หยุด/ชะลอที่สัญญาณไฟ Medium-High peak hours อาจ confuse
3. Trajectory continuity Probe ที่เข้าจากไกล + ออกไปไกลโดยไม่ชะลอ = pass-through (ไม่นับ turn) High สำหรับ probe ที่มี time-resolution >1Hz

GPS Altitude — ไม่ใช้ทำไม?

GPS vertical accuracy ปกติ ±10-20m — ไม่พอแยกชั้นทางที่ห่างกัน 5-8m (ทางด่วนยกระดับ). เลยใช้ horizontal map-matching + speed/trajectory แทน. โปรแกรมอย่าง DataFromSky ที่ใช้ aerial video เห็น 2 ชั้นแยกชัดเจน — TTVE ไม่มีข้อได้เปรียบนี้ แต่ method 3 อย่างข้างบนรวมกันให้ผลใกล้เคียง

กรณีที่ TTVE ทำได้/ไม่ได้

ทำได้ดี: แยกที่ overhead มีแค่ BTS (เช่น แยกอโศก) — BTS ไม่มี probe data → ไม่ confuse TMC
ทำได้ปานกลาง: แยกใต้ทางด่วน (เช่น ราชประสงค์ ใต้ทางพิเศษเฉลิมมหานคร) — ต้อง enable vertical filter
ทำได้แย่: Cloverleaf interchange หลายชั้น (เช่น อโศก-เพชรบุรี) — แนะนำใช้ CCTV+AI หรือ drone count คู่กัน

ใน Result panel: ถ้าระบบพบว่าแยกมี grade_separation != "ground-level" จะแสดง 🌉 badge สีส้ม + อธิบายว่ามีโครงสร้างอะไรอยู่ด้านบน/ล่าง + วิธี TTVE filter

📚 References (peer-reviewed, citable)

#CitationDOI / Link
[1]Sekuła, P., Marković, N., Vander Laan, Z., Sadabadi, K.F. (2018). "Estimating historical hourly traffic volumes via machine learning and vehicle probe data: A Maryland case study." Transportation Research Part C: Emerging Technologies, 97, 147-158.10.1016/j.trc.2018.10.012
[2]Seo, T., Bayen, A.M., Kusakabe, T., Asakura, Y. (2017). "Traffic state estimation on highway: A comprehensive survey." Annual Reviews in Control, 43, 128-151.10.1016/j.arcontrol.2017.03.005
[3]van Aerde, M. (1995). "Single regime speed-flow-density relationship for congested and uncongested highways." 74th Annual Meeting TRB.(TRB Proceedings)
[4]UK Highways Agency. Design Manual for Roads and Bridges (DMRB), Volume 12, Section 2, Part 1 — Traffic Appraisal Manual.standardsforhighways.co.uk
[5]Vovk, V., Gammerman, A., Shafer, G. (2005). Algorithmic Learning in a Random World. Springer.ISBN 978-0387001524
[6]Zhan, X., Hasan, S., Ukkusuri, S.V., Kamga, C. (2017). "Urban link travel time estimation using large-scale taxi data with partial information." Transportation Research Part C, 33, 37-49.10.1016/j.trc.2013.04.001
[7]กรมทางหลวง (Department of Highways, Thailand). "AADT — ปริมาณการจราจรเฉลี่ยต่อวันต่อปี" Bureau of Highway Safety.bhs.doh.go.th
[8]กรมทางหลวง (2543). มาตรฐานการออกแบบทางหลวง พ.ศ. 2543. PCE values for Thai vehicle classes, design hour factor, road class capacity tables.DOH Standard 2000
[9]Transportation Research Board (2010). Highway Capacity Manual (HCM) 6th Edition. Washington DC: National Academies. LOS thresholds (Ch.18 urban arterials), fHV (Eq. 12-10), saturation flow rate.ISBN 978-0-309-44544-7

📝 ตัวอย่าง paragraph สำหรับใส่ใน "Data and Methodology" section ของรายงาน

"Hourly traffic volumes were estimated using the Thai Traffic Volume Estimator (TTVE), an open methodology following Sekuła et al. (2018) [1] for probe-data-derived volume estimation. Vehicle probe trajectories from [VENDOR NAME, e.g., TomTom Move] were converted to total flows via XGBoost-estimated penetration rates calibrated against Department of Highways (DOH) AADT data from station [DOH_STATION_ID]. Speed-density relationships followed the single-regime model of van Aerde (1995) [3]. Validation against [N] DOH ground-truth stations yielded a mean GEH statistic of [VALUE], with [PCT]% of stations achieving GEH < 5 (planning-grade threshold per DMRB Vol 12 [4]). Vehicle classification used DOH 12-class proportional splits aggregated to four super-classes (car/truck/motorcycle/bus). Eighty-percent confidence intervals were computed via conformal prediction (Vovk et al. 2005 [5])."

⚖ Known systematic biases (ต้องระบุใน limitation section ของรายงาน)

🌉 Overpass vs Under-bridge — แยกข้อมูล Probe ได้อย่างไร?

หลายแยกในไทย เช่น แยกศรีเทพา (ถ.เทพารักษ์ × ถ.ศรีนครินทร์), แยกบางนา, แยกพระราม 9 (RCA) มี สะพานข้ามแยก ทำให้รถวิ่งตรงไม่ต้องหยุดสัญญาณ ขณะที่รถใต้สะพานต้องรอไฟแดง + ทำเลี้ยวซ้าย/ขวา/U-turn การนำข้อมูลจราจรไปใช้ ต้อง แยก 2 ชุด มิฉะนั้นจะ over-estimate capacity ของชั้นใต้สะพาน

ตัวอย่างผลกระทบ: ถ้าวัด probe ที่แยกศรีเทพา ขา EB ได้ 1,450 veh/h รวม แต่จริงๆ 900 vph อยู่บนสะพาน (ผ่านไป) + 550 vph อยู่ใต้สะพาน รอสัญญาณ — ถ้าใช้ 1,450 ออกแบบสัญญาณไฟจะตั้ง green time มากเกินไป รถบนถนนคู่ปฏิปักษ์ติดยาว

🔬 6 Methods ที่ TTVE ใช้ (multi-method pipeline)

1. OSM Layer Tag — OSM ระบุ layer=1 หรือ layer=2 สำหรับ overpass. snap probe ไป way ที่มี layer ตรงกัน (ความน่าเชื่อถือสูงสุดเมื่อ OSM tag ครบ).

2. Speed Signature — รถบนสะพาน free-flow มี standard deviation ของ speed ต่ำ (σ < 8 km/h) เพราะวิ่งสม่ำเสมอ. รถใต้สะพาน stop-and-go มี σ > 15 km/h (เร่ง→cruise→เบรก→หยุด→เร่งใหม่).

3. Trajectory Continuity — probe ที่ผ่านแยกโดยไม่มี dwell (ไม่มีช่วงช้า) = overpass. probe ที่มีรูปแบบ dwell-stop-accel = under-bridge. Tiaprasert et al (2015) ใช้วิธีนี้ใน connected-vehicle adaptive signal.

4. Traversal-Time Threshold — ตั้ง polygon ครอบแยก. คำนวณเวลาที่ probe ใช้ผ่าน polygon: < 18s = overpass (free-flow 40-60 km/h × 200m), > 30s = signal-delayed under-bridge.

5. HMM Map-Matching (Newson & Krumm 2009) — Hidden Markov Model snap probe ping ไปยัง candidate ways หลายอัน (ทั้งบนสะพานและใต้สะพาน) แล้วใช้ Viterbi algorithm หา path ที่น่าจะถูกที่สุด based on transition probabilities ระหว่าง pings.

6. GPS Elevation Hint — smartphone GPS ส่ง altitude แต่ noisy (±10-20m typical). ใช้เป็น tiebreaker เมื่อ method 1-5 ไม่ชัด, ไม่ใช่ primary signal.

📊 Output: ตารางแยก 2 ชั้น

เมื่อ TMC ที่แยกนี้สำเร็จ จะได้ตารางใน PDF "Section 4c":

Legชั้นLTRUTotalNotes
EB 🛣 บนสะพาน 900 900 free-flow, ไม่หยุดสัญญาณ (HCM 12 freeway analysis)
🚦 ใต้สะพาน 11032010812 550 signal-controlled (HCM 19 signalized intersection)

✅ Capacity Analysis: ใช้คนละสูตร

📚 References:
Newson P, Krumm J (2009). "Hidden Markov Map Matching Through Noise and Sparseness." ACM SIGSPATIAL GIS.
Tiaprasert K et al (2015). "Queue length estimation using connected vehicle technology for adaptive signal control." IEEE Trans. Intelligent Transportation Systems 16(6):2901-2913.
HCM 2010 (Highway Capacity Manual), TRB — Chapter 12 + Chapter 19.

🎯 Calibration Methods — ดันความเชื่อมั่นเข้าใกล้ 100%

ค่า confidence ในรายงานถูกจำกัดด้วย penetration rate × calibration freshness × n_validation_stations. หากต้องการให้สูงขึ้น (GEH<3, conf>0.95) ใช้สูตรวิชาการต่อไปนี้ (ทุกฟังก์ชันพร้อมใช้งานผ่าน window.TTVE_CALIB.* — เปิด DevTools เรียก ได้เลย):

1️⃣ IPF — Iterative Proportional Fitting (Bell 1991)

ใช้ปรับ matrix (OD หรือ TMC) ให้ row+column sums ตรงกับ ground truth marginals.

repeat:
  for row i: scale M[i,*] *= row_target_i / Σ_j M[i,j]
  for col j: scale M[*,j] *= col_target_j / Σ_i M[i,j]
until ‖ΔM‖_∞ < ε

📚 Bell MGH (1991). Transp Res B 25(2):115-125 · TTVE_CALIB.ipfCalibrate(matrix, rowTargets, colTargets)

2️⃣ Bayesian Penetration Update (Aslam 2012)

คำนวณ posterior distribution ของ penetration rate p เมื่อมี validation data ใหม่:

p_posterior ~ Beta(α + observed_probes, β + (true_volume − observed_probes))
posterior_mean = α / (α+β)
95% CI = mean ± 1.96·√[αβ / ((α+β)²(α+β+1))]

📚 Aslam J et al (2012). Trans Res Rec 2308:34-43 · TTVE_CALIB.bayesianPenetration(α, β, obs, truth)

3️⃣ Kalman Filter 1D (Yang 2014)

Dynamic state tracking — สำหรับกรณี penetration rate เปลี่ยนตามเวลา (smartphone adoption drift):

Predict:  x_pred = x_prev,   P_pred = P_prev + Q
Update:   K = P_pred / (P_pred + R)
          x_new = x_pred + K·(z − x_pred)
          P_new = (1 − K)·P_pred

📚 Yang H et al (2014). IEEE T-ITS · TTVE_CALIB.kalmanUpdate(x_prev, p_prev, observation, Q, R)

4️⃣ Maximum Likelihood Penetration (Hazelton 2008)

ถ้ามี N validation pairs (probe_i, truth_i) — closed-form penetration:

p̂ = Σ probe_i / Σ truth_i
var(p̂) = p̂·(1−p̂) / Σ truth
95% CI = p̂ ± 1.96·√var

📚 Hazelton ML (2008). Transp Sci 42:255-269 · TTVE_CALIB.mlePenetration(probeCounts, truthCounts)

5️⃣ Bootstrap CI (Efron 1979)

Non-parametric 95% CI — resample with replacement N=1000 ครั้ง → percentile method. ไม่ต้องตั้งสมมติฐานการแจกแจง.

📚 Efron B (1979). Annals Stats 7(1):1-26 · TTVE_CALIB.bootstrapCI(samples, statistic, n)

6️⃣ Confidence Improvement Recommendations

เรียก TTVE_CALIB.confidenceRecommendations(state) ส่งสถานะปัจจุบัน (GEH, sample_size, n_DOH_stations, calibration_age_months) — ได้ list of prioritized actions:

PriorityActionExpected ΔGEH or Δconf
CRITICAL Recalibrate vs fresh DOH AADT−1.5 GEH
HIGH Add 5+ DOH validation stations in 5km−0.8 GEH
HIGH Refresh calibration monthly−0.7 GEH
MEDIUM Multi-vendor fusion (TomTom + HERE via Kalman)−0.5 GEH
MEDIUM Expand window 7→28 days rolling+0.10 conf
LOW Bootstrap CI (n=1000 resamples)+0.05 conf
🎯 Target สำหรับ TIA/EIA production-grade: GEH<3 ที่ ≥85% ของจุดยืนยัน + confidence>0.95. เรียกใช้งานจริง: TTVE_CALIB.confidenceRecommendations({confidence: 0.75, geh: 5.5, avg_sample_size: 30, doh_validation_count: 1, calibration_age_months: 6})

🔍 Source Attribution — แหล่งที่มาทุก metric

ทุกตัวเลขในรายงาน TTVE ต้องอ้างอิงได้. ดาวน์โหลด CSV / PDF / Methodology Sheet จะมีตาราง source_attribution บอกครบทั้ง (a) source, (b) method, (c) ground_truth, (d) standard สำหรับ ทุก column. ตัวอย่าง:

MetricSourceMethodStandard
volume_veh_per_h Probe trajectories (TomTom/HERE) Sekuła 2018 XGBoost Transp Res C 97
volume_pcu_per_h Computed: Σ(volume × PCE) DOH 2000 PCE values DOH 2000 §3.2
speed_kmh Probe GPS pings Harmonic mean of probe speeds HCM 2010 Ch.11
vc_ratio Computed: PCU/h ÷ capacity capacity = lanes × 1800 PCU/h/lane HCM 2010 Eq 12-9
los Computed from v/c Urban arterial LOS table HCM 2010 Ch.18
control_delay_sec Computed (TMC only) d1 (uniform) + d2 (incremental) HCM 2010 Eq 19-8
queue_95th_m Computed (TMC only) arrivals×red×1.5 + oversat HCM 2010 Eq 19-13
geh_per_bucket vs DOH AADT √(2(M-C)²/(M+C)) DMRB Vol 12 §11.4

📅 Day-of-Week × Peak-Window Analysis

รายงานทุก mode (MidBlock/TMC/OD) มีสรุปแยกตามวัน × ช่วงเวลา (7 days × 4 windows). นิยาม Peak-window ตาม Thai DOH convention:

Windowเวลาหมายเหตุ
am-peakวันธรรมดา 06:00-09:59ชั่วโมงเร่งด่วนเช้า
pm-peakวันธรรมดา 16:00-19:59ชั่วโมงเร่งด่วนเย็น
middayเสาร์-อาทิตย์ 11:00-19:59peak ของวันหยุด
off-peakนอกเหนือจากนั้นtraffic เบา

ในรายงาน PDF จะมีการ ไฮไลต์สีส้ม สำหรับวัน Mon/Wed/Fri/Sat (typical-day analysis ตาม DOH practice). สำหรับงาน TIA ใช้ am-peak + pm-peak ของวัน Wed (กลางสัปดาห์) เป็น design hour.

🚦 Simulator Integration Guide

คู่มือนำผลลัพธ์ TTVE ไปใช้ใน PTV VISSIM, SUMO, Aimsun, หรือ traffic simulator อื่นๆ — TTVE ปุ่ม Download ในหน้า History มี format SUMO, VISSIM, GeoJSON ให้ครบ

อ่านก่อนใช้: probe-derived data ไม่ใช่ manual count ใช้แทนกันไม่ได้ทุกกรณี งาน TIA / EIA / signal timing เปิดใช้จริง ควรใช้ TTVE เป็น ตัวเลข baseline + เสริมด้วย manual count 1-3 วัน ที่จุด critical

🧭 Direction-aware data (ใหม่ในเวอร์ชันล่าสุด)

หน้า Request Builder มี Direction selector สำหรับ MidBlock (ขาไป / ขากลับ / ทั้ง 2 ทิศ) + ปุ่ม 🔍 Preview Layout ที่จะ:

ข้อมูลทิศจะติดไปถึงผลลัพธ์ใน field resolved_location.direction และ SUMO route file จะมี route id="rt_forward" / "rt_reverse" ให้ใช้ได้ทันที

📋 Mapping ผลลัพธ์ TTVE → Format ของ Simulator

ผลลัพธ์ TTVESUMOVISSIMAimsun
MidBlock (link volume) flows.rou.xml<flow> per time-bucket + vehicle class Vehicle Inputs CSV → Time Intervals + Composition Traffic Demand → Traffic State → Input flows
TMC (turn matrix) jtrrouter + turn-defs XML (probabilities per from-edge) Static Routes CSV (LeftTurn/Through/Right/Uturn per leg) Turn Manoeuvres → Section turning percentages
OD (origin-destination) od2trips + .od.taz.xml (O-format) Matrix Editor → import CSV (origin × destination grid) OD Matrix Editor → Centroid Configuration

🚗 SUMO: workflow แบบเต็ม

ใช้สำหรับ open-source mesoscopic/microscopic simulation

  1. สร้างถนนจาก OSM:
    netconvert --osm-files area.osm.pbf \
               --output-file net.net.xml \
               --geometry.remove --roundabouts.guess --tls.guess
  2. ดาวน์โหลด TTVE result เป็น SUMO format จากหน้า History (ปุ่มสีส้ม)
  3. สำหรับ MidBlock: เปิด ttve_xxxxx.rou.xml, แก้ placeholder EDGE_IN/EDGE_SEGMENT/EDGE_OUT เป็น ID edge ในไฟล์ net.net.xml ของคุณ
  4. รันจำลอง:
    sumo -n net.net.xml \
         -r ttve_xxxxx.rou.xml \
         --begin 0 --end 86400 \
         --tripinfo-output trips.xml \
         --summary-output summary.xml
  5. สำหรับ TMC: แยกไฟล์เป็น flows.rou.xml + turns.add.xml ตามคำสั่งใน header แล้วใช้:
    jtrrouter --route-files flows.rou.xml \
              --turn-ratio-files turns.add.xml \
              --net-file net.net.xml \
              --output-file routes.rou.xml
  6. สำหรับ OD: สร้างไฟล์ TAZ (Traffic Analysis Zones) ก่อน:
    od2trips --net-file net.net.xml \
             --taz-files taz.add.xml \
             --od-matrix-files ttve_xxxxx.od.taz.xml \
             --output-file trips.xml

🛣 PTV VISSIM: workflow แบบเต็ม

ใช้สำหรับ commercial microsimulation (TIA, signal optimization)

  1. ใน VISSIM สร้าง Vehicle Classes ให้ match TTVE:
    VISSIM Class IDNameTTVE classLengthvClass
    100Carcar5.0 mpassenger
    200HGVtruck12.0 mHGV
    300Busbus13.0 mbus
    400Motorcyclemoto2.2 mmotorcycle
  2. สร้าง Vehicle Composition ตามสัดส่วนใน TTVE header (เช่น Car 71% / Truck 12% / Moto 14% / Bus 3%)
  3. MidBlock: Traffic → Vehicle Inputs → เลือก link → Time Intervals → Import CSV จาก TTVE
  4. TMC: สร้าง Static Routes ที่แต่ละ approach → ใส่ค่า turn proportion จากไฟล์ TTVE
  5. OD: File → Read Matrix → เลือกไฟล์ CSV ของ TTVE (origins=rows, destinations=cols)

🌐 Aimsun Next: workflow ย่อ

  1. นำเข้า OSM network ผ่าน Aimsun OSM importer
  2. สร้าง Centroid Configuration ที่ match กับ origin/destination IDs ใน TTVE
  3. ใช้ Matrix Editor → New OD Matrix → paste ข้อมูลจาก TTVE CSV
  4. สร้าง Traffic Demand → Stochastic Route Choice หรือ Dynamic Assignment

📐 หลักการ pre-processing ที่แนะนำ (สำคัญ)

1. Volume smoothing — TTVE คืนค่าราย 15min/ชม. ก่อน feed เข้า simulator ควร smooth 3-point moving avg เพื่อกัน spike จาก probe sampling noise
2. Boundary conditions (BC) — TTVE ให้ flow บน screenline / pair ไม่ใช่ "flow ที่ network entry" — ต้องคิด conservation ที่ขอบ network (รถเข้า + รถออก = 0 ในเวลายาว) ก่อนใช้
3. Motorcycle adjustment — ถ้างานเน้น moto (เช่นถนนกรุงเทพ peak) ควรคูณ moto volume เพิ่ม 1.5-2× ก่อน feed (TTVE adjustment ยัง underestimate)
4. Sensitivity analysis — ใช้ v_lower / v_upper (80% CI ในไฟล์ result) รัน 3 scenarios: lower / mid / upper เพื่อดู range ของ delay/queue ในผลจำลอง
5. ห้ามใช้ TTVE สำหรับ: Lane-by-lane saturation flow rate (ต้องใช้ HCM/manual count), micro-level merge/diverge behavior (ต้อง trajectory data จาก camera), pedestrian/bicycle flow (TTVE ไม่ครอบคลุม)

📊 Field-by-field mapping (สำหรับ developer)

TTVE fieldหมายถึงSUMO equivalentVISSIM equivalent
buckets[].volumeveh/h ใน time bucketflow.vehsPerHourVolume per interval
buckets[].speed_kmhspace-mean speedvType.maxSpeed (m/s)Desired Speed Distribution
buckets[].by_vehicle_class{car, truck, moto, bus}flow per vTypeVehicle Composition %
buckets[].v_lower / v_upper80% CI bounds(run sensitivity)(run sensitivity)
provenance.geh_vs_dohGEH stat vs DOH ground truth(metadata only)(metadata only)
summary.vehicle_class_split% per classper-type vehsPerHourVehComposition relativeFlow
resolved_location.snap_distance_mระยะ snap to road(check <30m)(check <30m)

🎯 Quality grading — เลือก simulator scope ตาม GEH

GEH vs DOHGradeเหมาะกับ simulator scope
< 3.0EXCELLENTsignal timing optimization · microsim ระดับแยก
3-5PASS · planning gradeTIA reports · capacity analysis · meso-scale
5-10MARGINALstrategic studies · regional planning · ใช้ค่ามือ supplement
> 10FAILห้ามใช้ — recalibrate หรือเลือก vendor อื่น

🔍 ตัวอย่างคำสั่ง end-to-end (SUMO + MidBlock)

# 1. โหลด OSM area
osmconvert thailand-latest.osm.pbf \
  -b=100.50,13.73,100.58,13.78 \
  -o=bangkok-sukhumvit.osm

# 2. สร้าง SUMO network
netconvert --osm-files bangkok-sukhumvit.osm \
  --geometry.remove --roundabouts.guess --tls.guess \
  --output-file sukhumvit.net.xml

# 3. ดาวน์โหลด TTVE result เป็น SUMO ผ่านปุ่ม SUMO ในหน้า History
# จะได้ไฟล์: ttve-midblock-xxxxx.rou.xml

# 4. แก้ EDGE_* placeholder ในไฟล์ .rou.xml ให้ตรงกับ edge ID ใน sukhumvit.net.xml
#    (เปิด net.net.xml ดู  ที่เป็นช่วงถนนสนใจ)

# 5. รันจำลอง 24 ชม.
sumo -n sukhumvit.net.xml \
     -r ttve-midblock-xxxxx.rou.xml \
     --begin 0 --end 86400 \
     --tripinfo-output trips.xml \
     --summary-output summary.xml \
     --statistic-output stats.xml

# 6. วิเคราะห์ผล
python -c "import sumolib; print(sumolib.output.parse('summary.xml'))"

🩹 Troubleshooting

ปัญหาวิธีแก้
API ไม่ตอบเช็ค docker compose logs api หรือ http://localhost:8080/health
HTTP 402 Budgetเพิ่ม cap ใน env หรือลดขนาด query
HTTP 429 Rate limitรอ retry_after_seconds หรือเพิ่ม rate_limit_per_min
Map ไม่โหลดตรวจ console (F12) — ส่วนใหญ่ network issue กับ OSM tiles
ผลที่ได้ดูแปลกเช็ค flag = low_probes หรือ extrapolated → ลด tolerance / เปลี่ยน vendor
คำถาม AI ตีความผิดลองใช้ชื่อสถานที่เต็ม + เวลาชัดเจน เช่น "ปริมาณรถถนนสุขุมวิทที่อโศก 7 วันที่ผ่านมา"

📚 อ้างอิงวิชาการ

ดูเพิ่มเติม: 🔑 Vendor Keys · 🔌 Backend Setup · ⚙️ Admin