CHƯƠNG 4. THIẾT KẾ VÀ VẬN HÀNH HỆ THỐNG
4.3 Thiết kế các chức năng của hệ thống
4.3.3 Chức năng truy vấn thông tin
Menu sidebar chứa các form tìm kiếm truy vấn thông tin thửa đất theo tên đường, số tờ, số thửa, chủ sở hữu, mục đích sử dụng đất, giá đất…Khi người
dùng nhập (hoặc chọn) các thông tin cần tìm kiếm vào các ô điều kiện, kết quả là các đối tượng thỏa mãn điều kiện do người dùng đưa vào được liệt kê ở khung bên trái, các đối tượng kết quả được vẽ lên khung bản đồ ở bên phải (hình 4.6).
Mô tả quá trình tìm kiếm tổng quát (xem hình 4.7):
- Người sử dụng chọn hoặc nhập thông tin từ các form tìm kiếm.
Hình 4.6 Menu sidebar chứa các form truy vấn thông tin
Menu Sidebar
Kết quả
- Nhấn nút tìm kiếm.
- Dữ liệu người dùng nhập vào được client đóng gói gửi về server qua phương thức GET.
- Tại server, server kiểm tra dữ liệu được gửi, nếu có yêu cầu lấy dữ liệu trong database thì gửi yêu cầu dữ liệu về database, database rút trích dữ liệu gửi lại server (thực hiện dưới sự hỗ trợ của ngôn ngữ PHP), dữ liệu
tọa độ không gian của đối tượng cũng được gửi kèm theo thông tin thuộc tính (dưới dạng WKT). Tại server một lần nữa đóng gói dữ liệu gửi về client (dưới dạng json - JavaScript Object Notation là cú pháp dùng để lưu trữ và trao đổi thông tin văn bản giống như XML nhưng nhỏ hơn).
- Tại client, dưới sự hỗ trợ của ngôn ngữ javascript, dữ liệu trong json được xuất ra sidebar hiển thị trong phần kết quả tìm kiếm, mỗi đối tượng kết quả được gắn với một link liên kết đến vị trí đối tượng đó trên bản đồ.
Các chức năng tìm kiếm thông tin được viết bằng ngôn ngữ PHP kết hợp với Ajax (Asynchronous Javasript and XML), bộ công cụ cho phép tăng tốc độ duyệt web, hoạt động tìm kiếm được thực hiện ngầm bên dưới client, trả về client kết quả tìm kiếm mà không cần tải lại toàn bộ nội dung trang web. Đoạn mã chương
Hình 4.7 Sơ đồ xử lý yêu cầu truy vấn tìm kiếm thông tin
Server Phân tích và xử lý yêu cầu
Database
form request
Response (XML)
Client json Nhập nội dung tìm kiếm và hiển
thị kết quả
trình như sau:
- Dòng 5 – 29: thẻ div định dạng form tìm kiếm.
- Dòng 7, 28: mở đầu và kết thúc form.
- Dòng 8: nơi người dùng nhập thông tin tìm kiếm (tên đường giao thông).
- Dòng 12 – 24: thẻ <select></select> thể hiện các phường được lựa chọn theo kiểu danh sách.
- Dòng 26: thẻ <input type =“submit”> xác nhận việc truyền dữ liệu đi, đồng thời gọi hàm searchInStreet() bằng sự kiện onclick.
Giải thuật hàm searchInStreet() được thể hiện qua sơ đồ hình 4.8.
BẮT ĐẦU
Lấy dữ liệu người dùng nhập vào
Tên đường Tên phường
Tạo một đường dẫn url đến trang truy vấn và đính kèm dữ liệu do người dùng nhập
Sử dụng hàm Openlayers.LoadURL tải
trang truy vấn
Tải thành công
- Trả về danh sách kết quả tìm kiếm bao gồm tên và tọa độ không gian của đối tượng dạng text (WKT).
- Gọi hàm getResult.
KẾT THÚC
Hình 4.8 Sơ đồ giải thuật hàm searchInStreet
no yes
Hàm searchInStreet() được viết như sau:
+ Dòng 4, 5: khai báo biến và lấy giá trị người dùng nhập gán vào cho biến.
+ Dòng 6: khai báo biến url với nội dung yêu cầu tìm thông tin về server.
+ Dòng 7: gọi hàm loadURL từ thư viện Openlayers.
+ Dòng 8: trả kết quả về cho hàm seachInStreet.
Tham số trong hàm loadURL có tham chiếu đến hàm getResult3, là hàm lấy kết quả truy vấn trả về từ server, sơ đồ giải thuật hàm getResult3 được mô tả như hình 4.9.
Hình 4.9 Sơ đồ giải thuật hàm getResult3
yes BẮT ĐẦU
Chuyển kết quả truy vấn từ dạng text về dạng Javascript Object
Gỡ bỏ các đối tượng cũ trên bản đồ
Tạo biến i = 0, i <= tổng số đối tượng kết quả, đưa đối tượng thứ i vào biến danh sách đồng thời
vẽ đối tượng thứ i đó lên bản đồ, i tăng lên 1
KẾT THÚC Kết quả
truy vấn
no yes
Độ dài kết quả ≠ 0
no
Thông báo không tìm thấy dữ liệu
Tạo biến chứa danh sách đối tượng mới
i > tổng số đối tượng
kết quả
Hàm getResult3 được viết như sau [14]:
+ Dòng 11: đặt tên hàm và biến của hàm là kết quả truy vấn từ server.
+ Dòng 13: chuyển kết quả truy vấn về dạng Javascript Object.
+ Dòng 16: gỡ bỏ kết quả truy vấn cũ (nếu có).
+ Dòng 21: truyền vào tọa độ không gian của đối tượng mới bằng hàm parseWKT3, vẽ lại các đối tượng kết quả lên bản đồ.
+ Dòng 23 – 25: xuất kết quả truy vấn ra khung side bar.
+ Dòng 27– 34: gắn liên kết cho đối tượng trên danh sách với tọa độ của đối tượng trên bản đồ, hiệu chỉnh mức độ phóng to của các đối tượng kết quả.
Sơ đồ giải thuật hàm parseWKT3 được mô tả qua hình 4.10.
Hàm parseWKT được viết như sau [14]: