Xây dựng bản đồ số về giao thông dựa trên ứng dụng GPS và Google Map API

01/08/2016 05:18

Hiện nay, bản đồ trực tuyến đang được sử dụng ngày càng rộng rãi, đặc biệt là trong việc tìm đường và đánh dấu các địa danh lên trên bản đồ.

KS. Hà Ngọc Đoàn

PGS. TS. Chu Công Minh

Trường Đại học Bách Khoa TP. Hồ Chí Minh

Người phản biện:

TS. Nguyễn Xuân Long

TS. Nguyễn Quốc Hiển

TÓM TẮT: Hiện nay, bản đồ trực tuyến đang được sử dụng ngày càng rộng rãi, đặc biệt là trong việc tìm đường và đánh dấu các địa danh lên trên bản đồ. Nó không chỉ được sử dụng nhiều trong các giao diện web mà còn được dùng nhiều trong các ứng dụng điện thoại. Dựa trên những tiện ích trong Google Map API và ứng dụng về GPS có sẵn trong các điện thoại thông minh, tác giả đã xây dựng một ứng dụng điện thoại có khả năng thu thập dữ liệu về hành trình di chuyển của người dùng tạo thành một hệ thống cơ sở dữ liệu ở thời gian thực để thể hiện lên bản đồ Google Maps tên là ViTraffic. Với ứng dụng này, người dùng hoàn toàn có thể chủ động lựa chọn lộ trình di chuyển riêng để tránh những điểm, tuyến đường có mật độ giao thông cao, góp phần làm giảm tình trạng UTGT.

TỪ KHÓA: Bản đồ số về giao thông, Google Maps API, máy chủ đám mây, phpMyAdmin

ABSTRACT: Nowadays, online map has been using more popular, particularly in finding road and marking landmarks on the map. It is not only used in the website interface but also used in the smartphone application. Based on development of GPS function that is available in the smartphone and Google Map API tool, authors has developed a smart phone application that can collect the data on travel routes of the users to create a database system in real-time to display on Google Maps, named ViTraffic. With this application, users can actively choose their own route to avoid the high traffic-density location or route, contributing to reduce traffic congestion.

KEYWORDS: Traffic digital map, Google Maps API, cloud server, phpMyAdmin.

1. ĐẶT VẤN ĐỀ

Hiện nay, với sự phát triển của khoa học công nghệ, chiếc điện thoại đã không còn giới hạn trong chức năng đàm thoại thông thường mà nó đã trở thành một công cụ hỗ trợ thực sự cần thiết cho người sử dụng. Với một chiếc điện thoại thông minh, người dùng có thể sử dụng được rất nhiều chức năng khác nhau, từ cập nhật tin tức, lưu trữ đến giải trí… thông qua các ứng dụng được lập trình và cài đặt vào điện thoại. Những ứng dụng này cũng rất đa dạng theo mục đích sử dụng của người dùng.

Trong điều kiện giao thông thường xuyên ùn tắc ở các thành phố lớn như hiện nay, việc ứng dụng những tiến bộ khoa học công nghệ trong lĩnh vực công nghệ thông tin để xây dựng một bản đồ số về giao thông ở thời gian thực là cần thiết và có ý nghĩa rất lớn trong việc giúp người tham gia giao thông có thể biết được tình hình giao thông trên các tuyến đường dự kiến di chuyển, qua đó đưa ra lựa chọn lộ trình di chuyển phù hợp.

2. NỘI DUNG NGHIÊN CỨU

Quá trình nghiên cứu được thực hiện theo sơ đồ thể hiện trong Hình 2.1:

hinh1

 

2.1. Giao diện ứng dụng

Ứng dụng sẽ được thiết kế với 3 giao diện theo từng chức năng chính nhưng đều sử dụng Google Maps làm bản đồ nền thông qua API Key cung cấp cho mỗi tài khoản Google [1,2,3]. Ba giao diện đó bao gồm: Tracking (Ghi chép hành trình di chuyển), Traffic (Bản đồ màu giao thông ở thời gian thực) và Direction (Tìm lộ trình di chuyển tối ưu) (Hình 2.2).

Ở mỗi giao diện, ngoài bản đồ nền, các nút chức năng được thiết kế để thực thi các câu lệnh được lập trình bên trong tùy theo chức năng riêng [1,2,3].

hinh22

 

2.2. Hệ thống lưu trữ dữ liệu

hinh23

