Mơ hình đề xuất

Một phần của tài liệu phát triển hệ thống hỗ trợ tìm đường trên các thiết bị di động có gps (Trang 46)

CHƯƠNG 4 XÂY DỰNG ỨNG DỤNG

4.3.Mơ hình đề xuất

Tham khảo một số ứng dụng về bản đồ trên các thiết bị di động, tôi đưa ra một ý tưởng để xây dựng một ứng dụng trợ giúp tìm đường cho người dùng, sử dụng hệ quản trị CSDL PostgreSQL quản lý các dữ liệu địa lý, và thực hiện các truy vấn của người dùng sau đó trả về kết quả.

Hình 17 - Mơ hình chương trình

Nhưng do thời gian thực hiện có hạn, do đó tôi đã sử dụng server của GoogleMaps để làm Server cung cấp các dữ liệu địa lý cũng như xử lý các truy vấn địa lý của mình.

Tơi đã đưa ra hai ý tưởng:

- Cài đặt một Server hổ trợ chạy Javascript, sau đó sẽ sử dụng thư viện GoogleAPI của Google thực hiện các truy vấn của client, và trả về kết quả cho client.

- Sever nhận yêu cầu từ mobile client, sau đó thực truy vấn tương ứng lên server của Google, lấy về dữ liệu dạng KML, phân tích file KML và trả về cho client.

Để đơn gian, tôi đã lựa chọn ý tưởng thứ 2, tạo một Script PHP ở server nhận request từ mobile client, sau đó gửi request tương ứng lên map server của Google lấy về kết quả ở dạng file kml, phân tích và gửi về kết quả cần thiết ở dạng XML cho mobile client.

Ứng dụng trên Mobile Wireless network, 3G, GPRS Server Hiển thị HTTP XML Parser Webservice CSDL - PostgreSQL Result SQLRequest

40

Google tạo ra định dạng KLM để hiển thị các dữ liệu địa lý trên các ứng dụng client của mình, ví dụ như Google Earth, Google Maps. KML sử dụng cậu trúc tuân theo chuẩn XML.

Hình 18 – File KML

Cấu trúc của file KML được chia ra làm các phần như sau:

• Phần mào đầu XML

• Mơ tả khơng gian tên KML • Mơ tả placemark

• Tên của placemark

• Khung nhìn của placemark

• Khung nhìn mặc định của placemark (trong trường hợp này nó được chuyển đổi bởi người dùng)

• Định nghĩa Style cho placemark, chi tiết nơi mà hình ảnh được

định vị và vị trí của nó.

• Chuyển đổi nếu các place mark được lấy ra

• Các loại tọa độ mà placemark có thể sử dụng • Vị trí trên placemark trên bề mặt quả đất

Để giảm bớt dử liệu truyền tải về client cũng như giảm độ phức tạp khi phân tích file KML được trả về. Việc phân tích file KML sẻ được thực hiện trên một server hổ trợ PHP – một ngôn ngử cung cấp xứ lý file XML dễ dàng, sau đó dữ liệu chọn lọc sẽ được gửi về cho mobile client dưới dạng file XML đơn giản hơn, loại bỏ các dữ liệu khơng cần thiết, có dạng:

<response>

<name>ði từ ðai học Quốc gia ñến ñường Trường Chinh</name>

<name>ði về hướng nam ñường Xuân Thủy</name> <description>ñi 3km</description>

<point lon='21.036030' lat='105.780490' /> <name>Rẽ phải ở ñường Láng</name>

41

<point lon='21.040160' lat='105.780890' /> <name>Tiếp tục lên ñường Trường Chinh</name> <description>ñi 1km</description>

<point lon='21.036030' lat='105.780490' /> <error>0</error>

</response>

4.4.Lựa chọn ngơn ngữ (adsbygoogle = window.adsbygoogle || []).push({});

Hiện nay có rất nhiều ngơn ngữ lập trình được sử dụng để lập trình ứng dụng cho các thiết bị di động, cho phép khai thác hầu hết các tính năng về đồ họa cũng như kết nối của thiết bị. Tuy nhiên để phát triển ứng dụng có thể sử dụng được trên nhiều thiết bị, thì J2ME là một lựa chọn tối ưu.

Kiến trúc của J2ME

Hình 19 – Kiến trúc của J2ME Giới thiệu các thành phần trong nền tảng J2ME:

