Việc tra cứu thông tin và đặc biệt là tìm các tuyến thích hợp để đi lại bằng bản đồ đi không liên thông với nhau giữa điểm xuất phát và điểm đích hay khi hệ thống các tuyến trở nên ngày
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN NGỌC VẠN – TRẦN HOÀNG HUY
XÂY DỰNG HỆ THỐNG WEB
HỖ TRỢ TÌM ĐƯỜNG XE BUÝT
BÁO CÁO THỰC TẬP TỐT NGHIỆP
TP HCM, 2011
Trang 2Trang 0
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN NGỌC VẠN - 0751120130
XÂY DỰNG HỆ THỐNG WEB
HỖ TRỢ TÌM ĐƯỜNG XE BUÝT
BÁO CÁO THỰC TẬP TỐT NGHIỆP
GIÁO VIÊN HƯỚNG DẪN
VŨ ĐÌNH LONG
NIÊN KHÓA 2007 - 2012
Trang 3Trang 1
Nhận xét của giáo viên hướng dẫn
Trang 4
Trang 2
Nhận xét của giáo viên phản biện
Trang 5
Trang 3
Lời cảm ơn
Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, trường Đại Học Giao Thông Vận Tải TPHCM đã tạo điều kiện cho chúng em thực hiện đề tài này
Chúng em xin chân thành cảm ơn thầy Vũ Đình Long đã tận tình hướng dẫn, động viên chúng em trong suốt thời gian thực hiện
Chúng em xin chân thành cảm ơn quý Thầy Cô trong khoa đã tận tình hướng dẫn, trao dồi kiến thức cho chúng em trong những năm học vừa qua
Chúng em gửi lòng biết ơn sâu sắc đến ba, mẹ, đến các anh chị, bạn bè và người thân đã góp ý, giúp đỡ và động viên chúng em trong suốt thời gian học tập và nghiên cứu
Trong giới hạn thời gian của đề tài thực tập tốt nghiệp, chúng em đã cố gắng hoàn thành đề tài, dù vậy vẫn không thể tránh những sai sót, kính mong sự tận tình chỉ bảo và giúp đỡ của thầy cô và các bạn để đề tài hoàn thiện hơn
Nhóm sinh viên thực hiện Nguyễn Ngọc Vạn & Trần Hoàng Huy
Trang 6Trang 4
Lời nói đầu
Giao thông vốn là một vấn đề rất được quan tâm trong các thành phố lớn Nhất là trong tình trạng hiện nay ở nước ta nói chung, thành phố Hồ Chí Minh nói riêng, tình hình giao thông đang diễn ra ngày càng phức tạp, nạn kẹt xe trong các giờ cao điểm diễn ra như một căn bệnh cấp tính Việc phổ biến thông tin và hướng dẫn người dân tìm đường đi thích hợp với các phương tiện giao thông công cộng đang là một việc làm cần thiết
Với điều kiện cụ thể ở nước ta hiện nay, xe buýt sẽ là một phương tiện mở màn để người dân quen dần với hệ thống giao thông này Việc tra cứu thông tin và đặc biệt là tìm các tuyến thích hợp để đi lại bằng bản đồ đi không liên thông với nhau giữa điểm xuất phát và điểm đích hay khi hệ thống các tuyến trở nên ngày một chằng chịt, một xu hướng ắt sẽ diễn ra trong tương lai không xa
Tuy nhiên, với sự trợ giúp của máy tính thì công việc đó trở nên dễ dàng và tiện lợi Với ý tưởng đó, chúng em đã tiến hành tìm hiểu các công nghệ WebGIS để thực hiện đề tài “Hệ thống web hỗ trợ tìm đường đi xe buýt” nhằm tạo ra một website để hỗ trợ người dùng tìm được các tuyến đường thích hợp cho việc đi lại một cách trực quan, đơn giản, nhanh chóng và tiện lợi
Đề tài này gồm 6 chương :
Chương 1: Tổng quan về đề tài
Chương 2: Hướng tiếp cận của đề tài
Chương 3: Tìm hiểu Map API
Chương 4: Ứng dụng hệ thống web tìm đường xe buýt
Chương 5: Tổng kết và hướng phát triển
Trang 7Trang 5
Mục lục
Lời cảm ơn 3
Lời nói đầu 4
Chương 1 Tổng quan về đề tài 7
1.1 Yêu cầu thực tế và lý do thực hiện đề tài 7
1.2 Mục tiêu của đề tài 7
Chương 2 Hướng tiếp cận của đề tài 8
2.1 Phân tích dữ liệu bản đồ 8
2.1.1 Mối quan hệ giữa bản đồ xe buýt và bản đồ giao thông đường bộ 8
2.1.2 Tổ chức dữ liệu bản đồ xe buýt 9
2.2 Phân tích yêu cầu người dùng 14
2.3 Giải thuật tìm kiếm đường đi ngắn nhất 15
2.4 Vận dụng giải thuật A* vào trong bài toán 17
2.4.1 Vận dụng đơn giản 17
2.4.2 Vận dụng triệt để 18
Chương 3 Tìm hiểu Map API 24
3.1 Công nghệ làm Web bản đồ 24
3.1.1 Vấn đề đặt ra khi làm bản đồ 24
3.1.2 Cách giải quyết 24
3.2 Giới thiệu về Vietbando Maps API 26
Chương 4 Ứng dụng hệ thống web tìm đường xe buýt 36
4.1 Phân tích yêu cầu 36
4.2 Công nghệ thực hiện và yêu cầu cấu hình 36
4.2.1 Công nghệ thực hiện 36
Trang 8Trang 6
4.2.2 Yêu cầu cấu hình người dùng 36
4.3 Tính năng chính của chương trình 37
4.3.1 Tính năng tìm đường 37
4.3.2 Các tính năng hỗ trợ quản trị 42
Chương 5 Tổng kết Và Hướng Phát Triển 45
5.1 Tổng kết 45
5.2 Hướng phát triển 45
TÀI LIỆU THAM KHẢO 46
PHỤ LỤC: DANH MỤC CÁC TUYẾN XE BUÝT TẠI TPHCM 47
Trang 9Trang 7
Chương 1 Tổng quan về đề tài
1.1 Yêu cầu thực tế và lý do thực hiện đề tài
Từ lâu, giao thông luôn là vấn đề nhức nhối và ảnh hưởng trực tiếp đến các thành phố lớn Thành phố Hồ Chí Minh cũng không là ngoại lệ, số lượng phương tiện cá nhân ngày 1 tăng theo dân số lẫn nhu cầu đi lại ngày càng tăng nhanh hơn so với việc phát triển cơ sở hạ tầng giao thông Hậu quả
là nạn kẹt xe ngày càng nghiêm trọng, và các giải pháp hiện tại vẫn chỉ mang tính chất nhất thời Trong khi qui hoạch đô thị và phát triển giao thông công cộng là giải pháp cần thực hiện song song và ưu tiên hàng đầu, 1 trong số đó
là phát triển mạng lưới xe buýt để dần thay thế cho các phương tiện cá nhân
Tuy xe buýt không phải là 1 phương tiện mới, nhưng hiện tại số người
sử dụng vẫn còn chiếm tỉ lệ chưa cao, vì thế bên cạnh việc phát triển về qui
mô, cần có các công cụ hỗ trợ người dùng là 1 việc làm rất cần thiết
1.2 Mục tiêu của đề tài
Mục tiêu của đề tài là xây dựng hệ thống tìm đường xe buýt trên web giúp hành khách tìm ra các lộ trình phù hợp với từng nhu cầu cụ thể, đồng thời tạo ra hệ thống quản lý xe buýt cơ bản
- Tìm hiểu nghiệp vụ, thu thập thông tin các tuyến xe buýt trong thành phố
- Xây dựng dữ liệu bản đồ dành riêng xe buýt với sự hỗ trợ của các Map API hiện có
- Xây dựng giải thuật phù hợp với yêu cầu tìm kiếm
- Ứng dụng các Map API để minh họa kết quả trên web
Mục đích cuối cùng của đề tài là: giúp người dùng tìm được đường đi tối ưu nhất (bao gồm cả việc đi bộ, chuyển tuyến xe buýt) giữa 2 điểm bất kì trong thành phố
Trang 10Bản đồ dành cho xe buýt là 1 phần không thể tách rời của bản
đồ giao thông đường bộ, mà bản đồ giao thông đường bộ hiện tại của thành phố Hồ Chí Minh rất phức tạp, và để xây dựng không hề đơn giản
Hình 2.1: Bản đổ xe buýt
Trang 11Trang 9
Hình 2.2: Bản đồ giao thông đường bộ
Hiện tại các dịch vụ thông tin của nước đa đã đáp ứng tương đối tốt cho loại bản đồ giao thông đường bộ này, vậy thì tại sao ta không tận dụng chúng? Trong đó dịch vụ cung cấp tốt nhất và phi thương mại là Vietbando Maps API
Việc sử dụng lại các API được cung cấp phải đảm bảo sao cho
sự lệ thuộc của bản đồ xe buýt và các API là thấp nhất có thể, để tránh trường hợp rủi ro có thể xảy ra
Trong khuôn khổ đề tài này, chúng ta sẽ xây dựng cùng với loại Maps API như đã đề cập
2.1.2 Tổ chức dữ liệu bản đồ xe buýt
Dữ liệu bản đồ gồm có các thực thể cơ bản như sau:
Điểm mấu chốt của loại bản đồ này, theo như thực tế đã thấy, thì việc thể hiện các luồng xe buýt là quan trọng nhất Người ta xác
Trang 12Trang 10
định các tuyến xe qua các con đường lớn, các đoạn thẳng chung, qua
đó giúp người dùng hình dung ra tuyến đường mà xe buýt đi qua
Thế nhưng, chúng ta cần 1 loại bản đồ có thể đáp ứng như cầu tìm kiếm bằng máy tính, nó đói hỏi sự rõ ràng, chính xác và cố định, mấu chốt của bài toán là đồ thị, nên đỉnh là yếu tố quan trọng nhất
Bản đồ được tổ chức dưới dạng đồ thị, và thực tế được mô tả như sau:
số nhà, tên đường, tên quận
độ, vĩ độ
Là các trạm dừng xe buýt, các bến
đỗ đầu tuyến và cuối tuyến Vì có chung tính chất, nên gọi chung là trạm dừng xe buýt (sau đây gọi tắt
là “trạm”)
Tập đỉnh
Là những đường liên thông giữa các trạm với nhau, có độ dài và hướng xác định
Tập cung
Đồ thị có
hướng
Trang 13Trang 11
Thông tin đường đi giữa 2 trạm:
Để bài toán trở nên đơn giản hơn, ta qui ước giữa 2 trạm cho duy nhất 1 đường đi có hướng từ trạm này đến trạm kia
Như vậy giữa 2 trạm gần nhau sẽ có 1 cung có hướng
Cung này bao gồm:
Trang 14Trang 12
Hình 2.4: cung dùng để vẽ chi tiết
Thông tin của 1 tuyến xe buýt bao gồm:
dữ liệu
Số tuyến
Mỗi tuyến xe trong thành phố đều được đặt số giúp người dùng dễ nhớ hơn
Tên tuyến
ví dụ Sài Gòn – Suối Tiên, … hoặc Suối Tiên – Sài Gòn là 2 tuyến xe khác nhau trong dữ liệu
Chuỗi các trạm liên tiếp nhau mà tuyến xe
đó đi qua
Chỉ cần xác định tập hợp theo thứ tự các trạm mà tuyến xe đó đi qua là đủ
để thao tác đầy đủ
Trang 15Trang 13
Hình 2.5: chỉ cần biết danh sách các trạm, có thể xác định được 1
tuyến xe buýt
Hình 2.6: kết hợp với chi tiết đường đi giữa 2 trạm, tạo ra 1
tuyến xe buýt hoàn chỉnh trên bản đồ
Trang 16Trang 14
Đến đây, ta đã có 1 bản đồ xe buýt cơ bản, mà khi nhìn vào đó người ta có thể hình dung được vị trí trạm xe buýt và các trạm mà 1 tuyến xe buýt đi qua
2.2 Phân tích yêu cầu người dùng
Người dùng đòi hỏi ở chương trình này gợi ý được đường đi tối ưu nhất, đó là: Chỉ cần biết địa chỉ điểm đầu và điểm cuối, từ đó chương trình vạch ra phương hướng tối ưu nhất Vậy thế nào là tới ưu nhất?
Hoàn toàn không có 1 hằng số nào cho sự tối ưu, ta có 1 ví dụ sau:
H là sinh viên trường ĐH Giao Thông Vận Tải TPHCM, nhà của H ở gần chợ Bà Chiểu, Bạch Đằng, Bình Thạnh H không có xe riêng mà đi học bằng xe buýt Hàng ngày H đi học về bằng cách đi xe số 14, số đến xe 55
Nhưng vì là 1 sinh viên nên cuối tháng H còn ít tiền để tiêu, và H quyết định chỉ đi 1 tuyến xe buýt thôi bằng cách đi bộ 1 đoạn rồi đón xe 55
về nhà
Hình 2.7: cùng điểm đầu và cuối nhưng có nhiều con đường đi
Trang 17Trang 15
Như vậy với việc đi bộ để hạn chế 1 tuyến xe buýt, đã giúp h tiết kiệm hơn trong chi phí sinh hoạt
Qua ví dụ trên ta nhận thấy, việc tìm đường theo yêu cầu người dùng,
để mang lại tính tiện lợi, ngoài yếu tố các tuyến xe buýt, chương trình cần phải đánh giá được thêm 2 yếu tố không thể tách rời: quãng đường đi bộ, và
sự chuyển tuyến
- Quãng đường đi bộ: Việc phải đi bộ đối với hành khách đi xe
buýt là điều hoàn toàn không thể tránh khỏi, đó là 1 hệ số không thể bỏ qua trong lộ trình của người dùng
- Chuyển tuyến: việc chuyển tuyến xe tuyến là mối quan tâm lớn
nhất đối với người dùng, nếu như khi đi xe máy, hay đi bộ, người dùng quan tâm nhất là quãng đường ngắn nhất, thì đối với xe buýt, việc chuyển tuyến ít nhất là 1 trong những ưu tiên hàng đầu
Như vậy, xét về khía cạnh người dùng, phải lưu tâm đến 2 yếu tố này
2.3 Giải thuật tìm kiếm đường đi ngắn nhất
Trong khoa học máy tính, A* (đọc là A sao) là một thuật toán tìm kiếm trong đồ thị Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích) Thuật toán sử dụng một "đánh giá heuristic" để xếp loại từng nút theo ước lượng về tuyến đường tốt nhất đi qua nút đó Thuật toán này duyệt các nút theo thứ tự của đánh giá heuristic này Do đó, thuật toán A* là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (best-first search)
Thuật toán A* được mô tả lần đầu vào năm 1968 bởi Peter Hart, Nils Nilsson, và Bertram Raphael Trong bài báo của họ, thuật toán được gọi là thuật toán A; khi sử dụng thuật toán này với một đánh giá heuristic thích hợp
sẽ thu được hoạt động tối ưu, do đó mà có tên A*
Trang 18Trang 16
Mã giã giải thuật A*:
function A_Start(begin, end)
result = true;
break;
} closeList.Push(node);
for (n in Tn(node)) {
if (!openList.InList(n) && !closeList.InList(n)) {
openList.Push(n);
n.Cost = node.Cost + Edge(node, n).Value + n.Huerictis; BeforeOfNode(n, node);
} else if (!closeList.InList(n) && n.Cost > node.Cost + Edge(node, n).Value + n.Huerictis)
{
n.Cost = node.Cost + Edge(node, n).Value + n.Huerictis; BeforeOfNode(n, node);
} }
Trang 19Ứng dụng vào giải thuật, với ý tưởng đơn giản, ta hiện thực như sau:
- Tập đỉnh: Tập các trạm xe buýt
- Tập cung: Tập các quãng đường giữa 2 trạm
- H’: khoảng cách đường chim bay giữa trạm hiện tại tới trạm cuối cùng
- G: khoảng đồ dài cung
Như vậy, ta đã hiện thực được bài toán 1 cách đơn giản
Hình 2.8: Đồ thị đơn giản
Trang 20Trang 18
Với cách hiện thực này, sẽ giải quyết được vấn đề: tìm đường
đi ngắn nhất giữa 2 trạm xe buýt bất kì, và chỉ dừng lại ở đó, ta không thể đưa hệ số đi bộ và hệ số chuyển tuyến vào trong giải thuật
2.4.2 Vận dụng triệt để
Cần phải giải quyết 2 vấn đề sau:
+ Sự chuyển tuyến trong quá trình tìm kiếm + Độ dài cung
Trong quá trình tìm kiếm, làm sao nhận biết đường đi hiện tại
đã qua bao nhiêu tuyến xe?
Ta tiến hành mở rộng đồ thị theo cách sau:
Mỗi trạm xe sẽ được biến thành nhiều trạm, mỗi trạm sẽ được gắn cờ dùng để biểu thị với qui ước: cờ -1 là đi bộ, cờ còn lại là mã số tuyến xe đi qua, như hình sau:
Ví dụ: Trạm 002 dưới đây có 2 tuyến xe buýt đi qua
Trang 21+ Trạm 002, cờ 14B: trạm có tuyến xe 14B đi qua
+ Trạm 002, cờ 91B: trạm có tuyến 91B đi qua
Trang 22Trang 20
Hình 2.10: 1 trạm tách thành nhiều đỉnh
Nhìn vào đây, ta có thể suy ra 1 số tính chất như sau:
Nếu đi đến trạm 002 bằng xe 14B, có thể xuống xe bằng cách chuyển qua -1
Nếu đi đến trạm 002 bằng xe 91B, có thể xuống xe bằng cách chuyển qua -1
Nếu đi đến trạm 002 bằng đi bộ, có thể lên xe 14B hoặc 91B để
đi tiếp
Vậy, nếu đến trạm 002 bằng xe 14B, và muốn chuyển qua xe 91B thì phải qua trung gian là -1, tức là người đi đường phải bước xuống xe (chuyển sang trạm thái đi bộ) rồi lại lên xe 91B Việc từ trạng thái đi bộ lên xe 91B là đánh dấu 1 lần chuyển tuyến
Trang 23Trang 21
Như vậy, ta sẽ có đồ thị và liên kết như sau:
Hình 2.11: đồ thị sau khi tách đỉnh
+ Đi bộ và chuyển tuyến
Đi bộ là đoạn đường giữa những trạm có cờ là -1
Chuyển tuyến là đoạn đường bắt đầu với cờ -1, và kết thúc là 1
cờ khác
Trang 24Trang 22
Hình 2.12: Nhận biết đi bộ và chuyển tuyến
Như vậy ta đã xác định được trường hợp đi bộ và chuyển tuyến
Ta có công thức tính chi phí như sau:
Xét tiếp ví dụ trên, gọi độ dài quãng đường từ trạm 002 đến
001 là x, hệ số đi bộ là a, và hệ số chuyển tuyến là b, ta có các khoảng cách như sau:
Chi phí = khoảng cách * hệ số đi bộ + hệ số chuyển tuyến
Trang 25Trang 23
Hình 2.13: Độ dài cung trong đồ thị
Với đồ thị này, ta hoàn toàn có thể áp dụng giải thuật A* bình thường và tìm ra kết quả
Từ đây, có thể suy ra được đường đi cụ thể, và hướng dẫn chi tiết bằng lời văn
Trang 26Nếu bạn có một tấm ảnh bản đồ cho phép lưu trữ trên máy tính, thì việc đưa lên Web với môi trường Internet của thế giới hiện tại sẽ là một vấn đề không dễ dàng cho việc tải bản đồ về máy người dùng, zoom to bản đồ để nhìn thấy một vị trí nào đó rõ ràng hơn, hoặc việc kéo rê bản đồ tới một vị trí khác, và v v Mỗi tác động của người dùng lên bản đồ ta đều phải tải lại nôi dung Web.Chỉ với một tấm ảnh khoản 100MB, thì việc tải đi, tải lại cũng đã chậm, và khó khăn, không thuận lợi cho người sử dụng
3.1.2 Cách giải quyết
Đầu tiên ta cần có một tấm ảnh bản đồ ngoài thực tế được lưu trong máy tính với chất lượng ảnh tốt, sau đó ta dùng một phần một nào đó cắt nhỏ tấm bản đồ ra thành tường ảnh có kích thước xác định trước và bằng nhau
Mỗi lần ta tải bản đồ về máy người dùng, ta chỉ cần tải những tấm ảnh nằm trong khung nhìn của người dùng Như vậy sẽ không cần tải hết một tấm ảnh khổng lồ, giảm đi rất nhiều lượng dữ liệu phải truyền và tăng tốc độ tương tác với người sử dụng
Việc cắt một tấm ảnh lớn thành những tấm ảnh nhỏ tuỳ thuộc vào mức độ zoom hiện tại, với một mức một zoom sẽ có một lượng ảnh xác định cần tải về máy