Để hình thành cơ sở dữ liệu, toàn bộ dữ liệu về điểm đi, lộ trình di chuyển, thời gian, vận tốc di chuyển và điểm đến của người dùng sẽ được lưu lại trên máy chủ đám mây (Cloud server) Red Hat Cloud. Đây là một dịch vụ hoàn toàn miễn phí có thể tương thích với nhiều loại ngôn ngữ lập trình khác nhau như PHP, Java, Python… Ngoài ra, để thực hiện việc xuất/lấy dữ liệu lên/từ server, dữ liệu còn được chuyển sang lưu trong công cụ phpMyAdmin. Đây là phần mềm mã nguồn mở và là một trong các ứng dụng PHP phổ biến nhất hiện nay [4]. Nó giúp người dùng có thể quản lý cơ sở dữ liệu thông qua giao diện web thay vì sử dụng giao diện cửa sổ dòng lệnh.

Quá trình gửi dữ liệu lên server: Khi thực thi chức năng Tracking ghi dữ liệu, công cụ GPS trong điện thoại cho phép tự động phát tín hiệu thay đổi vị trí và gửi yêu cầu đến Google Maps API để thông báo về việc thay đổi vị trí. Mỗi yêu cầu thay đổi vị trí GPS sẽ được Google Maps API phản hồi bằng dữ liệu tọa độ và thời gian tại thời điểm gửi yêu cầu. Sau khi được xử lý bằng Java, dữ liệu này được chuyển thành dữ liệu dạng JSON trước khi tải lên server thông qua phương thức GET (phương thức gửi thông tin) của PHP. Phương thức này sẽ mã hóa thông tin thành các dạng địa chỉ liên kết để gửi lên server, server sẽ đọc và phân tích để trả lại các thông tin dữ liệu [5] và lưu lại dưới dạng quản trị cơ sở dữ liệu MySQL.

hinh24

Quá trình tải dữ liệu từ server: Tất cả dữ liệu về lộ trình, màu sắc vận tốc và thời gian di chuyển của người dùng trước khi được tải về điện thoại để thể hiện trên các chức năng của ứng dụng đều được xử lý để chuyển về file JSON nhằm giảm nhẹ tối đa dung lượng file, tăng tốc độ tương tác giữa ứng dụng cài trên điện thoại và máy chủ. Thông qua ngôn ngữ lập trình PHP, dữ liệu được xử lý riêng theo từng chức năng và lưu lại trên server dưới dạng file JSON thông qua các địa chỉ liên kết được tự động phát sinh là: http://traffic-byethost.rhcloud.com/traffic/map[N].json (với N là số thứ tự tập tin được sinh ra) và lưu lại trên server. Với những địa chỉ liên kết này, ứng dụng sẽ đọc và thực thi lệnh hiển thị riêng theo từng chức năng. Ngoài ra, quản trị viên có thể tải thông tin trong cơ sở dữ liệu qua tài khoản phpMyAdmin nhờ chức năng Export. Dữ liệu có thể được xuất ra dưới nhiều định dạng khác nhau như: CSV, XML, PDF, DOC, XLS [4].

hinh25

 

2.3. Chức năng định vị và vẽ lại hành trình di chuyển của người dùng

Chức năng định vị của ứng dụng được xây dựng dựa trên những thành tựu về chức năng định vị toàn cầu GPS đã được tích hợp sẵn vào các thiết bị di động thông minh. Các thiết bị này hoạt động giống như một thiết bị thu tín hiệu GPS để thu thập các thông tin về vị trí của người dùng. Chức năng này phụ thuộc rất lớn vào khả năng định vị của thiết bị di động cũng như cường độ kết nối Internet. Do đó, để nâng cao hiệu quả hoạt động của chức năng vẽ lại hành trình di chuyển của người dùng, tác giả đã sử dụng chức năng Snap to roads của công cụ Google Maps API của Google [3]. Chức năng này cho phép trả lại giá trị tọa độ nằm trên con đường phù hợp nhất so với tọa độ cung cấp bởi thiết bị GPS.

Cứ sau một khoảng thời gian 7 giây ghi hành trình, server sẽ nhận dữ liệu một lần và vẽ lại lộ trình di chuyển trong khoảng thời gian đó. Khoảng thời gian này được tính toán phù hợp để dung lượng file dữ liệu gửi về server không quá lớn, chỉ khoảng 20 - 25Kb, gây ảnh hưởng đến việc hiển thị lộ trình trên ứng dụng. Như vậy, lộ trình đoạn di chuyển của người dùng sẽ hiển thị trên ứng dụng nhanh nhất là cách vị trí hiện tại của người đó một đoạn đường di chuyển tương ứng với thời gian 7 giây đó.

