Ngày nay, ngoài việc phát triển các ứng dụng trên server, thì các thiết bị di động cũng đƣợc quan tâm và phát triển khá mạnh mẽ. Tuy nhiên phần mềm của luận văn đƣợc lập trình hoàn toàn ở phía server, sử dụng bộ mapscript của phần mềm mã nguồn mở mapserver để xây dựng ứng dụng. Mapscript hỗ trợ các loại ngôn ngữ: PHP, Python, Perl, Ruby, Java, và .NET. Mapscript phải có kèm theo phần mềm mapserver để hoạt động.
Vì vậy để phát triển sản phẩm ứng dụng trên thiết bị di động, cho phép thiết bị điện thoại di động truy cập và sử dụng bản đồ nhƣ đối với máy tính thông thƣờng thì khi đó các thiết bị di động đóng vai trò nhƣ là máy khách. Và ứng dụng cần phải đóng gói dựa trên nền tảng IIS 7.
3.3. Xây dựng Website dự báo thời tiết 3.3.1. Kiến trúc hệ thống
Hệ thống đƣợc thiết kế với 3 tầng khác nhau nhƣ hình 3.5
Hình 3.6. Kiến trúc hệ thống
- Tầng Client: đƣợc xây dựng bằng JavaScript, HTML và DHTML, thực
hiện nhiệm vụ xử lý các thao tác, lƣu trữ thông tin ứng với từng ngƣời sử Client Layer Máy tính cá nhân Web browse (HTML+JavaScript+DHTML) Application Layer Web Sever
Web Form + MapServer
Data Layer
CSDL quan hệ
dụng, đảm nhận vai trò trung gian, truyền nhận dữ liệu giữa ngƣời sử dụng với Websever.
- Tầng ứng dụng (Applicaton Layer) chia làm 2 phần: WebForm và
MapServer. Cả hai đều đƣợc phát triển dựa trên công nghệ .NET (ASP.NET)
o WebForm: đảm nhận trách nhiệm phát sinh giao diện và các đoạn script để tƣơng tác với client, đóng vai trò trung gian giữa client và MapServer, nó sẽ gửi yêu cầu của client tới MapServer và nhận dữ liệu trả ngƣợc về cho client.
o MapServer: xử lý các thao tác về phát sinh bản đồ, phóng to, thu nhỏ, dịch chuyển, tra cứu thông tin trên bản đồ. Nó là thành phần trung gian giữa WebForm và tầng cơ sở dữ liệu, tiếp nhận yêu cầu từ WebForm rồi gọi xuống tầng cơ sở dữ liệu để rút trích thông tin, sau đó tiến hành xử lý rồi trả kết quả về cho WebForm.
- Tầng cơ sở dữ liệu: đóng vai trò trung gian giữa tầng ứng dụng với cơ sở
dữ liệu.
3.3.2. Tổ chức dữ liệu dự báo
Sơ đồ logic:
Hình 3.7. Sơ đồ Logic dữ liệu
Trong sơ đồ logic trên thì quan hệ giữa bảng thông tin dự báo và các bảng khác là quan hệ một nhiều, tức là khi có một sự kiện cần phải các thông tin thì chƣơng trình sẽ truy vấn vào bảng thông tin dự báo trƣớc, sau đó dựa vào mã buổi để xác định các thông tin còn lại nhƣ nhiệt độ, độ ẩm,…. đặc biệt là các khóa khác. Từ các khóa này tiến hành truy vấn vào các bảng khác để lấy ra các thông tin cụ thể nhƣ tên buổi, tên khu vực,… để hiển thị lên bản đồ.
Danh sách các bảng:
Bộ dữ liệu này bao gồm các bảng sau: 1- Tỉnh - thành phố
2- Khu vực 3- Các buổi 4- Loại thời tiết 5- Thông tin dự báo
Bảng 3.1. Danh sách các bảng dữ liệu
STT Tên Ý nghĩa Ghi chú
1 Tinh_TP Bảng lƣu trữ thông tin các tỉnh, thành phố
2 KhuVuc Bảng lƣu trữ các khu vực của cả nƣớc
3 Cac_Buoi Bảng lƣu trữ các buổi trong ngày và cả ngày 4 LoaiThoiTiet Bảng lƣu trữ thông tin
phân loại thời tiết
5 ThongTin_DuBao Bảng lƣu trữ thông tin để dự báo thời tiết
Chỉ 1 số thông tin về thời tiết đƣợc quan tâm, không cung cấp đầy đủ các yêu cầu về khí tƣợng thủy văn
Mô tả chi tiết các bảng
- Tên: ThongTin_DuBao
Ý nghĩa: Thông tin dự báo
Bảng 3.2. Chi tiết bảng ThongTin_DuBao
TT Tên cột Kiểu Ràng buộc Ghi chú
1 Ma_buoi Integer Khóa chính 2 Matinh_TP Varchar(3) Khóa chính 3 MaLoaiThoiTiet Integer Khóa chính 4 MaKhuVuc Varchar(3) Khóa chính
5 Ngày Date 6 NhietdoMax Integer 7 NhietdoMin Integer 8 DoAmTB Varchar(10) 9 KhiApTB Varchar(10) 10 SucGio Varchar(10) 11 Luong_Mua Varchar(20) 12 Sukien_Dacbiet Varchar(256)
13 MoTa Varchar(256) Mô tả thông tin thời tiết bằng lời
- Tên: LoaiThoiTiet
o Ý nghĩa: Loại thời tiết
Bảng 3.3. Chi tiết bảng LoaiThoiTiet
STT Tên cột Kiểu Ràng buộc Ghi chú
1 MaLoaiThoiTiet Integer Khóa chính 1. Nắng
2. Nắng, nhiều mây 3. Mƣa
4. Mƣa dông
5. Mƣa rào và dông 6. Mây thay đổi 7. Ít mây
8. Nhiều mây 2 Ten_Loai Varchar(30)
3 HinhAnh Varchar(30) Chứa tên của các file ảnh tƣơng ứng với từng loại thời tiết
- Tên: Cac_Buoi
o Ý nghĩa: Tên các buổi trong ngày
Bảng 3.4. Chi tiết bảng Cac_Buoi
STT Tên cột Kiểu Ràng buộc Ghi chú
1 Ma_Buoi Integer Khóa chính Ma_Buoi chỉ nhận các giá trị sau: 0: Cả ngày 1: Buổi sáng 2. Buổi trƣa. 3. Buổi chiều 2 Ten_Buoi Varchar(10) - Tên: Khu_Vuc Ý nghĩa: Khu vực
Bảng 3.5. Chi tiết bảng Khu_Vuc
STT Tên cột Kiểu Ràng buộc Ghi chú
2 MaKhuVuc Varchar(3) Khóa chính 3 TenKhuVuc Varchar(100)
- Tên: Tinh_TP
Ý nghĩa: Tỉnh - Thành phố
Bảng 3.6. Chi tiết bảng Tinh_TP
STT Tên cột Kiểu Ràng buộc Ghi chú
1 MaTinh_TP Varchar(3) Khóa chính 2 TenTinh_TP Varchar(30)
5 MaKhuVuc Varchar(3)
3.3.3. Xây dựng biểu đồ Use - case
- Duyệt bản đồ.
Di chuyển bản đồ.
Phóng to, thu nhỏ bản đồ
Truy vấn thông tin trên bản đồ
Tìm vị trí một tỉnh, thành phố, địa danh trên bản đồ.
- Xem thời tiết các ngày trƣớc:
Xem thời tiết trong ngày và một vài ngày trƣớc.
Xem thời tiết các ngày trước
User
Thống kê tình hình bão, lũ trên các tỉnh Phóng to, thu nhỏ bản đồ
Di chuyển bản đồ
Tìm vị trí tỉnh, tp trên bản đồ
Hình 3.8. Biểu đồ Use – case
- Di chuyển bản đồ.
Mô tả: Use-case này mô tả cách thức ngƣời dùng di chuyển bản đồ để xem vùng không gian khác trên bản đồ
Luồng các sự kiện:
Luồng sự kiện chính: Use - case này bắt đầu khi ngƣời dùng muốn dịch chuyển bản đồ để xem vùng không gian khác trên bản đồ.
2. Hệ thống ghi nhận tình trạng nhấn chuột, thay đổi trạng thái button sang trạng thái đậm. Chuyển trạng thái các button nào đang ở trạng thái đậm vì đƣợc nhấn chuột trƣớc đó về trạng thái bình thƣờng. 3. Ngƣời dùng nhấn chuột lên bản đồ.
4. Hệ thống xác định vị trí nhấn chuột trên bản đồ, dịch chuyển bản đồ theo chiều ngƣợc lại
Các sự kiện khác: không có.
Post-condition: Nếu Use Case thực hiện thành công, hệ thống sẽ hiển thị vùng không gian bản đồ mới ra cho ngƣời dùng, ngƣợc lại trạng thái bản đồ không thay đổi.
- Phóng to, thu nhỏ bản đồ
Mô tả: Use-case này mô tả cách thức ngƣời dùng phóng to hay thu nhỏ bản đồ hiển thị.
Luồng các sự kiện
Luồng sự kiện chính: Use-case này bắt đầu khi có ngƣời dùng muốn phóng to, thu nhỏ bản đồ hiển thị.
1. Ngƣời dùng nhấn chuột lên button ZoomIn hay ZoomOut 2. Hệ thống xác định loại button đang chọn, tô đậm button
này để ngƣời dùng biết button đã đƣợc chọn. 3. Ngƣời dùng nhấn chuột lên trên bản đồ.
4. Hệ thống xác định vị trí nhấn chuột, sau đó sẽ tùy theo button đƣợc chọn là ZoomIn hay ZoomOut mà hệ thống sẽ phóng to hay thu nhỏ bản đồ tại vị trí đƣợc nhấn chuột. 5. Ngƣời dùng tiếp tục nhấn chuột lên bản đồ để tiếp tục
phóng to hay thu nhỏ bản đồ. Các luồng sự kiện khác: không có.
Post - conditions: Nếu use case thực hiện thành công hệ thống sẽ hiển thị vùng không gian bản đồ đƣợc phóng to hay thu nhỏ ra cho ngƣời dùng, ngƣợc lại trạng thái bản đồ không gian thay đổi.
- Xem thông tin thời tiết các ngày trước
Mô tả: Use-case này cho phép một ngƣời dùng tìm kiếm thông tin thời tiết. Ngƣời dùng có thể tìm kiếm thông tin trong quá khứ hay trong tƣơng lai tùy thuộc vào thời gian tìm kiếm ngƣời dùng chọn lựa
Các luồng sự kiện:
Luồng sự kiện chính: Use case này bắt đầu khi ngƣời dùng muốn tim kiếm thông tin thời tiết
1. Ngƣời dùng xác định ngày, tháng, năm cần tìm 2. Ngƣời dùng nhấn chuột vào button tìm kiếm
3. Hệ thống sẽ xác định thời gian, sau đó hiển thị kết quả ra màn hình
1. Ngƣời dùng chọn thời gian tìm kiếm quá xa so với hiện tại (cách đây quá nhiều năm) hệ thống không tìm thông tin thời tiết, sẽ xuất hiện thông báo tới ngƣời dùng
2. Ngƣời dùng không chọn thời gian tìm kiếm, hệ thống sẽ xuất hiện thông báo tới ngƣời dùng
Post - conditions: Nếu use case thực hiện thành công, thông tin thời tiết cần tìm sẽ đƣợc hiển thị ra cho ngƣời dùng, ngƣợc lại hệ thống sẽ xuất thông báo tới ngƣời dùng.
- Tìm vị trí một tỉnh, thành phố, khu vực trên bản đồ
Mô tả: Use-case này mô tả cách ngƣời dùng tìm vị trí của một tỉnh, thành phố hay khu vực trên bản đồ. Bản đồ sẽ dịch chuyển tới vùng không gian chứa tỉnh đó cho ngƣời dùng, đồng thời phóng to một kích thƣớc cố định để nhìn rõ ranh giới của tỉnh, thành phố hay khu vực này.
Luồng các sự kiện;
Luồng sự kiện chính: Use case này bắt đầu khi ngƣời dùng muốn tìm vị trí của một tỉnh, thành phố hay khu vực trên bản đồ. Khi đó tỉnh đƣợc tìm kiếm sẽ đƣợc tô màu hiển thị.
1. Ngƣời dùng chọn tên tỉnh, thành phố hay khu vực cần tìm trong danh sách chứa các tỉnh, thành phố hay khu vực.
2. Chƣơng trình xử lý và dịch chuyển bản đồ đến vùng không gian chứa tỉnh, thành phố hay khu vực vừa chọn, đồng thời phóng to bản đồ một cách vừa phải để ngƣời dùng tiện quan sát.
- Các luồng sự kiện khác: Không có
Post - conditions: Nếu use case thực hiện thành công vùng không gian mới của bản đồ chứa tỉnh, thành phố hay khu vực sẽ đƣợc thể hiện, ngƣợc lại trạng thái bản đồ không thay đổi.
- Thống kê tình hình bão, lũ trên các tỉnh
Mô tả: Khi ngƣời dùng bấm nút “Thống kê”, hệ thống sẽ trả về kết quả các tỉnh có nguy cơ bị bão lũ bằng cách tô màu khác biệt cho các tỉnh đó.
Tiêu chí để xác định khả năng xảy ra lũ lụt: xác định khả năng lũ lụt chỉ đơn giản là thông tin về mức độ mƣa, nắng do module RSS của chƣơng trình thu thập đƣợc từ trang cung cấp thông tin thời tiết miễn phí MSN. Biểu tƣợng mƣa, mây và sấm chớp có tên hình ảnh là 4.gif đƣợc dùng làm tiêu chí xác định khả năng xảy ra lũ lụt.
Quy trình thực hiện của đoạn chƣơng trình thực hiện chức năng dự báo lũ lụt.
1. Thực hiện truy vấn bảng thông tin dự báo trong cơ sở dữ liệu để kiểm tra trong khoảng thời gian 3 ngày (từ hôm nay đến ngày kia) tên của các tỉnh nào, có mã loại thời tiết bằng 4. Nghĩa là trong 3
ngày đó, các tỉnh này có thông tin dự báo là sẽ có xảy ra hiện tƣợng mƣa giông và sấm chớp, hiện tƣợng đó đƣợc mô tả bằng hình ảnh: .
2. Với danh sách các tỉnh thành có khả năng lũ lụt trên, chƣơng trình tạo ra xâu expression (xâu biểu thức) là điều kiện để lọc ra các tỉnh có khả năng lũ lụt. Mapserver truy vấn dữ liệu không gian, sau đó vẽ bản đồ dựa vào kết quả truy vấn đó. Kết quả truy vấn đã đƣợc lọc bởi các xâu biểu thức.
3. Để thực hiện vẽ một tầng lên bản đồ, chƣơng trình sẽ đọc file thoitietVN.map, trong thƣ mục của phần mềm Mapserver (C:\ms4w\mapserver\mapfiles), file này dùng để định nghĩa cách phần mềm mapserver vẽ bản đồ nhƣ thế nào. Trong file thoitietVN.map, có định nghĩa 1 layer, trong layer này có 3 class: lần lƣợt có tên là luongmuabao, timkiem và binhthuong. Đoạn chƣơng trình dùng class luongmuabao trong file thoitietVN.map để vẽ ra các tỉnh đƣợc dự báo có khả năng lũ lụt.
3.3.4. Biểu đồ tuần tự
- Tìm kiếm thông tin trên bản đồ
Người dùng
Tìm kiếm tỉnh
Hiển thị
yêu cầu tìm kiếm
yêu cầu nhập tên tỉnh
Truy vấn thời tiết
(ngày)
yêu cầu tìm kiếm theo ngày
Chọn ngày
yêu cầu hiển thị tỉnh
Trả thông tin về tỉnh
yêu cầu hiển thị thông tin dự báo thời tiết
trả thông tin dự báo thời tiết
- Mô tả:
Tìm kiếm tên tỉnh: Ngƣời dùng nhập tên tỉnh vào form tìm kiếm kết quả trả về vùng không gian chứa tỉnh và hiển thị thông tin về thời tiết của tỉnh đó.
Truy vấn thời tiết theo ngày (trong quá khứ): Ngƣời dùng nhấp chọn ngày cần tìm, hệ thống sẽ hiển thị thông tin thời tiết các tỉnh trong ngày hôm đó.
- Thống kê tỉnh có nguy cơ về bão, lũ
Người dùng
Thống kê
Hiển thị yêu cầu thống kê tỉnh có nguy cơ bão lũ
Kích hoạt thống kê
Trả thông tin thống kê các tỉnh nguy cơ bão, lũ
yêu cầu hiện thông tin
Reset
Hình 3.10. Biểu đồ tuần tự chức năng thống kê tình hình bão, lũ
- Mô tả:
Ngƣời dùng yêu cầu thông tin về cảnh báo nguy cơ bão, lũ. Hệ thống tổng hợp thông tin từ đài quan sát rồi xử lý thông tin đƣa ra các tỉnh có nguy cơ xảy ra bão, lũ.
3.3.5. Biểu đồ lớp
+get tentinh()
Chi tiết tìm kiếm tỉnh
+get thoitiet()
Chi tiet tìm thời tiết theo ngày
+get thongke() +get reset() Thống kê * 1 1 1 1 1 +hinhanh() -MaTinh_TP : Char -TenTinh_TP : Char -MaKhuVuc : Char Biểu đồ +hienthi() -Mabuoi : Integer -Tenbuoi : Char -Tenloai : Char -NhietdoMax : Integer -NhietdoMin : Integer -DoAmTB : Char -KhiApTB : Char -SucGio : Char -Luong_Mua : Char Thời tiết * 1 * 1 1 1 Hình 3.11. Biểu đồ lớp - Mô tả:
Class Biểu đồ cho biết thông tin: Mã tỉnh, thành phố
Tên tỉnh, thành phố Mã khu vực
Hiển thị hình ảnh bản đồ
Class Thời tiết cho biết thông tin:
Mã buổi Tên buổi
Tên loại thời tiết Nhiệt độ cao nhất Nhiệt độ thấp nhất Sức gió
Lƣợng mƣa Độ ẩm trung bình Áp suất trung bình
Class Chi tiết tìm kiếm tỉnh:
Trả về kết quả hình ảnh của tỉnh đó trên bản đồ
Class Chi tiết tìm thời tiết theo ngày:
Trả về kết quả thời tiết các tỉnh ngày tìm kiếm
Class Thống kê:
Thống kê tình hình thời tiết các tỉnh và hiển thị các tỉnh có nguy cơ bão, lũ
Reset để trả bản đồ về chế độ hiển thị thông tin thời tiết thông thƣờng.
3.4. Thiết kế một số màn hình chính
Hình 3.12. Giao diện chính bản đồ dự báo thời tiết
Hình 3.14. Giao diện truy vấn dự theo lớp tỉnh có hiển thị thông tin dự báo
KẾT LUẬN VÀ ĐỊNH HƢỚNG PHÁT TRIỂN KẾT LUẬN
Cơ sở thực tiễn về nhu cầu phát triển bản đồ trực tuyến từ cả hai phía: phía ngƣời sử dụng và phía những ngƣời tạo lập bản đồ đã đƣợc khảo sát và phân tích để thấy rõ sự cần thiết để hình thành và phát triển công nghệ bản đồ trực tuyến. Trọng tâm nghiên cứu của luận văn gồm 2 phần chính đƣợc trình bày trong chƣơng 2 và chƣơng 3.
Đó là tìm hiểu đƣợc các vấn đề sau:
- Các vấn đề về công nghệ mã nguồn mở vào việc xây dựng WebGIS: WebServer, MapServer và hệ quản trị cơ sở dữ liệu PostgreSQL
- ứng dụng phần mềm mã nguồn mở để biên tập bản đồ trực tuyến, xây dựng các chức năng tìm kiếm vị trí một tỉnh trên bản đồ, dựa vào các thông tin về thời tiết Việt Nam trên Internet cập nhật về trang web xử lý thông tin thu đƣợc đƣa ra thông tin về nhiệt độ, độ ẩm, sức gió, … trong 3 ngày tiếp theo; sau đó tổng hợp thông tin đƣa ra cảnh báo về bão, lũ trên