Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
3.2 THIẾT KẾ
3.2.1.2 Mơ hình dữ liệu vật lý (PDM)
3.2.1.3 Từ điển dữ liệu
Bảng 3.2. Dữ liệu tiện nghi
STT Tên thuộc tính Kiểu dữ liệu Mơ tả
1 MaTN Varchar (15) Mã tiện nghi
2 TenTN Nvarchar (200) Tên tiện nghi
Bảng 3.3. Dữ liệu phường xã
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 MaPX Varchar (15) Mã phường xã
2 MaTP Varchar (15) Mã thành phố
3 ShapePX Varchar (50) Dạng hình học của đối tượng 4 TenPX Nvarchar (200) Tên phường xã
Bảng 3.4. Dữ liệu đường
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 MaDuong Varchar (15) Mã đường
2 MaLD Varchar (15) Mã loại đường
3 TenDuong Nvarchar (200) Tên đường
4 ShapeD Varchar (50) Dạng hình học của đối tượng
Bảng 3.5. Dữ liệu user (người dùng)
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 ID Varchar (15) Mã người dùng
2 MaLTK Varchar (50) Mã loại tài khoản 3 TenTK Varchar (200) Tên tài khoản
4 MatKhau Varchar (100) Mật khẩu 5 HoTen Nvarchar (200) Họ và tên người dùng
6 DiaChi Nvarchar (250) Địa chỉ
7 SDT Char (11) Số điện thoại
8 QuyenTK Bit Quyền của tài khoản
9 Avatar Nvarchar (200) Hình đại diện
10 Gtinh Nvarchar (5) Giới tính
Bảng 3.6. Dữ liệu loại tài khoản
STT Tên thuộc tính Kiểu dữ liệu Mơ tả
1 MaLTK Varchar (50) Mã loại tài khoản 2 TenLTK Nvarchar (100) Tên loại tài khoản
Bảng 3.7. Dữ liệu nhà trọ
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 MaNT Varchar (15) Mã nhà trọ
2 ID Varchar (15) Mã tài khoản người dùng
3 MaDuong Varchar (15) Mã đường
4 MaTN Varchar (15) Mã tiện nghi
7 ShapeNT Varchar (50) Dạng hình học của đối tượng 8 XNT Decimal (12,6) Tọa độ X của nhà trọ 9 YNT Decimal (12,6) Tọa độ Y của nhà trọ
10 DienTich Int Diện tích
11 SoNguoiO Nvarchar (100) Số người ở tối đa 12 NhaVeSinh Nvarchar (100) Nhà vệ sinh
13 GiaPhong Int Giá phòng
14 TienCoc Int Tiền cọc
15 TienDien Int Tiền điện
16 TienNuoc Int Tiền nước
17 GioGiac Nvarchar (200) Giờ giấc
18 SLPhongTrong Int Số lượng phòng trống
Bảng 3.8. Dữ liệu loại nhà trọ
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 MaLNT Varchar (15) Mã loại nhà trọ 2 TenLNT Nvarchar (200) Tên loại nhà trọ
Bảng 3.9. Dữ liệu trường học
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 MaTR Varchar (15) Mã trường
2 MaDuong Varchar (15) Mã đường
3 MaPX Varchar (15) Mã phường xã
4 XTR Decimal (12,6) Tọa độ X của trường 5 YTR Decimal (12,6) Tọa độ Y của trường
6 TenTR Nvarchar (200) Tên trường
7 SoNhaTR Nvarchar (200) Số nhà
8 ShapeTR Varchar (50) Dạng hình học của đối tượng
Bảng 3.10. Dữ liệu loại tiện ích
STT Tên thuộc tính Kiểu dữ liệu Mơ tả
1 MaLTI Varchar (15) Mã tiện ích
2 TenLTI Nvarchar (150) Tên loại tiện ích
Bảng 3.11. Dữ liệu tiện ích
STT Tên thuộc tính Kiểu dữ liệu Mơ tả
1 MaTienIch Varchar (15) Mã tiện ích 2 MaLTI Varchar (15) Mã loại tiện ích
3 MaDuong Varchar (15) Mã đường
4 MaPX Varchar (15) Mã phường xã
5 XTI Decimal (12,6) Tọa độ X của tiện ích 6 YTI Decimal (12,6) Tọa độ Y của tiện ích
9 ShapeTI Varchar (50) Dạng hình học của đối tượng
Bảng 3.12. Dữ liệu loại đường
STT Tên thuộc tính Kiểu dữ liệu Mơ tả
1 MaLD Varchar (15) Mã loại đường
2 TenLD Nvarchar (150) Tên loại đường
Bảng 3.13. Dữ liệu trạm xe buýt
STT Tên thuộc tính Kiểu dữ liệu Mô tả
1 MaBus Varchar (15) Mã trạm Bus
2 MaDuong Varchar (15) Mã đường
3 MaPX Varchar (15) Mã phường xã
4 XBus Decimal (12,6) Tọa độ X của trạm Bus 5 Ybus Decimal (12,6) Tọa độ Y của trạm Bus 6 TenBus Nvarchar (200) Tên trạm Bus
3.2.1.4 Ràng buộc toàn vẹn
R1: Mỗi User (người dùng) trong bảng Nhà trọ phải có giá trị trong bảng User
∀t∈NhaTro:∃t'∈User ,t . ID=t'. ID
ạ Bối cảnh: NhaTro (Nhà trọ), User (Người dùng) b. Bảng tầm ảnh hưởng
R1 Thêm Xóa Sửa
Nhà trọ + - + (ID)
Người dùng - + + (ID)
R2: Mỗi Loại tài khoản trong bảng User phải có giá trị trong bảng Loại tài
khoản
∀t∈User:∃t'∈LoaiTK , t . MaLTK=t'. MaLTK
ạ Bối cảnh: User (Người dùng), LoaiTK (Loại tài khoản) b. Bảng tầm ảnh hưởng
R2 Thêm Xóa Sửa
Người dùng + - + (MaLTK)
Loại tài khoản + (TenLTK) + + (MaLTK, TenLTK)
R3: Mỗi Tiện nghi trong bảng Nhà trọ phải có giá trị trong bảng Tiện nghi
∀t∈NhaTro:∃t'∈TienNghi ,t . MaTN=t'. MaTN
ạ Bối cảnh: NhaTro (Nhà trọ), TienNghi (Tiện nghi) b. Bảng tầm ảnh hưởng
Nhà trọ + - + (MaTN)
Tiện nghi - + + (MaTN)
R4: Mỗi Loại nhà trọ trong bảng Nhà trọ phải có giá trị trong bảng Loại nhà trọ
∀t∈NhaTro:∃t'∈LoaiNhaTro ,t . MaLNT=t'. MaLNT
ạ Bối cảnh: NhaTro (Nhà trọ), LoaiNhaTro (Loại nhà trọ) b. Bảng tầm ảnh hưởng
R4 Thêm Xóa Sửa
Nhà trọ + - + (MaLNT)
Loại nhà trọ - + + (MaLNT)
R5: Mỗi Đường trong bảng Nhà trọ phải có giá trị trong bảng Đường
∀t∈NhaTro:∃t'∈Duong ,t . MaDuong=t'. MaDuong
ạ Bối cảnh: NhaTro (Nhà trọ), Duong (Đường) b. Bảng tầm ảnh hưởng
R5 Thêm Xóa Sửa
Nhà trọ + - + (MaDuong)
Đường - + + (MaDuong)
R6: Mỗi Phường xã trong bảng Nhà trọ phải có giá trị trong bảng Phường xã
∀t∈NhaTro:∃t'∈PhuongXa, t . MaPX=t'. MaPX
ạ Bối cảnh: NhaTro (Nhà trọ), PhuongXa (Phường xã) b. Bảng tầm ảnh hưởng
R6 Thêm Xóa Sửa
Nhà trọ + - + (MaPX)
R7: Mỗi Nhà trọ chỉ có Nhà vệ sinh là ‘Riêng’ hoặc ‘Chung’
∀t∈NhaTro(t . NhaVeSinh∈{' Riên g','Chun g'
})
ạ Bối cảnh: NhaTro (Nhà trọ) b. Bảng tầm ảnh hưởng
R7 Thêm Xóa Sửa
Nhà trọ + - + (NhaVeSinh)
R8: Mỗi Loại đường trong bảng Đường phải có giá trị trong bảng Loại đường
∀t∈Duong:∃t'∈LoaiDuong , t . MaLD=t'. MaLD
ạ Bối cảnh: Duong (Đường), LoaiDuong (Loại đường) b. Bảng tầm ảnh hưởng
R8 Thêm Xóa Sửa
Đường + - + (MaLD)
Loại đường - + + (MaLD)
R9: Mỗi Phường xã trong bảng Trường phải có giá trị trong bảng Phường xã
∀t∈Truong:∃t'∈PhuongXa, t . MaPX=t'. MaPX
ạ Bối cảnh: Truong (Trường), PhuongXa (Phường xã) b. Bảng tầm ảnh hưởng
R9 Thêm Xóa Sửa
Trường + - + (MaPX)
∀t∈Truong:∃t'∈Duong ,t . MaDuong=t'. MaDuong
ạ Bối cảnh: Truong (Trường), Duong (Đường) b. Bảng tầm ảnh hưởng
R10 Thêm Xóa Sửa
Trường + - + (MaDuong)
Đường - + + (MaDuong)
R11: Mỗi Phường xã trong bảng Trạm bus phải có giá trị trong bảng Phường xã
∀t∈TramBus:∃t'∈PhuongXa ,t . MaPX=t'. MaPX
ạ Bối cảnh: TramBus (Trạm bus), PhuongXa (Phường xã) b. Bảng tầm ảnh hưởng
R11 Thêm Xóa Sửa
Trạm bus + - + (MaPX)
Phường xã - + + (MaPX)
R12: Mỗi Đường trong bảng Trạm bus phải có giá trị trong bảng Đường
∀t∈TramBus:∃t'∈Duong , t . MaDuong=t'. MaDuong
ạ Bối cảnh: TramBus (Trạm bus), Duong (Đường) b. Bảng tầm ảnh hưởng
R12 Thêm Xóa Sửa
Trạm bus + - + (MaDuong)
Đường - + + (MaDuong)
R13: Mỗi Phường xã trong bảng Tiện ích phải có giá trị trong bảng Phường xã
∀t∈TienIch:∃t'∈PhuongXa , t . MaPX=t'. MaPX
ạ Bối cảnh: TienIch (Tiện ích), PhuongXa (Phường xã) b. Bảng tầm ảnh hưởng
R13 Thêm Xóa Sửa
Tiện ích + - + (MaPX)
Phường xã - + + (MaPX)
R14: Mỗi Đường trong bảng Tiện ích phải có giá trị trong bảng Đường
∀t∈TienIch:∃t'∈Duong, t . MaDuong=t'. MaDuong
ạ Bối cảnh: TienIch (Tiện ích), Duong (Đường) b. Bảng tầm ảnh hưởng
R14 Thêm Xóa Sửa
Tiện ích + - + (MaDuong)
Đường - + + (MaDuong)
R15: Mỗi Loại tiện ích trong bảng Tiện ích phải có giá trị trong bảng Loại tiện
ích
∀t∈TienIch:∃t'∈LoaiTienIch ,t . MaLTI=t'. MaLTI
ạ Bối cảnh: LoaiTienIch (Loại tiện ích), TienIch (Tiện ích) b. Bảng tầm ảnh hưởng
R15 Thêm Xóa Sửa
Loại tiện ích - + + (MaLTI)
Tiện ích + - + (MaLTI)
R16: Mỗi User (người dùng) chỉ có Giới tính là ‘Nam’ hoặc ‘Nữ’
∀t∈User¿
ạ Bối cảnh: User (Người dùng) b. Bảng tầm ảnh hưởng
R17: Mỗi User (người dùng) chỉ có Quyền tài khoản là ‘0’ hoặc ‘1’
∀t∈User(t .QuyenTK∈[0,1])
ạ Bối cảnh: User (Người dùng) b. Bảng tầm ảnh hưởng
R17 Thêm Xóa Sửa
Người dùng + - + (QuyenTK)
R18: Mỗi User (người dùng) là chủ trọ chỉ được hiệu chỉnh thông tin Nhà trọ
do chủ trọ đó đăng ký
USTK ← User⋈MaLTK=MaLTKLoaiTK ∀t∈NhaTro¿))
ạ Bối cảnh: User (Người dùng), NhaTro (Nhà trọ), LoaiTK (Loại tài khoản)
b. Bảng tầm ảnh hưởng
R18 Thêm Xóa Sửa
Người dùng - + + (ID, MaLTK)
Nhà trọ + - + (ID)
Loại tài khoản + (TenLTK) + + (MaLTK, TenLTK)
R19: Loại tài khoản chỉ có thể là ‘User’ hoặc ‘Admin’
∀t∈LoaiTK(t . TenLTK∈{' User ' ,' Admin'})
ạ Bối cảnh: LoaiTK (Loại tài khoản) b. Bảng tầm ảnh hưởng
R19 Thêm Xóa Sửa
Loại tài khoản + (TenLTK) + + (TenLTK)
∀t1,t2∈LoaiTK(t1≠ t2∧t1.TenLTK ≠ t2.TenLTK)
ạ Bối cảnh: LoaiTK (Loại tài khoản) b. Bảng tầm ảnh hưởng
R20 Thêm Xóa Sửa
Loại tài khoản + (TenLTK) + + (TenLTK)
R21: Mỗi User (người dùng) là chủ trọ chỉ được hiệu chỉnh thông tin Hồ sơ do
chủ trọ đó đăng ký
USLTK ←User⋈MaLTK=MaLTKLoaiTK ∀t∈User¿))
ạ Bối cảnh: User (Người dùng), LoaiTK (Loại tài khoản) b. Bảng tầm ảnh hưởng
R21 Thêm Xóa Sửa
Người dùng + - + (ID)
3.2.2 Thiết kế giao diện
3.2.2.1 Sơ đồ màn hình
3.2.2.2 Mơ tả chi tiết một số màn hình tiêu biểu Màn hình chung của trang Web:
Hình 3.11. Màn hình chung của trang Web
Màn hình của chủ trọ:
Màn hình của quản trị viên:
Hình 3.13. Màn hình của Admin
Màn hình đăng nhập:
Hình 3.14. Màn hình đăng nhập
Hình 3.16. Màn hình chỉnh sửa hồ sơ
Màn hình đổi mật khẩu:
Hình 3.17. Màn hình đổi mật khẩu
3.2.3 Thiết kế xử lý
Đăng ký tài khoản
Hình 3.19. Sơ đồ giải thuật đăng ký
Đăng nhập
Đổi mật khẩu
Hình 3.21. Sơ đồ giải thuật đổi mật khẩu
Thêm nhà trọ
Tìm kiếm thuộc tính
Hình 3.23. Sơ đồ giải thuật tìm kiếm thuộc tính
Tìm kiếm khơng gian
Chương 4. CÀI ĐẶT CHƯƠNG TRÌNH4.1 THU THẬP VÀ TIỀN XỬ LÝ DỮ LIỆU 4.1 THU THẬP VÀ TIỀN XỬ LÝ DỮ LIỆU
Phần mềm ArcMap: Cắt lấy dữ liệu đường của thành phố Nha Trang, thêm dữ liệu nhà trọ đã thu thập được thông qua khảo sát thực tế và bổ sung thêm đối tượng còn thiếu cho các lớp dữ liệu tiện ích (ATM, y tế, chợ,...)
Dữ liệu đường được tiến hành xử lý như sau:
Bước 1: Tải dữ liệu đường của Việt Nam với định dạng shapefile (.shp) theo
đường link và tiến hành giải nén: http://download.geofabrik.de/asiạhtml
Bước 2: Đưa dữ liệu shapefile đường vào ArcMap
Bước 3: Dùng công cụ Geoprocessing → Clip tiến hành cắt dữ liệu đường
thành phố Nha Trang.
Hình 4.26. Cắt dữ liệu đường thành phố Nha Trang
Sau khi cắt thành công chúng ta thu thập được dữ liệu đường của TP. Nha Trang
Hình 4.27. Dữ liệu đường sau khi cắt
Bước 4: Mở công cụ Editor → Start Editing → Nhấp chuột phải vào lớp đường
vừa xử lý được → Chọn Open Attribute Table để mở bảng thuộc tính → Chọn các dịng thuộc tính trùng tên đường → Mở cơng cụ Editor → Chọn Merge → OK để hợp nhất các đoạn đường thành một đường duy nhất.
Hình 4.28. Hợp nhất các đoạn đường
Bước 5: Tiếp tục chọn các dịng thuộc tính trùng tên đường → Mở công cụ
Editor → Chọn Merge → OK để hợp nhất các đoạn đường còn lại thành một đường duy nhất. Sau khi hồn thành mở cơng cụ Editor → Save Edits để lưu trữ các dữ liệu vừa hợp nhất.
Quá trình thu thập và xử lý dữ liệu còn lại được tiến hành như sau:
Bước 1: Tạo các bảng excel *.xlsx dữ liệu nhà trọ, trường học, trạm chờ xe buýt,
đã được phân tích thiết kế ở chương 3 và dữ liệu thu thập được thông qua khảo sát, trên Google Map.
Bước 2: Sử dụng Google Map, nhập địa chỉ để thu thập tọa độ của các địa
điểm.
Hình 4.29. Dữ liệu tọa độ nhà trọ
Bước 3: Tại cửa sổ phần mềm ArcMap → Chọn File → Ađ Data → Ađ XY
Data → Chọn file Excel → OK.
Bước 4: Nhấp chuột phải lớp dữ liệu vừa Ađ → Chọn Data → Export Data
thành lớp dữ liệu shapefile, định dạng *.shp. Dữ liệu này có hệ tọa độ WGS84 (Ellipsoid WGS84 tồn cầu).
Hình 4.31. Các lớp dữ liệu đã xử lý được
4.2 BIÊN TẬP BẢN ĐỒ
Phần mềm mã nguồn mở QGIS: Biên tập bản đồ, thiết kế kiểu ký hiệu (đường nét, màu sắc, hình dạng ký hiệu, độ đậm nhạt của màu sắc,...) cho các lớp dữ liệu đã thu thập được.
Sử dụng phần mềm QGIS để biên tập màu sắc, hình dáng, kiểu ký hiệu và lưu style dưới dạng file SLD. Vì ArcMap khơng hỗ trợ lưu file SLD nên sử dụng QGIS để biên tập. QGIS, tên đầy đủ là Quantum GIS, là một phần mềm hệ thống thông tin địa lý mã nguồn mở và miễn phí. QGIS có thể đọc được nhiều dạng dữ liệu như các bản đồ từ ArcView, MapInfo, các bảng thông tin tạo bởi PostgreSQL (thông qua PostGIS). Cũng như ArcMap, QGIS cũng cung cấp các công cụ số hóa, biên tập bản đồ.
Q trình biên tập bản đồ được tiến hành như sau:
Sau khi có dữ liệu shapefile các lớp dữ liệu cần thiết đã được xử lý từ ArcMap, ta tiến hành đưa các lớp dữ liệu vào phần mềm QGIS. Tại cửa sổ Layers Properties, chọn cơng cụ Symbologỵ Tại đây, ta có thể lựa chọn kiểu thể hiện ký hiệu (single symbol, categorized, graduated,…).
Hình 4.32. Biên tập lớp dữ liệu nhà trọ
Kết quả sau khi biên tập các lớp dữ liệu:
Xuất file SLD: Sau khi biên tập hoàn chỉnh, tại nút Style ở cửa sổ Layer Properties của mỗi lớp, chọn Save Style để xuất ra file SLD để “lưu trữ” kiểu ký hiệụ File SLD sẽ giúp lưu lại hình dạng, màu sắc của ký hiệụ
Hình 4.34. Xuất file SLD
Kết quả xuất file SLD:
4.3 XÂY DỰNG HỆ THỐNG WEBGIS
Công cụ sử dụng
- XAMPP: Giả lập môi trường server hosting, tạo và điều hành máy chủ nội bộ (localhost)
- Hệ quản trị cơ sở dữ liệu PostgreSQL: Quản trị cơ sở dữ liệu khơng gian và thuộc tính.
- Phần mềm hỗ trợ mã nguồn mở PostGIS: Import các lớp dữ liệu không gian đã được xử lý trên ArcMap vào PostgreSQL, hỗ trợ lưu trữ dữ liệu dạng Geodatabase và truy vấn không gian trên cơ sở dữ liệụ
- Máy chủ mã nguồn mở GeoServer: Máy chủ mã nguồn mở để chia sẻ dữ liệu không gian địa lý. Được thiết kế cho khả năng tương tác, nó xuất bản dữ liệu từ bất kỳ nguồn dữ liệu không gian lớn nào bằng cách sử dụng các tiêu chuẩn mở.
- Thư viện JavaScript mã nguồn mở OpenLayer: Cung cấp API Javascript GIS để xây dựng ứng dụng Web về địa lý.
- Ngơn ngữ lập trình: PHP, HTML (ngơn ngữ đánh dấu siêu văn bản), CSS, JavaScript: Kết nối cơ sở dữ liệu, xây dựng giao diện cùng các chức năng của WebGIS.
Xem chi tiết cách cài đặt các cơng cụ và xây dựng chương trình tại phần phụ lục.
Link GitHub chứa các tệp cần thiết để cài đặt và file source code hệ thống WebGIS tra cứu nhà trọ: https://github.com/quangloc47
Chương 5. HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH5.1 HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG 5.1 HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG
Hướng dẫn chi tiết cách cài đặt và sử dụng chương trình được tải lên Youtube ở link sau đây: https://youtụbe/n_1g5KZQRn4
5.2 KẾT QUẢ THỰC HIỆN ĐỀ TÀI 5.2.1 Xây dựng giao diện
5.2.1.1 Giao diện chung của trang Web (sinh viên, khách vãng lai)
Giao diện trang chủ
Sau khi cài đặt XAMPP và GeoServer trên localhost, người dùng có thể vào trang WebGIS bằng cách truy cập vào đường link:
http://localhost:3128/WebGisNT_DauQuangLoc_59131309/index.php.
Giao diện trang đăng ký
Giao diện trang đăng nhập
Giao diện trang liên hệ
5.2.1.2 Giao diện của người dùng (chủ trọ)
Sau khi đăng nhập thành công với tài khoản đã được đăng ký trước đó, giao diện của chủ trọ có thêm các chức năng như: đổi mật khẩu, xem hồ sơ, chỉnh sửa, xóa tài khoản người dùng, hiệu chỉnh nhà trọ.
5.2.1.3 Giao diện của quản trị viên
Đối với quản trị viên sau khi đăng nhập sẽ có các chức năng bao gồm: đăng ký thành viên/quản trị viên mới, đổi mật khẩu cho tất cả các thành viên, xem thông tin chi