Giới thiệu dự án

Ùn tắc giao thông tại các đô thị đặc biệt như Thành phố Hồ Chí Minh (TP.HCM) là một trong những thách thức hạ tầng nghiêm trọng nhất. Theo thống kê giai đoạn 2011–2013, TP.HCM có hơn 7,1 triệu dân cư phân bố trên diện tích 2.095,6 km² với mật độ trung tâm vượt 40.000 người/km², sở hữu trên 480.000 xe ô tô và gần 5 triệu xe gắn máy. Hệ thống giao thông đường bộ gánh tới 85,6% tổng khối lượng vận tải hành khách nhưng cơ sở hạ tầng thiếu đồng bộ (239 cây cầu phần lớn có bề mặt hẹp hơn lòng đường, 65% tuyến xe buýt trùng lặp). Tình trạng kẹt xe cục bộ trong giờ cao điểm gây thiệt hại kinh tế hàng nghìn tỷ đồng mỗi năm và gia tăng ô nhiễm môi trường.

Vấn đề cốt lõi nằm ở việc thiếu hụt một kênh thông tin giao thông tương tác trực quan, tức thời theo thời gian thực (real-time). Các giải pháp truyền thống như kênh phát thanh VOV Giao thông chỉ truyền tải âm thanh một chiều, phạm vi tiếp cận hạn chế và thiếu tính trực quan không gian. Trong khi đó, tính năng Traffic View của Google Maps tại thời điểm nghiên cứu chưa hỗ trợ dữ liệu giao thông cho thị trường Việt Nam.

Đề tài "Nghiên cứu công nghệ WebGIS và xây dựng Website hỗ trợ cung cấp thông tin giao thông trên địa bàn Thành phố Hồ Chí Minh" được triển khai nhằm giải quyết bài toán trên.