KVM: Cơ chế thực thi của một ứng dụng Java là chạy trên một máy ảo java (java virtual machine). Máy ảo này có chức năng chuyển các mã dạng bytecode sang mã máy. Với các thiết bị dạng CLDC, Sun cài đặt một phiên bản thu nhỏ hơn dành cho các thiết bị này đó là KML. Chính nhờ tầng này, mà các ứng dụng có thể chạy trên các thiết bị khác nhau.

Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi trường phần mềm cho một dòng các thiết bị được phân loại bởi tập hợp các đặc tính, như: Kiểu và số lượng bộ nhớ, kiểu và tốc độ bộ vi xử lý, kiểu mạng kết nối.

Hiện nay Sun đã đưa ra 2 dạng Configuration:

- CLDC- Connected Limited Device Configuration (Cấu hình thiết bị kết nối giới hạn): được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (low-end).

- CDC- Connected Device Configuration (Cấu hình thiết bị kết nối): CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dịng thiết bị thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE. Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine) và tập hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho các ứng dụng J2ME. Tuy nhiên, Với các thiết bị cấp thấp, do hạn chế về tài nguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy ảo hổ trợ tất cả các tính năng như với máy ảo

42 của J2SE.

Định nghĩa về Profile: Profile mở rộng Configuration bằng cách thêm vào các class để bổ trợ các tính năng cho từng thiết bị chuyên biệt.

Mộ số profile phổ biến hiện nay:

- Mobile Information Device Profile (MIDP): profile này sẽ bổ sung các tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng … vào CLDC. Profile này được thiết kế chủ yếu để nhắm vào điện thọai di động với đặc tính là màn hình hiển thị hạn chế, dung lượng chứa có hạn. Do đó MIDP sẽ cung cấp một giao diện người dùng đơn giản và các tính năng mạng đơn giản dựa trên HTTP. Có thể nói MIDP là profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập trình Java trên các máy di động (Wireless Java).

- PDA Profile: tương tự MIDP, nhưng với thị trường là các máy PDA với màn hình và bộ nhớ lớn hơn.

- Foundation Profile: cho phép mở rộng các tính năng của CDC với phần lớn các thư viện của bộ Core Java2 1.3.

Ngồi ra cịn có Personal Basis Profile, Personal Profile, RMI Profile, Game Profile.

Hiện nay hầu hết các dòng điện thoại hổ trợ profile MIDP là phổ biến. Do đó tơi lựa chọn xây dựng ứng dụng cho các thiết bị hổ trợ profile MIDP.

4.5.Tìm hiểu cơ chế hoạt động của hệ thống GPS

GPS, hệ thống định vị toàn cầu, được cấu thành như một chịm sao (có nghĩa cấu tạo của một nhóm hay một hệ thống) của quỹ đạo vệ tinh mà, kết hợp với thiết bị ở mặt đất, cho phép người sử dụng xác định vị trí chính xác của họ bất kỳ lúc nào trên bề mặt trái đất.

Nguyên lý xác định toạ độ của hệ thống GPS và Glonass dựa trên công thức cơ bản:

Quãng_đường = Vận_tốc × Thời_gian.

Vệ tinh phát ra các tín hiệu bao gồm vị trí của chúng, thời điểm phát tín hiệu.

Máy thu tính tốn được khoảng cách từ các vệ tinh, giao điểm của các mặt cầu có tâm là các vệ tinh, bán kính (là thời gian tín hiệu đi từ vệ tinh đến máy thu nhân vận tốc sóng điện từ) là toạ độ điểm cần định vị.

Hệ thống NAVSTAR gồm 24 vệ tinh với 6 quỹ đạo bay. Các vệ tinh này hoạt động ở quỹ đạo có độ cao 20.200km ở góc nghiêng 55 độ và với thời gian 12/quỹ đạo.

43

Hình 20 – Hệ thống vệ tinh GPS

Hệ thống GLONASS gồm 24 vệ tinh, 8 vệ tinh cho một quỹ đạo bay gồm 3 quỹ đạo. Các vệ tinh hoạt động với quỹ đạo có độ cao 19,100 km orbits ở góc nghiêng 64.8 độ và 11 giờ 15 phút/ quỹ đạo.

4.5.1.Đo khoảng cách từ máy thu đến các vệ tinh