2.4. Xây dựng bản đồ màu vận tốc

Ứng dụng được thiết kế để thể hiện vận tốc của người di chuyển qua 4 màu sắc chính ứng với những khoảng giá trị vận tốc khác nhau, bao gồm:

- Vận tốc từ 0 đến <5km/h: Màu đỏ;

- Vận tốc từ 5 -

- Vận tốc từ 15 -

- Vận tốc >= 30km/h: Màu xanh lá cây.

Màu vận tốc được thể hiện trên ứng dụng là giá trị trung bình vận tốc của tất cả người dùng trên một tuyến đường trong khoảng thời gian 30 phút trước thời điểm ứng dụng cập nhật dữ liệu từ server. Cứ mỗi 10 phút, ứng dụng sẽ cập nhật dữ liệu trên cơ sở dữ liệu, do đó, trong khoảng thời gian 10 phút người dùng có thể thấy được dữ liệu của mình ghi nhận trong chức năng Tracking được cập nhật trên bản đồ  màu vận tốc.

Do dữ liệu được trả về trong chức năng snap to roads là dữ liệu tại tim đường, nên nếu sử dụng trực tiếp dữ liệu này để thể hiện màu vận tốc sẽ dẫn đến sự chồng lấn dữ liệu giữa hai chiều của tuyến đường. Vì vậy, cần xác định chiều di chuyển của người dùng thông qua việc so sánh cặp giá trị tọa độ hiện tại và trước đó (được trả về từ chức năng snap to roads) trước khi thêm vào số gia dịch chuyển được tính toán là 0,00006. Chiều dịch chuyển được xác định theo nguyên tắc sau:

- Kinh độ tăng và vĩ độ tăng: Dịch chuyển xuống dưới bên phải;

- Kinh độ giảm và vĩ độ giảm: Dịch chuyển lên trên bên trái;

- Kinh độ tăng và vĩ độ giảm: Dịch chuyển lên trên bên phải;

- Kinh độ giảm và vĩ độ tăng: Dịch chuyển xuống dưới bên trái.

hinh26

 

hinh27

 

2.5. Xây dựng chức năng tìm đường

Để tìm được lộ trình tối ưu đề xuất cho người dùng dựa trên cơ sở dữ liệu, tác giả đã sử dụng thuật toán Dijkstra [6] để xử lý. Thuật toán này được phát biểu như sau:

Gọi   V là tập hợp tất cả các đỉnh cần xét,

         dv là quãng đường từ đỉnh a đến đỉnh v,

w(v,u) là khoảng cách từ đỉnh v đến đỉnh u

B1. Khởi tạo: Đặt  kv= false `AA`   v `in` V; dv= ∞,`AA` v `in` V \ {a}, da:=0.

B2.  Chọn v Î V sao cho kv = false  và dv = min {dt / t `in` V, kt = false}.

Nếu dv = ∞ thì kết thúc, không tồn tại đường đi từ a đến b.

B3.  Đánh dấu đỉnh v, kv: = true.

B4.  Nếu v = b thì kết thúc và dv là độ dài đường đi ngắn nhất từ a đến b.

Ngược lại nếu v ≠b sang B5.

B5. Với mỗi u kề với v mà ku = false, kiểm tra:

Nếu du > dv + w(v,u) thì du = dv + w(v,u), Ngược lại, giữ nguyên du.

Ghi nhớ đỉnh v. Quay lại B2.

Kết quả của thuật toán này sẽ cho phép tìm được lộ trình di chuyển có thời gian di chuyển nhanh nhất giữa hai điểm cho trước, trong nghiên cứu này hai điểm đó là điểm đi và điểm đến của người dùng.

Việc thiết kế chức năng tìm đường sẽ hướng tới việc đơn giản và thuận tiện nhất cho người sử dụng. Trong nghiên cứu này, tác giả sẽ cho phép người dùng tìm được lộ trình di chuyển thông qua hai phương pháp khác nhau, đó là (1) Nhập địa chỉ của điểm đi và điểm đến và (2) Lựa chọn trực tiếp hai vị trí điểm đi và điểm đến bằng việc lần lượt chạm và giữ tại hai điểm trên bản đồ. Việc chuyển đổi giữa tọa độ và địa chỉ được thực hiện nhờ sự hỗ trợ của chức năng Geocoding của Google Maps API.

2.6. Kết quả đạt được