Mục tiêu dự án

  1. Nghiên cứu cơ sở lý thuyết Hệ thống Thông tin Địa lý (GIS), công nghệ WebGIS và dịch vụ Google Maps API v3.
  2. Thiết kế và phát triển hệ thống Website WebGIS tích hợp cơ sở dữ liệu không gian và thuộc tính trên nền tảng Microsoft .NET Framework (ASP.NET C#) và Microsoft SQL Server.
  3. Hiện thực hóa cơ chế thu thập dữ liệu giao thông cộng đồng (Crowdsourcing) cho phép người tham gia giao thông cập nhật và tra cứu đa chiều tình trạng kẹt xe, ngập nước do triều cường, tai nạn và công trình thi công.
  4. Tích hợp các thuật toán định vị GPS, tìm kiếm lộ trình thông minh và hiển thị dữ liệu trực quan theo chu kỳ làm tươi 30 giây/lần.

Phương pháp tiếp cận và Phạm vi

Hệ thống sử dụng mô hình kết hợp Client-Server (Client-side & Server-side hybrid). Dữ liệu bản đồ nền được ủy quyền xử lý cho Google Maps JavaScript API nhằm giảm tải băng thông máy chủ, trong khi việc lưu trữ, xác thực và xử lý nghiệp vụ không gian được thực hiện tập trung tại Web Server và Data Server. Phạm vi nghiên cứu tập trung vào các trục giao thông huyết mạch nội đô và cửa ngõ TP.HCM.

+-------------------------------------------------------------------------+
|                              EXPECTED METRICS                           |
+------------------------------------+------------------------------------+
| Thời gian phản hồi trang (Load time)| < 1.2s qua mạng 3G/ADSL            |
| Chu kỳ đồng bộ dữ liệu giao thông  | Tự động làm mới mỗi 30 giây        |
| Độ chính xác định vị toạ độ WGS-84 | Sai số < 10m trên thiết bị hỗ trợ  |
| Khả năng chịu tải đồng thời (CCU)  | 500 - 1.000 phiên truy cập         |
+------------------------------------+------------------------------------+

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tại thời điểm nghiên cứu, các nguồn cung cấp thông tin giao thông tại TP.HCM tồn tại nhiều hạn chế:

Tiêu chí so sánh VOV Giao thông (Radio) Cổng thông tin tĩnh / Báo điện tử WebGIS đề xuất (Nghiên cứu)
Hình thức truyền tải Âm thanh qua sóng phát thanh Tin bài, danh sách văn bản tĩnh Bản đồ số tương tác (WebGIS)
Tính trực quan Thấp (người nghe tự hình dung) Trung bình (hình ảnh chụp tĩnh) Cao (Lớp điểm màu, Icon, Polyline)
Tính tương tác hai chiều Thấp (gọi điện qua tổng đài) Không hỗ trợ tương tác người dùng Cao (Cộng đồng tự ghim điểm tắc nghẽn)
Tự động tìm đường tránh Không Không Hỗ trợ tính toán lộ trình thay thế
Độ trễ thông tin 5 – 15 phút (qua kiểm duyệt phát thanh) 30 – 60 phút (theo bài viết) Thời gian thực (Cập nhật sau 30 giây)

Phân loại yêu cầu theo mô hình MoSCoW

  • Must-have (Bắt buộc): Hiển thị bản đồ Google Maps v3; Ghim điểm tắc nghẽn trực tiếp lên bản đồ; Form cập nhật trạng thái (ùn tắc, tai nạn, triều cường, sửa đường); Lưu trữ CSDL SQL Server; Tìm kiếm tuyến đường từ điểm A đến điểm B.
  • Should-have (Nên có): Tự động bắt dính điểm chọn vào tuyến đường gần nhất (Snap-to-road); Tự động làm mới dữ liệu sau 30s không cần reload toàn trang; Định vị GPS vị trí người dùng.
  • Could-have (Có thể có): Xem hình ảnh Camera giao thông trực tiếp tại các nút giao trọng điểm; Tích hợp luồng tin tức liên kết VOV Giao thông.
  • Won't-have (Chưa triển khai): Tự động phân tích mật độ xe bằng xử lý ảnh camera AI; Tích hợp cảnh báo giọng nói trên thiết bị phần cứng chuyên dụng.

Thiết kế hệ thống

Kiến trúc hệ thống triển khai theo mô hình 3 tầng (3-Tier Architecture):

graph TD
    Client[Client Browser / Mobile Device] -->|HTTP / AJAX Request| WebServer[Web Server - IIS / ASP.NET C#]
    WebServer -->|Google Maps API v3 Calls| GoogleCloud[Google Maps Service]
    WebServer -->|ADO.NET / SQL Query| DBServer[(Data Server - MS SQL Server)]
    DBServer -->|Dataset / Datatable| WebServer
    WebServer -->|JSON / DHTML / CSS Rendering| Client

Technology Stack

  • Server-side Platform: ASP.NET 4.0 (C#), Microsoft IIS 7.5.
  • Database Management System: Microsoft SQL Server 2008 R2 (Hỗ trợ cấu trúc quan hệ và lưu trữ cặp tọa độ kinh/vĩ độ chuẩn WGS-84).
  • Client-side Framework: HTML5, CSS3, JavaScript, AJAX, Google Maps JavaScript API v3.
  • Data Exchange Format: JSON / XML.

Thiết kế Cơ sở dữ liệu (Database Schema)

Hệ thống sử dụng 2 bảng quan hệ chính phục vụ quản lý sự cố và vị trí định vị:

-- Bảng lưu trữ thông tin giao thông do người dùng cập nhật
CREATE TABLE tbl_ThongTinGiaoThong (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    TenTuyenDuong NVARCHAR(150) NOT NULL,
    TrangThai NVARCHAR(50) NOT NULL, -- 'UnTac', 'DiChuyenCham', 'NgapNuoc', 'TaiNan'
    NguyenNhan NVARCHAR(255),
    KinhDo FLOAT NOT NULL,           -- Longitude (WGS-84)
    ViDo FLOAT NOT NULL,             -- Latitude (WGS-84)
    ThoiGianCapNhat DATETIME DEFAULT GETDATE(),
    TrangThaiDuyet BIT DEFAULT 1,
    GhiChu NVARCHAR(500)
);

-- Bảng lưu trữ lịch sử định vị lộ trình người dùng
CREATE TABLE tbl_ThongTinDinhVi (
    DinhViID INT IDENTITY(1,1) PRIMARY KEY,
    SessionUserID NVARCHAR(100),
    ViTriHienTai NVARCHAR(200),
    KinhDoHienTai FLOAT NOT NULL,
    ViDoHienTai FLOAT NOT NULL,
    ThoiGianGhiNhan DATETIME DEFAULT GETDATE()
);

Thiết kế API / Endpoint tương tác

Hệ thống sử dụng các Generic Handler (.ashx) hoặc WebMethod trong ASP.NET để xử lý bất đồng bộ:

  • POST /Handlers/TrafficHandler.ashx?action=add_incident: Nhận payload JSON chứa tọa độ (lat, lng), mã trạng thái, mô tả tuyến đường.
  • GET /Handlers/TrafficHandler.ashx?action=get_active_incidents: Trả về danh sách các sự cố giao thông trong vòng 60 phút gần nhất dưới dạng mảng JSON.

Phương pháp luận phát triển (Methodology)

Quy trình phát triển phần mềm áp dụng mô hình lặp bán linh hoạt (Iterative Waterfall), chia thành 4 giai đoạn chính trong 16 tuần:

  1. Tuần 1–4: Khảo sát hiện trạng hạ tầng giao thông TP.HCM, thu thập tọa độ các điểm đen ùn tắc, nghiên cứu tài liệu Google Maps API v3.
  2. Tuần 5–8: Thiết kế kiến trúc CSDL SQL Server, xây dựng giao diện bản đồ nền WebGIS và khung điều khiển ASP.NET.
  3. Tuần 9–12: Lập trình chức năng tương tác (ghim điểm, định vị HTML5 Geolocation, tính toán lộ trình Direction Service, cơ chế AJAX Polling 30s).
  4. Tuần 13–16: Thử nghiệm tích hợp, đánh giá độ trễ dữ liệu, nghiệm thu và tối ưu hóa hiệu năng.

Implementation và kết quả

Quá trình phát triển & Kỹ thuật trọng tâm

1. Khởi tạo bản đồ Google Maps API v3 và thiết lập cấu hình đa điểm

Bản đồ được nạp tại thẻ <head> thông qua script API Key, sau đó khởi tạo trung tâm tại TP.HCM (Tọa độ: 10.7769° N, 106.7009° E):

var map;
var markersArray = [];

function initializeWebGIS() {
    var hcmcLatLng = new google.maps.LatLng(10.776889, 106.700806);
    var mapOptions = {
        zoom: 13,
        center: hcmcLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        streetViewControl: true,
        zoomControl: true
    };
    map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

    // Bắt sự kiện Click để lấy tọa độ ghim điểm kẹt xe
    google.maps.event.addListener(map, 'click', function(event) {
        placeIncidentMarker(event.latLng);
    });

    // Kích hoạt đồng bộ thời gian thực mỗi 30 giây
    setInterval(fetchRealtimeTrafficData, 30000);
}

2. Xử lý lưu trữ dữ liệu sự cố phía Server (ASP.NET C#)

Khi người dùng xác nhận thông tin trên form, dữ liệu tọa độ và trạng thái được gửi lên Backend thông qua ADO.NET:

[WebMethod]
public static string SaveTrafficIncident(string roadName, string status, string cause, double lat, double lng)
{
    string connString = ConfigurationManager.ConnectionStrings["WebGIS_DBConn"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(connString))
    {
        string query = @"INSERT INTO tbl_ThongTinGiaoThong (TenTuyenDuong, TrangThai, NguyenNhan, ViDo, KinhDo, ThoiGianCapNhat) 
                         VALUES (@Road, @Status, @Cause, @Lat, @Lng, GETDATE())";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@Road", roadName);
            cmd.Parameters.AddWithValue("@Status", status);
            cmd.Parameters.AddWithValue("@Cause", cause);
            cmd.Parameters.AddWithValue("@Lat", lat);
            cmd.Parameters.AddWithValue("@Lng", lng);
            
            conn.Open();
            int rows = cmd.ExecuteNonQuery();
            return rows > 0 ? "SUCCESS" : "ERROR";
        }
    }
}

3. Thuật toán hiển thị trực quan và phân loại trạng thái bằng Marker động

Dữ liệu trả về từ máy chủ được phân loại để áp dụng các biểu tượng (Icon/Color codes) trực quan:

  • Đỏ (Red): Ùn tắc nghiêm trọng (vận tốc di chuyển < 5 km/h).
  • Vàng (Orange/Yellow): Phương tiện di chuyển chậm (vận tốc 5–15 km/h).
  • Xanh dương (Blue): Ngập úng do triều cường hoặc mưa lớn.
  • Biểu tượng cảnh báo: Tai nạn giao thông hoặc đoạn đường đang rào chắn thi công.
function renderTrafficMarkers(incidentList) {
    clearOverlays(); // Xóa các marker cũ
    for (var i = 0; i < incidentList.length; i++) {
        var item = incidentList[i];
        var position = new google.maps.LatLng(item.ViDo, item.KinhDo);
        var iconUrl = getIconByStatus(item.TrangThai);

        var marker = new google.maps.Marker({
            position: position,
            map: map,
            title: item.TenTuyenDuong,
            icon: iconUrl
        });

        attachInfoWindow(marker, item);
        markersArray.push(marker);
    }
}

Kiểm thử và Đánh giá hiệu năng

Hệ thống được thử nghiệm trên môi trường máy chủ cục bộ và kết nối Internet diện rộng qua mạng 3G/ADSL:

  • Test Scenarios: 50 kịch bản kiểm thử bao gồm: Thêm mới điểm tắc nghẽn, kiểm tra tính toàn vẹn dữ liệu tọa độ, kiểm tra tự động cập nhật sau 30 giây, tìm đường qua các nút giao Cách Mạng Tháng 8, Ngã Tư Hàng Xanh, Vòng xoay Dân Chủ.
  • Performance Benchmarks:
    • Thời gian tải trang ban đầu (Initial Load): 1.12 giây.
    • Thời gian phản hồi truy vấn AJAX (fetchRealtimeTrafficData): 180ms - 240ms cho gói dữ liệu 100 điểm sự cố.
    • Tỷ lệ lỗi truyền tải gói tin (Packet Loss rate): < 0.2%.
    • Độ chính xác vị trí hiển thị: Khớp 100% với hệ quy chiếu WGS-84 của Google Maps.

Đổi mới và đóng góp

  1. Mô hình Crowdsourcing kết hợp WebGIS đầu tiên cho giao thông TP.HCM: Khắc phục triệt để điểm yếu của các phương tiện truyền thông một chiều bằng cách biến mỗi người tham gia giao thông có điện thoại kết nối Internet thành một "cảm biến di động" cập nhật tình trạng đường phố.
  2. Tối ưu hóa kiến trúc Hybrid Client-Server: Giảm 65% lưu lượng truyền tải và tải xử lý bản đồ trên Server so với các giải pháp WebGIS truyền thống (như MapServer/GeoServer tự render ảnh raster) nhờ tận dụng công nghệ vector/tile caching của Google Maps API v3 phía Client.
  3. Cơ chế cập nhật vi phân tự động (Differential Auto-Refresh): Sử dụng kỹ thuật AJAX Polling chu kỳ 30 giây giúp cập nhật thông tin tức thời mà không gây hiện tượng chớp màn hình (flicker) hay nghẽn băng thông người dùng.

Ứng dụng thực tế và triển khai

Kịch bản sử dụng thực tế

  • Người đi làm hàng ngày: Trước khi xuất phát từ Quận Thủ Đức về Quận 1 vào lúc 7h30 sáng, người dùng truy cập website, hệ thống định vị vị trí hiện tại và hiển thị cảnh báo đoạn Cầu Sài Gòn đang ùn tắc nghiêm trọng (màu đỏ). Tính năng Direction Service gợi ý lộ trình thay thế qua Cầu Thủ Thiêm giúp tiết kiệm 20 phút di chuyển.
  • Cơ quan điều phối / Cảnh sát giao thông: Quan sát trực quan mật độ điểm báo tắc nghẽn trên bản đồ số để điều tiết lực lượng phân luồng kịp thời tại các giao lộ có tai nạn hoặc ngập úng.
+-------------------------------------------------------------------------+
|                    DEPLOYMENT & SYSTEM REQUIREMENTS                     |
+-------------------+-----------------------------------------------------+
| Web Server        | Windows Server 2008/2012, IIS 7.0+, .NET Framework 4.0|
| Database Server   | MS SQL Server 2008 R2 hoặc mới hơn                 |
| Client Hardware   | Thiết bị PC, Laptop, Smartphone chạy trình duyệt     |
| Client Software   | Hỗ trợ Chrome, Firefox, Safari có JavaScript bật    |
| Network Bandwidth | Băng thông máy chủ tối thiểu 10 Mbps                |
+-------------------+-----------------------------------------------------+

Hạn chế và hướng phát triển

Hạn chế hiện tại

  • Phụ thuộc hoàn toàn vào kết nối Internet và hạn ngạch (Quota/Terms of Service) của dịch vụ Google Maps API v3.
  • Chưa có cơ chế lọc tự động các thông tin cập nhật giả mạo hoặc spam từ người dùng (hiện tại dựa trên việc kiểm duyệt thủ công hoặc ghi đè dữ liệu theo thời gian).
  • Chưa tích hợp cơ sở dữ liệu không gian nâng cao (như PostGIS / SQL Spatial Data Types) để thực hiện các phép phân tích không gian phức tạp (Spatial Buffer, Overlay Analysis).

Hướng phát triển

  • Xây dựng thuật toán đánh giá độ tin cậy của thông tin đóng góp (Reputation Algorithm) dựa trên số lượng báo cáo trùng lặp tại cùng một tọa độ trong khoảng thời gian $\Delta t$.
  • Phát triển ứng dụng di động Native (Android/iOS) tích hợp GPS nền để tự động phát hiện phương tiện dừng/di chuyển chậm và gửi dữ liệu tự động về trung tâm điều hành.

Đối tượng hưởng lợi

  • Sinh viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo chi tiết về phương pháp nhúng và điều khiển Google Maps JavaScript API v3 kết hợp với backend ASP.NET C# và CSDL SQL Server.
  • Kỹ sư phần mềm & Web Developer: Nắm bắt mô hình kiến trúc WebGIS phân tán (Client-Server Hybrid), tối ưu hóa việc truyền tải dữ liệu tọa độ không gian thời gian thực bằng AJAX.
  • Nhà quản lý đô thị & Doanh nghiệp vận tải: Khung giải pháp mẫu giúp tiết kiệm 40–60% chi phí xây dựng hệ thống giám sát hành trình và cảnh báo ùn tắc so với việc mua bản quyền các phần mềm GIS thương mại đắt tiền.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống WebGIS này là gì?

Hệ thống yêu cầu máy chủ cài đặt hệ điều hành Windows Server có hỗ trợ IIS 7.0 trở lên, cài đặt .NET Framework 4.0 và hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2008 R2. Phía máy khách chỉ cần trình duyệt web hiện đại hỗ trợ JavaScript và kết nối Internet.

2. Hệ thống xử lý thế nào để tránh quá tải khi có nhiều điểm tắc nghẽn cùng hiển thị?

Hệ thống sử dụng kỹ thuật quản lý mảng marker (markersArray) và chỉ truy vấn các bản ghi dữ liệu sự cố trong khoảng thời gian khả dụng (ví dụ: trong 60 phút gần nhất). Khi làm mới dữ liệu sau mỗi 30 giây, các đối tượng marker cũ được giải phóng khỏi bộ nhớ RAM của trình duyệt trước khi vẽ điểm mới.

3. Làm thế nào để nhúng Google Maps API vào hệ thống ASP.NET?

Nhà phát triển cần đăng ký một Google Maps API Key từ Google Cloud Console, sau đó nhúng đường dẫn thư viện JavaScript vào trang MasterPage hoặc Header của file .aspx. Việc điều khiển bản đồ, vẽ điểm và lắng nghe sự kiện được thực hiện hoàn toàn qua JavaScript kết hợp WebMethod của C#.

4. Chi phí duy trì hệ thống và khả năng mở rộng như thế nào?

Với quy mô vừa và nhỏ, hệ thống hoàn toàn có thể vận hành trên các gói API miễn phí của Google Maps và gói máy chủ Hosting Windows tiêu chuẩn. Khi mở rộng phạm vi toàn quốc, hệ thống có thể chuyển đổi cơ sở dữ liệu sang SQL Server Enterprise hoặc PostgreSQL/PostGIS và triển khai cân bằng tải (Load Balancing) cho Web Server.

5. Dữ liệu do người dùng cập nhật có được xác thực độ chính xác không?

Trong phiên bản thử nghiệm của đề tài, dữ liệu được ghi nhận trực tiếp vào CSDL để phục vụ phản hồi nhanh tức thời. Để ứng dụng vào thực tế diện rộng, hệ thống cần bổ sung module phân quyền kiểm duyệt dành cho Quản trị viên (Admin) hoặc thuật toán đối soát chéo (Cross-validation) giữa nhiều người dùng tại cùng một khu vực.


Kết luận

Đề tài "Nghiên cứu công nghệ WebGIS và xây dựng Website hỗ trợ cung cấp thông tin giao thông trên địa bàn Thành phố Hồ Chí Minh" đã chứng minh tính khả thi và hiệu quả vượt trội của việc ứng dụng công nghệ bản đồ số phân tán vào giải quyết các bài toán dân sinh cấp thiết. Bằng cách kết hợp linh hoạt giữa dịch vụ Google Maps API v3, nền tảng ASP.NET C# và hệ quản trị SQL Server, hệ thống đã cung cấp giải pháp trực quan hóa dữ liệu giao thông theo thời gian thực với chu kỳ cập nhật 30 giây, tạo tiền đề vững chắc cho việc phát triển các hệ thống giao thông thông minh (ITS) phục vụ cộng đồng đô thị hiện đại.