Máy thu có thể tính tốn được khoảng cách dựa vào thời gian cần thiết để tín hiệu từ vệ tinh truyền đến được máy thu. Vào một thời điểm nào đó, một vệ tinh bắt đầu truyền một chuỗi tín hiệu dài, được gọi là mã ngẫu nhiên giả. Máy thu cũng bắt đầu tạo ra chuỗi mã giống hệt vào cùng thời điểm. Khi tín hiệu từ vệ tinh truỳên đến máy thu, chuỗi tín hiệu đó sẽ bị trễ một chút so với chuỗi do máy thu tạo ra. Chiều dài khoảng thời gian trễ này chính là thời gian truyền của tín hiệu từ vệ tinh. Máy thu nhân thời gian này với tốc đọ ámh sáng để xác định quãng đường truyền tín hiệu. Giả sử rằng tín hiệu truyền trên đường thẳng, đây chính là khoảng cách từ vệ tinh đến máy thu. Để thực hiện phép đo này, chúng ta phải chắc chắn là đồng hồ trên vệ tinh và trong máy thu phải đồng bộ với nhau. Một sai số 1 mili giây sẽ dẫn đến sai số là 300 ngàn mét, một sai số rất lớn. Do đó, độ chính các tối thiểu cho các máy thu phải là cỡ nano giây (10-9s). Để có độ chính xác như vậy, phải trang bị đồng hồ nguyên tử cho khơng chỉ các vệ tinh mà cịn cho cả máy thu. Nhưng giá đồng hồ nguyên tử rất cao do đó phương pháp này thực sự khơng khả thi.

Có một phương pháp được đưa ra, đó là trên mỗi vệ tinh trang bị một đồng hồ nguyên tử, con trên thiết bị GPS vẫn trang bị đồng hồ bình thường. Trên lý thuyết thì 4 mặt cầu phải giao nhau tại 1 điểm. Nhưng do sai số đồng hồ bình thường, 4 mặt cầu đã khơng cho 1 giao điểm duy nhất. Vì thời gian sai số gây ra bởi đồng hồ trên máy thu là như nhau ∆t với tất cả các vệ tinh, máy thu có thể dễ dàng loại trừ sai số này bằng cách tính tốn ra lượng hiệu chỉnh cần thiết để 4 mặt cầu giao nhau tại một điểm. Dựa vào đó, máy thu tự động điều chỉnh đồng hồ cho đồng bộ với đồng hồ nguyên tử trên vệ

44 (adsbygoogle = window.adsbygoogle || []).push({});

tinh. Nhờ đó mà đồng hồ trên máy thu có độ chính xác gần như tương đương với đồng hồ nguyên tử.

4.5.2.Xác định vị trí hiện tại của các vệ tinh

Để xác định vị trị hiện tại của các vệ tinh trong bộ nhớ của mỗi máy thu đều có chứa một bảng tra vị trí tính tốn của tất cả các vệ tinh vào bất kỳ thời điểm nào gọi là Almanac. Tuy nhiên lực hút của mặt trăng, mặt trời có ảnh hưởng nhất định làm thay đổi quĩ đạo của các vệ tinh, do đó các vệ tinh liên tục được theo dõi để có thể xách định vị trí chính xác, các thơng số hiệu chỉnh sẽ được truyên đến các máy thu thơng qua tín hiệu từ vệ tinh.

Sau khi máy thu đã thu nhận và xử lý thông tin, máy sẽ cho biết vĩ độ, kinh độ và cao độ của vị trí hiện thời. Để làm cho việc định vị thân thiện hơn, hầu hết các máy thu đều thể hiện các thông tin này dưới dạng các điểm trên bản đồ được chứa sẵn trong máy. Trong J2ME thơng tin này có thể lấy được bởi lớp LocationProvider.

4.6.Thử nghiệm ứng dụng

4.6.1.Các lớp chính của chương trình

- Gmidlet – Là lớp chương trình chính, cung cấp đối tượng hiện thị. Tạo đối tượng GoogleSimpleCanvas để hiển thị bản đồ.

- GoogleSimpleCanvas – Lớp quan trọng nhất: thừa kết từ lớp Canvas, thực hiện truy xuất đến server GoogleMaps lấy về bản đồ ở khu vực mong muốn dưới dạng ảnh .PNG. Thực hiện nắm bắt các tương tác người dùng và cung cấp kết quả: Yêu cầu zoom, move bản đồ, tìm đường.

- Point – Là lớp lưu trữ tọa độ của các ngã rẻ khi thực hiện tìm đường - getDirections – Lớp thực hiện kết nối đến server, gửi yêu cầu tìm đường, và nhận về file Xml chứa kết quả. Phân tích file Xml lấy ra các điểm đi qua của đường, lưu vào vector Path, và hiển thị đường đi lên bản đồ.

- Retriever: Thực hiện lấy thông tin GPS của người dùng.

4.6.2.Screenshot của chương trình

Khi khởi động chương trình, nếu máy tích hợp GPS và người dùng cho phép sử dụng GPS thì bản đồ sẻ được đặt trung tâm tại vị trí người dùng đang đứng. Nếu khơng vị trí trung tâm sẻ là trung tâm của Hà Nội

45

a - Có GPS b - Khơng có GPS

Hình 21 – Giao diện chương trình ban đầu

Điểm màu xanh hiển thị vị trí hiện tại của người dùng (nếu thiết bị có hổ trợ GPS).