Kết quả của nghiên cứu được thể hiện trong Hình 2.8:

hinh28

Chức năng Tracking của ứng dụng đã hoạt động tốt trong việc ghi lại và gửi dữ liệu lên server để hình thành cơ sở dữ liệu. Lộ trình di chuyển của người dùng được ghi nhận và vẽ lại một cách liên tục, thể hiện đúng hành trình di chuyển thực tế trên nền bản đồ Google Maps.

Dữ liệu trên server đã được xử lý theo đúng yêu cầu để thể hiện trên bản đồ màu vận tốc với những màu sắc khác nhau theo vận tốc. Các dữ liệu mới được cập nhật đúng theo giá trị và khoảng thời gian được lập trình. Bản đồ thể hiện đúng dữ liệu ghi được trên thực tế ở những tuyến đường hai chiều, không có sự chồng lấn dữ liệu.

Dựa trên cơ sở dữ liệu, ứng dụng đã đề xuất lộ trình di chuyển giữa hai điểm cho trước có tốc độ di chuyển trung bình cao nhất (hay thời gian di chuyển nhanh nhất). Hai điểm đi và điểm đến được đánh dấu dễ phân biệt trên bản đồ.

Dữ liệu được ghi lại bởi ứng dụng có độ chính xác cao khi so sánh với một ứng dụng khác rất phổ biến trong việc ghi lại hành trình đó là MyTracks của Google. Khi cùng sử dụng ViTraffic và MyTracks để ghi dữ liệu trên quãng đường 10,5km, độ lệch giá trị vận tốc của hai ứng dụng là 1,19km/h, vận tốc trung bình của ứng dụng ViTraffic là 29,49km/h trong khi của MyTracks là 29,60km/h.

hinh29

 

3. KẾT LUẬN

Với nghiên cứu này, tác giả đã xây dựng một ứng dụng điện thoại chạy trên hệ điều hành Android có tên là ViTraffic có khả năng thu thập được dữ liệu hành trình đi lại của người dùng, tổng hợp dữ liệu để tạo thành cơ sở dữ liệu, xây dựng chức năng hiển thị tình hình giao thông ở thời gian thực trên đường thông qua một bản đồ màu về vận tốc di chuyển của dòng xe trên đường, qua đó giúp người dùng tìm được hành trình di chuyển có vận tốc cao nhất, tránh được những điểm có vận tốc di chuyển thấp hoặc bị ùn tắc.

Tất cả dữ liệu người dùng đã được lưu trên server để tạo thành cơ sở dữ liệu không chỉ  phục vụ cho ứng dụng ViTraffic trong nghiên cứu này mà còn có thể chia sẻ với những ứng dụng hay nghiên cứu khác liên quan nhằm sử dụng hiệu quả hơn nữa dữ liệu này.

Thông qua một số so sánh với ứng dụng khác cũng như dữ liệu thực tế, cho thấy ứng dụng đã hoạt động tốt, dữ liệu thu thập được đảm bảo độ chính xác đồng thời hiển thị một cách trực quan, dễ nhìn.

Tuy nhiên, do sử dụng nguồn server miễn phí nên tốc độ xử lý tương tác giữa cơ sở dữ liệu trên server với điện thoại chưa cao. Ngoài ra, nếu số lượng người dùng cùng một thời điểm tăng, lượng dữ liệu gửi về server nhiều dễ dẫn đến tình trạng quá tải server. Do đó, khi ứng dụng đưa vào thực tế, số lượng người dùng nhiều cần phải nâng cấp nguồn server để ứng dụng có thể hoạt động hiệu quả hơn.

Tài liệu tham khảo

[1]. Gabriel Svennerberg (2010), Beginning Google maps API 3 (https://books.google.com.vn/books?id=gHb8m0GSV2MC&printsec=frontcover&hl=vi&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false).

[2]. Michael Purvis at al. (2006), Beginning Google maps applications with PHP and Ajax: From novices to professional (http://www.wapraja.net/File/1339/ebook-Beginning_Google_Maps_Applications_With_PHP_And_Ajax_-_From_Novice_To_Professional_(2006).html).

[3]. https://developers.google.com/maps/documentation.

[4]. https://vi.wikipedia.org/wiki/PhpMyAdmin.

[5]. http://freetuts.net/phuong-thuc-get-va-post-trong-php-19.html.

[6].https://vi.wikipedia.org/wiki/Thu%E1%BA%ADt_to%C3%A1n_Dijkstra.

 

Ý kiến của bạn

Bình luận