46 Hình 22 – Hướng dẫn sử dụng

- 1. Bỏ đường đi: chương trình vẽ đường đi tìm thấy cho người dùng lên bản đồ, khi người dùng không muốn hiển thị đường đi này nữa, chức năng bỏ đường đi cho phép xóa bỏ đường đi này.

- 2. Hướng dẫn: khi đã tìm thấy đường đi cho người dùng, các thông tin hướng dẫn đường đi sẽ được hiển thị ở Form hướng dẫn. - 3. Tìm đường: Hiển thị Form tìm đường để người dùng có thể nhập thơng tin tìm đường

- 4.Vị trí: cho phép xác định lại vị trí người dùng thơng qua GPS của máy.

- Người dùng có thể zoom, di chuyển bản đồ bằng phím 1, 3 và các phím mũi tên

Khi người dùng chọn chức năng tìm đường, khung hiển thị cho phép người dùng nhập thơn tin tìm đường. Điểm bắt đầu có thể là vị trí hiện tại của người dùng, hoặc là một điểm bất kì do người dùng lựa chọn.

Hình 23 – Form tìm đường

- Người dùng có thể sử dụng vị trí hiện tại, hoặc nhập vào thơng tin vị trí ban đâu.

- Chương trình cho phép người dùng lựa chọn 1 trong hai loại phương tiện đi bộ hoặc đi bằng ơ tơ.

47

Sau khi tìm đường thành cơng, giao diện trả lại đường đi, được vẽ trên bản đồ:

Hình 24 – Form kết quả

- Kết quả tìm đường đi từ ĐH QG Hà Nội đến ĐH BK Hà Nội, với phương tiện : đi bộ.

- Đường đi được vẽ lên bản đồ. (adsbygoogle = window.adsbygoogle || []).push({});

- Thông tin về khoảng cách đường đi, thời gian đi được hiễn thị ở một ticker ở phía dưới màn hình.

Người dùng xem chi tiết hướng dẫn đường đi tại Form hướng dẫn của chương trình.

Hình 25 – Form hướng dẫn lộ trình

- Hiễn thị hướng dẫn đi đường cho người dùng

- Độ dài đường đi, chổ rẽ

48

Khi người dùng lựa chọn tìm đường từ vị trí hiện tại, chương trình sẻ sử dụng thơng tin của GPS để thực hiện tìm đường. Hiện tại chương trình chỉ cung cấp hướng dẫn ở ngôn ngữ tiếng anh với chức năng này.

Hình 26 – Tìm đường dựa trên GPS

Hướng dẫn đi đường cho khách hàng ở hai thời điểm, khi vị trí của người dùng thay đổi .

Hình 27 – chỉ dẫn lộ trình với GPS

- Mỗi 2 phút, chương trình sẽ cập nhật lại đường đi cho người dùng, và thông báo về đướng sắp phải đi, cũng như độ dài quảng đường cịn lại. Thơng tin được hiện thị ở ticker, và alert thông báo.

49

4.7.Nhận xét

Như kết quả ở trên, ta thấy ứng dụng đã cung cấp khả đầy đủ thông tin về bản đổ cũng như là chức năng tìm đường, hướng dẫn lộ trình cho người dùng. Các thông tin về hướng dẫn lội trình được cung cấp khá chi tiêt, cho phép người dùng có thể xác định đường đi dễ dàng.

Với trường hợp tìm đường đi có xác định điểm đầu và điểm cuối, thơng tin được hiển thị bởi đường đi được vẽ trên bản đồ, cho phép người dùng dễ hình dung về đường đi. Các thông tin về đi bao nhiêu m hay km, rẽ ở đâu, về hướng nào đều được cung cấp đầy đủ bằng tiếng việt.

Với trường hợp tìm đường đi sử dụng điểm đầu là vị trí hiện tại thì khoảng 2 phút, chương trình lại hiển thị hướng dẫn lộ trình cho người dùng. Tuy nhiên ngôn ngữ được sử dụng chỉ mới bằng tiếng anh.

Vì sử dụng dữ liệu cung cấp từ GoogleMaps, do đó kết quả trả về khơng thực sự được tốt.

50

CHƯƠNG 5.KẾT LUẬN 5.1.Kết quả đạt được 5.1.Kết quả đạt được

Tìm hiểu về hệ thống thơng tin địa lý, đã cho tơi một cái nhìn tổng quan khá chi tiết về một hệ thống GIS. Các phương pháp lưu trữ dữ liệu để phù hợp với các đối

Một phần của tài liệu phát triển hệ thống hỗ trợ tìm đường trên các thiết bị di động có gps (Trang 46)