You are on page 1of 164

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG


KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP

XÂY DỰNG WEBGIS PHỤC VỤ TRA CỨU THÔNG TIN 


NHÀ TRỌ TRỰC TUYẾN THÀNH PHỐ NHA TRANG

Khánh Hòa – 2021


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP

XÂY DỰNG WEBGIS PHỤC VỤ TRA CỨU THÔNG TIN 


NHÀ TRỌ TRỰC TUYẾN THÀNH PHỐ NHA TRANG

Khánh Hòa – Tháng 07/2021

      BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC NHA TRANG Độc lập – Tự do – Hạnh phúc

Số:           / QĐ - ĐHNT Khánh Hòa, ngày 20 tháng 03 năm 2021


QUYẾT ĐỊNH
Về việc giao đồ án tốt nghiệp cho sinh viên

HIỆU TRƯỞNG TRƯỜNG ĐẠI HỌC NHA TRANG


 Căn cứ quyết định số 527/QĐ-ĐHNT ngày 12/6/2017 của Hiệu trưởng về việc ban hành
Quy chế tổ chức và hoạt động của Trường Đại học Nha Trang;
 Căn cứ quyết định số 623//QĐ-ĐHNT ngày 05/9/2017 của Hiệu trưởng về việc ban hành
Quy định đào tạo trình độ đại học và cao đẳng của Trường Đại học Nha Trang
 Căn cứ Quyết định số 506/QĐ-ĐHNT ngày 16/5/2019 của Hiệu trưởng Trường Đại học
Nha Trang về việc ban hành Hướng dẫn thực hiện công tác tốt nghiệp trình độ đại học
hệ chính quy;
 Xét đề nghị của Trưởng Bộ môn Hệ thống Thông tin,

QUYẾT ĐỊNH

Điều 1. Giao cho sinh viên: Đậu Quang Lộc MSSV: 59131309. Lớp: 59.CNTT-1.        
Khoá 59.  Ngành: Công nghệ Thông tin.
Thực hiện đồ án tốt nghiệp: XÂY DỰNG WEBGIS PHỤC VỤ TRA CỨU THÔNG TIN
NHÀ TRỌ TRỰC TUYẾN THÀNH PHỐ NHA TRANG.
Nội dung thực hiện: 
 Thu thập thông tin, xây dựng cơ sở dữ liệu nhà trọ xung quanh khu vực Đại học Nha
Trang. 
 Thu thập, xử lý các lớp dữ liệu liên quan: giao thông, trạm chờ xe buýt, chợ, trường đại
học - cao đẳng, cơ sở y tế, ngân hàng - ATM và các địa điểm tiện ích khác.
 Xây dựng WebGIS hiển thị bản đồ phân bố nhà trọ cùng các chức năng tìm kiếm và tra
cứu thông tin nhà trọ.
Nơi thực hiện: Bộ môn Hệ thống Thông tin, Khoa Công nghệ Thông tin – Trường ĐH Nha
Trang.
Thời gian thực hiện: Từ ngày 15/03/2021 đến ngày 26/06/2021.
Nộp báo cáo đồ án trước ngày: 17/07/2021 cho Bộ môn Hệ thống Thông tin. 
Điều 2. Giảng viên Nguyễn Thủy Đoan Trang hướng dẫn sinh viên thực hiện đồ án tốt
nghiệp theo Quy chế của Bộ Giáo dục & Đào tạo và Hướng dẫn thực hiện Quy chế của Trường.
Trưởng Bộ môn Nguyễn Đức Thuần định kỳ báo cáo Trưởng khoa việc thực hiện công
tác tốt nghiệp của sinh viên và giảng viên hướng dẫn được giao quản lý.
Sinh viên Đậu Quang Lộc có trách nhiệm chấp hành đúng Quy chế của Bộ Giáo dục &
Đào tạo, Quy định của Trường và nơi thực tập trong quá trình làm công tác tốt nghiệp, hoàn
thành đồ án tốt nghiệp đúng thời gian quy định.
Điều 3. Sinh viên có tên trong Điều 1, Giảng viên và Trưởng bộ môn có tên trong Điều 2
chịu trách nhiệm thi hành Quyết định này./.
  TL.HIỆU TRƯỞNG
  TRƯỞNG KHOA CNTT

TRƯỜNG ĐẠI HỌC NHA TRANG


Khoa: Công nghệ Thông tin

PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ


ĐỒ ÁN/KHÓA LUẬN/CHUYÊN ĐỀ TỐT NGHIỆP
(Dùng cho CBHD và nộp cùng báo cáo ĐA/KL/CĐTN của sinh viên)
Tên đề tài: XÂY DỰNG WEBGIS PHỤC VỤ TRA CỨU THÔNG TIN NHÀ TRỌ TRỰC
TUYẾN THÀNH PHỐ NHA TRANG.
Giảng viên hướng dẫn: ThS. Nguyễn Thủy Đoan Trang
Sinh viên được hướng dẫn: Đậu Quang Lộc MSSV: 59131309
Khóa: 59 Ngành: Công nghệ Thông tin
Lần KT Ngày Nội dung Nhận xét của GVHD
1
2
3
4
5
6
7
Kiểm tra giữa tiến độ của Trưởng Bộ môn
Ngày kiểm tra:
……………... Đánh giá công việc hoàn thành:……%: Ký tên
……… Được tiếp tục: € Không tiếp tục: €  …………………….

Lần KT Ngày Nội dung Nhận xét của GVHD


8
9
10
11

Nhận xét chung (sau khi sinh viên hoàn thành ĐA/KL/CĐTN):

Điểm hình thức: ……/10              Điểm nội dung: ......../10                   Điểm tổng kết: ….…/10
+ Đối với ĐA/KLTN:
Kết luận sinh viên: Được bảo vệ: € 

Không được bảo vệ: €


Khánh Hòa, ngày 10 tháng 7 năm
2021
                  Cán bộ hướng dẫn
                  (Ký và ghi rõ họ tên)
TRƯỜNG ĐẠI HỌC NHA TRANG                                                                
Khoa/Viện: Công nghệ Thông tin

PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ ĐỒ ÁN / KHÓA LUẬN TỐT NGHIỆP
(Dùng cho CBHD và nộp cùng báo cáo ĐA/KLTN của sinh viên)
Tên đề tài: XÂY DỰNG WEBGIS PHỤC VỤ TRA CỨU THÔNG TIN NHÀ TRỌ TRỰC
TUYẾN THÀNH PHỐ NHA TRANG.
Chuyên ngành: Công nghệ Thông tin
Họ và tên sinh viên: Đậu Quang Lộc. Mã sinh viên: 59131309 
Người hướng dẫn (học hàm, học vị, họ và tên): ThS. Nguyễn Thủy Đoan Trang
Cơ quan công tác: Khoa Công nghệ Thông tin – Trường Đại học Nha Trang
Phần đánh giá và cho điểm của người hướng dẫn (tính theo thang điểm 10)
Mô tả mức chất lượng
Tiêu chí Trọng số Không
Giỏi Khá Đạt yêu cầu Điểm
đánh giá (%) đạt
9 - 10 7 - 8 5-6 <5
Xây dựng đề cương nghiên cứu 10
Tinh thần và thái độ
10
làm việc
Kiến thức và kỹ năng làm việc   10
Nội dung và kết quả  đạt được 40
Kỹ năng viết và trình bày báo
30
cáo 

ĐIỂM TỔNG
Ghi chú: Điểm tổng làm tròn đến 1 số lẻ.
Nhận xét chung (sau khi sinh viên hoàn thành ĐA/KLTN):
…………………………………………………………………………………………….
…………………………………………………………………………………………….
…………………………………………………………………………………………………
………….
………………………………………………………………………………………………….
Đồng ý cho sinh viên:          Được bảo vệ:  €               Không được bảo vệ: €
                Khánh Hòa, ngày…….tháng 07 năm 2021
        Cán bộ hướng dẫn
        (Ký và ghi rõ họ tên)

TRƯỜNG ĐẠI HỌC NHA TRANG


Khoa/Viện: Công nghệ Thông tin

PHIẾU CHẤM ĐIỂM ĐỒ ÁN / KHÓA LUẬN TỐT NGHIỆP


(Dành cho cán bộ chấm phản biện)
Tên đề tài: XÂY DỰNG WEBGIS PHỤC VỤ TRA CỨU THÔNG TIN NHÀ TRỌ TRỰC
TUYẾN THÀNH PHỐ NHA TRANG.
Chuyên ngành: Công nghệ Thông tin
Họ và tên sinh viên: Đậu Quang Lộc. Mã sinh viên: 59131309
Người phản biện (học hàm, học vị, họ và tên): 
Cơ quan công tác: Khoa Công nghệ Thông tin – Trường Đại học Nha Trang
I. Phần đánh giá và cho điểm của người phản biện (tính theo thang điểm 10)
Mô tả mức chất lượng Điểm
Đạt yêu Không
Tiêu chí Trọng số Giỏi Khá
cầu đạt
đánh giá (%)
9-
7-8 5-6 <5
10
Hình thức
30
bản thuyết minh
Nội dung bản 
30
thuyết minh
Kết quả
20
nghiên cứu 
Mức độ trích
dẫn 20
và sao chép
ĐIỂM TỔNG
Ghi chú: Điểm tổng làm tròn đến 1 số lẻ.
Kết luận:
Đồng ý cho sinh viên:          Được bảo vệ:  €               Không được bảo vệ: €
Khánh Hòa, ngày…….tháng 07 năm 2021
Cán bộ chấm phản biện
(Ký và ghi rõ họ tên)

II. Phần nhận xét cụ thể (dựa theo phiếu chấm điểm và khung tiêu chí đánh giá theo
Rubric)
II.1. Hình thức thuyết minh (tỉ trọng 30%)
* Trình bày (Rõ ràng, mạch lạc? Biểu bảng, hình vẽ trình bày rõ ràng, đúng quy cách?…)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
* Bố cục và lập luận (Bố cục hợp lý? Tỉ trọng giữa các phần? Cơ sở lập luận?...)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
* Văn phong (Gọn gàng, súc tích hay rườm rà, khó hiểu? Lỗi văn phạm và chính tả?…) 
…………………………………………………………………………………………………
II.2. Nội dung thuyết minh (tỉ trọng 30%)
* Mục tiêu nghiên cứu (Trình bày rõ ràng? Ý nghĩa khoa học và thực tiễn? Tính khả thi?...) 
…………………………………………………………………………………………………
…………………………………………………………………………………………………
* Tổng quan tài liệu (Phân tích và đánh giá? Độ tin cậy và chất lượng nguồn tài liệu?…)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
* Phương pháp nghiên cứu (Hiện đại? Phù hợp với mục tiêu và nội dung nghiên cứu? Mô tả?
Đánh giá và so sánh với các phương pháp khác?…)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
II.3. Kết quả nghiên cứu (tỉ trọng 20%)
* Kết quả đạt được (Độ tin cậy? Tính sáng tạo? Giá trị khoa học và thực tiễn?...)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
* Kết luận (Đáp ứng mục tiêu nghiên cứu? Quan điểm của cá nhân? ...)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
4. MỨC ĐỘ TRÍCH DẪN VÀ SAO CHÉP (tỉ trọng 20%)
* Mức độ trích dẫn (Đúng quy định? Trung thực, đầy đủ, rõ ràng?Sắp xếp tài liệu tham
khảo?...) 
…………………………………………………………………………………………………
* Mức độ sao chép (Tỉ lệ sao chép? Hình thức sao chép?...)
…………………………………………………………………………………………………

LỜI CAM ĐOAN

Tôi xin được cam đoan: Đề tài tốt nghiệp “Xây dựng WebGIS phục vụ tra cứu
thông tin nhà trọ trực tuyến thành phố Nha Trang” là kết quả dựa trên sự cố gắng, nỗ
lực của bản thân với sự hướng dẫn nhiệt tình của ThS. Nguyễn Thủy Đoan Trang. Các số
liệu và kết quả nghiên cứu trong đề tài là trung thực và hoàn toàn không sao chép hoặc sử
dụng kết quả của đề tài nghiên cứu nào tương tự.
Những phần sử dụng tài liệu tham khảo trong đồ án đã được trích dẫn đầy đủ.
Nếu phát hiện có sự sao chép kết quả nghiên cứu của đề tài khác, tôi xin chịu hoàn
toàn trách nhiệm và chịu kỷ luật của Khoa và Nhà trường đề ra.

Khánh Hòa, ngày 01 tháng 07 năm


2021
Sinh viên thực hiện
Đậu Quang Lộc
LỜI CẢM ƠN

Để hoàn thành đề tài tốt nghiệp này, trước hết em xin gửi đến quý thầy, cô Khoa
Công nghệ Thông tin - Trường Đại học Nha Trang lời cảm ơn chân thành. 
Em xin gửi đến cô Nguyễn Thủy Đoan Trang, người đã tận tình hướng dẫn, giúp
đỡ em hoàn thành đề tài tốt nghiệp này lời cảm ơn sâu sắc nhất.
Mình cũng xin gửi lời cảm ơn tới các bạn sinh viên Trường Đại học Nha Trang đã
nhiệt tình tham gia khảo sát thông tin về nhà trọ và tình hình thuê trọ, hỗ trợ đóng góp
trong quá trình làm đề tài.
Trong quá trình nghiên cứu thực hiện đề tài, cũng như là trong quá trình làm bài
báo cáo tốt nghiệp, khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua. Đồng thời do
kiến thức cũng như kinh nghiệm thực tiễn của bản thân còn hạn chế nên đề tài, bài báo
cáo tốt nghiệp này khó thể không tránh khỏi những thiếu sót, em rất mong nhận được ý
kiến đóng góp từ quý thầy, cô để em học hỏi thêm được nhiều kinh nghiệm, cũng như kỹ
năng cần thiết.
Em xin chân thành cảm ơn!
TÓM TẮT ĐỒ ÁN

Với thời gian thực hiện đồ án còn hạn chế nên đề tài “Xây dựng WebGIS phục
vụ tìm kiếm nhà trọ trực tuyến thành phố Nha Trang” chỉ dừng ở mức tìm hiểu về
việc tích hợp Hệ thống Thông tin địa lý (GIS) trên nền Web; khảo sát, thiết kế cơ sở dữ
liệu thông tin nhà trọ xung quanh khu vực Đại học Nha Trang cũng như một số dữ liệu
liên quan; tìm hiểu về máy chủ mã nguồn mở GeoServer, hệ quản trị cơ sở dữ liệu
PostgreSQL/PostGIS và Framework mã nguồn mở OpenLayers. Từ những cơ sở trên xây
dựng chương trình WebGIS phục vụ tìm kiếm thông tin nhà trọ trực tuyến tại thành phố
Nha Trang.
Mục đích của việc tin học hóa việc phục vụ tìm kiếm nhà trọ là nhằm giúp cho
người dùng mà đặc biệt là sinh viên có thể dễ dàng truy cập WebGIS thông qua môi
trường Internet với những ưu điểm nổi bật như hiển thị trực quan, dễ tiếp cận, thông tin
truyền tải giàu hình ảnh, cho cái nhìn hệ thống tổng thể và toàn diện có thể hỗ trợ việc
cung cấp cũng như tiếp cận thông tin phòng trọ được tiến hành nhanh hơn, kết quả tốt
hơn, từ đó có thể dễ dàng đưa ra quyết định một cách hiệu quả hơn.
Do khả năng của bản thân còn hạn chế nên các chức năng của WebGIS và hệ
thống vẫn chưa hoàn thiện. Rất mong nhận được sự thông cảm và đóng góp ý kiến từ
Quý Thầy/Cô và các bạn.
MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
TÓM TẮT ĐỒ ÁN iii
MỤC LỤC iv
DANH MỤC HÌNH VẼ vi
DANH MỤC BẢNG viii
DANH MỤC CÁC TỪ VIẾT TẮT ix
MỞ ĐẦU 1
Chương 1. TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU 4
1.1 CƠ SỞ LÝ THUYẾT 4
1.1.1 Tổng quan về Hệ thống Thông tin Địa lý (GIS) 4
1.1.2 Tổng quan về WebGIS (Kết hợp GIS trên nền tảng Web) 8
1.1.3 Tổng quan về GeoServer 11
1.1.4 Tổng quan về PostgreSQL 12
1.1.5 Tổng quan về PostGIS 14
1.1.6 Tổng quan về OpenLayers Framework 14
1.2 CÁC NGÔN NGỮ ĐƯỢC SỬ DỤNG 15
1.2.1 Ngôn ngữ HTML5 (Ngôn ngữ đánh dấu siêu văn bản) 15
1.2.2 Ngôn ngữ CSS3 19
1.2.3 Ngôn ngữ JavaScript 21
1.2.4 Ngôn ngữ PHP 23
1.3 THỰC TIỄN VẤN ĐỀ LIÊN QUAN ĐẾN ĐỀ TÀI 25
1.4 TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU 25
1.4.1 Tình hình nghiên cứu trên thế giới 25
1.4.2 Tình hình nghiên cứu trong nước 26
Chương 2. KHẢO SÁT HIỆN TRẠNG 28
2.1 HIỆN TRẠNG THÀNH PHỐ NHA TRANG 28
2.2 TÌNH HÌNH NHÀ TRỌ 29
2.3 TÌNH HÌNH ĐĂNG TIN VÀ TÌM NHÀ TRỌ HIỆN NAY 29
2.3.1 Tình hình đăng tin của các chủ nhà trọ 29
2.3.2 Tình hình tìm nhà trọ của sinh viên 31
2.4 ĐẶC TẢ BÀI TOÁN 32
Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG 34
3.1 PHÂN TÍCH 34
3.1.1 Mô hình BFD 34
3.1.2 Mô hình DFD 35
3.1.3 Mô hình dữ liệu 37
3.1.3.1 Dữ liệu không gian 37
3.1.3.2 Dữ liệu thuộc tính 39
3.2 THIẾT KẾ 40
3.2.1 Thiết kế dữ liệu 40
3.2.1.1 Mô hình quan hệ (mô hình dữ liệu mức logic) 40
3.2.1.2 Mô hình dữ liệu vật lý (PDM) 41
3.2.1.3 Từ điển dữ liệu 42
3.2.1.4 Ràng buộc toàn vẹn 48
3.2.2 Thiết kế giao diện 55
3.2.2.1 Sơ đồ màn hình 55
3.2.2.2 Mô tả chi tiết một số màn hình tiêu biểu 56
3.2.3 Thiết kế xử lý 61
Chương 4. CÀI ĐẶT CHƯƠNG TRÌNH 64
4.1 THU THẬP VÀ TIỀN XỬ LÝ DỮ LIỆU 64
4.2 BIÊN TẬP BẢN ĐỒ 68
4.3 XÂY DỰNG HỆ THỐNG WEBGIS 71
Chương 5. HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH 72
5.1 HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG 72
5.2 KẾT QUẢ THỰC HIỆN ĐỀ TÀI 72
5.2.1 Xây dựng giao diện 72
5.2.1.1 Giao diện chung của trang Web (sinh viên, khách vãng lai) 72
5.2.1.2 Giao diện của người dùng (chủ trọ) 77
5.2.1.3 Giao diện của quản trị viên 78
5.2.2 Xây dựng chức năng 79
5.2.2.1 Đối với chủ trọ 79
5.2.2.2 Đối với quản trị viên 89
5.2.2.3 Đối với sinh viên và khách vãng lai 94
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 106
6.1 KẾT QUẢ ĐẠT ĐƯỢC 106
6.2 ƯU ĐIỂM 106
6.3 HẠN CHẾ 107
6.4 HƯỚNG PHÁT TRIỂN 107
6.5 KẾT LUẬN 107
TÀI LIỆU THAM KHẢO 108
PHỤ LỤC 110
1. PHỤ LỤC 1: HƯỚNG DẪN CÀI ĐẶT POSTGRESQL VÀ POSTGIS 110
2. PHỤ LỤC 2: HƯỚNG DẪN CÀI ĐẶT GEOSERVER VỚI TOMCAT XAMPP
116
3. PHỤ LỤC 3: TẠO DATABASE VỚI POSTGRESQL VÀ POSTGIS 123
4. PHỤ LỤC 4: PUBLISH DATA VỚI GEOSERVER 127
5. PHỤ LỤC 5: BÀI TOÁN TÌM ĐƯỜNG VỚI POSTGIS + PGROUTING 132
DANH MỤC HÌNH VẼ

Hình 1.1. Minh họa các lớp bản đồ GIS [3] 7


Hình 1.2. Sơ đồ hoạt động của PHP [13] 24
Hình 3.1. Mô hình BFD 34
Hình 3.2. Sơ đồ DFD tổng quát mức 0 35
Hình 3.3. Sơ đồ DFD mức 1 của ô xử lý 2 35
Hình 3.4. Sơ đồ DFD mức 1 của ô xử lý 3 36
Hình 3.5. Sơ đồ DFD mức 1 của ô xử lý 5 36
Hình 3.6. Mô hình thực thể kết hợp (ERD) 39
Hình 3.7. Mô hình dữ liệu vật lý (PDM) 41
Hình 3.8. Sơ đồ màn hình 55
Hình 3.9. Màn hình chung của trang Web 56
Hình 3.10. Màn hình của chủ trọ 56
Hình 3.11. Màn hình của Admin 57
Hình 3.12. Màn hình đăng nhập 57
Hình 3.13. Màn hình đăng ký 58
Hình 3.14. Màn hình chỉnh sửa hồ sơ 59
Hình 3.15. Màn hình đổi mật khẩu59
Hình 3.16. Màn hình thêm mới nhà trọ 60
Hình 3.17. Sơ đồ giải thuật đăng ký 61
Hình 3.18. Sơ đồ giải thuật đăng nhập 61
Hình 3.19. Sơ đồ giải thuật đổi mật khẩu 62
Hình 3.20. Sơ đồ giải thuật thêm nhà trọ 62
Hình 3.21. Sơ đồ giải thuật tìm kiếm thuộc tính 63
Hình 3.22. Sơ đồ giải thuật tìm kiếm không gian 63
Hình 4.1. Dữ liệu đường OpenStreetMap 64
Hình 4.2. Cắt dữ liệu đường thành phố Nha Trang 65
Hình 4.3. Dữ liệu đường sau khi cắt 65
Hình 4.4. Hợp nhất các đoạn đường 66
Hình 4.5. Dữ liệu tọa độ nhà trọ 67
Hình 4.6. Nhập dữ liệu tọa độ vào ArcMap 67
Hình 4.7. Các lớp dữ liệu đã xử lý được 68
Hình 4.8. Biên tập lớp dữ liệu nhà trọ 69
Hình 4.9. Kết quả biên tập các lớp dữ liệu 69
Hình 4.10. Xuất file SLD 70
Hình 4.11. Kết quả xuất file SLD 70
Hình 5.1. Giao diện trang chủ WebGIS 72
Hình 5.2. Giao diện trang tìm kiếm nâng cao 73
Hình 5.3. Giao diện trang đăng ký dành cho chủ trọ 74
Hình 5.4. Giao diện trang đăng nhập dành cho chủ trọ và quản trị viên 75
Hình 5.5. Giao diện trang liên hệ 76
Hình 5.6. Giao diện của chủ trọ 77
Hình 5.7. Giao diện của quản trị viên 78
Hình 5.8. Đăng ký tài khoản không thành công 79
Hình 5.9. Đăng ký tài khoản thành công 80
Hình 5.10. Kiểm tra trường rỗng khi đăng nhập 81
Hình 5.11. Tài khoản không hợp lệ hoặc chưa đăng ký 81
Hình 5.12. Kiểm tra trường mật khẩu khi đăng nhập 82
Hình 5.13. Xác thực tài khoản khi đổi mật khẩu 82
Hình 5.14. Đổi mật khẩu thành công 83
Hình 5.15. Thay đổi thông tin hồ sơ cá nhân 84
Hình 5.16. Xóa tài khoản cá nhân 85
Hình 5.17. Đăng ký mới nhà trọ thành công 86
Hình 5.18. Hiển thị nhà trọ trên bản đồ sau khi đăng ký thành công 87
Hình 5.19. Xóa nhà trọ 87
Hình 5.20. Form chỉnh sửa thông tin nhà trọ 88
Hình 5.21. Thông tin chi tiết các thành viên 89
Hình 5.22. Đăng ký thêm tài khoản Admin 90
Hình 5.23. Vô hiệu hóa tài khoản 91
Hình 5.24. Xem chi tiết và hiệu chỉnh thông tin người dùng 92
Hình 5.25. Hiệu chỉnh thông tin của tất cả các nhà trọ do người dùng đăng ký 93
Hình 5.26. Tìm những nhà trọ thuộc loại sinh viên (có 29 kết quả) 94
Hình 5.27. Tìm những nhà trọ thuộc loại sinh viên ở phường Vĩnh Thọ (còn 7 kết quả)
94
Hình 5.28. Tìm kiếm nâng cao theo thuộc tính 95
Hình 5.29. Tìm kiếm nhà trọ gần ĐH Nha Trang với bán kính 250m (có 3 kết quả) 96
Hình 5.30. Kết quả tìm kiếm theo không gian 97
Hình 5.31. Tìm kiếm nhà trọ theo tọa độ được đánh dấu với bán kính 200m 98
Hình 5.32. Kết quả tìm kiếm xung quanh 99
Hình 5.33. Phát hiện vị trí hiện tại của tôi 99
Hình 5.34. Kích hoạt lấy thông tin nhà trọ 100
Hình 5.35. Di chuyển tới phường Ngọc Hiệp 101
Hình 5.36. Đo lường chiều dài và khu vực 102
Hình 5.37. Tìm đường đi ngắn nhất 103
Hình 5.38. Tải xuống hình ảnh bản đồ PNG 104
Hình 5.39. Kết quả tải hình ảnh bản đồ 104
Hình 5.40. Xuất bản đồ PDF 105
Hình 5.41. Kết quả xuất bản đồ PDF 105
DANH MỤC BẢNG

Bảng 3.1. Dữ liệu không gian 37


Bảng 3.2. Dữ liệu tiện nghi 42
Bảng 3.3. Dữ liệu phường xã 42
Bảng 3.4. Dữ liệu đường 42
Bảng 3.5. Dữ liệu user (người dùng) 43
Bảng 3.6. Dữ liệu loại tài khoản 43
Bảng 3.7. Dữ liệu nhà trọ 44
Bảng 3.8. Dữ liệu loại nhà trọ 45
Bảng 3.9. Dữ liệu trường học 45
Bảng 3.10. Dữ liệu loại tiện ích 46
Bảng 3.11. Dữ liệu tiện ích 46
Bảng 3.12. Dữ liệu loại đường 47
Bảng 3.13. Dữ liệu trạm xe buýt 47

DANH MỤC CÁC TỪ VIẾT TẮT

GIS: Hệ thống Thông tin Địa lý (Geographic Information System)


CSDL: Cơ sở dữ liệu (Database)
OGC: Tổ chức Không gian Địa lý (Open Geospatial Consortium)
WKT: Biểu diễn hình học bằng văn bản (Well-known text)
SLD: Mô tả lớp theo kiểu (Styled Layer Descriptor)
KML: Ngôn ngữ đánh dấu lỗ khóa (Keyhole Markup Language)
BSD: Hệ điều hành dẫn xuất từ UNIX (Berkeley Software Distribution)
BFD: Mô hình chức năng (Business Function Diagram)
DFD: Mô hình dòng dữ liệu (Data Flow Diagram)
ERD: Mô hình thực thể kết hợp (Entity Relationship Diagram)
PDM: Mô hình dữ liệu vật lý (Physical Data Model)
ADMIN: Quản trị viên (Administrators)

MỞ ĐẦU
 Lý do chọn đề tài:
Nha Trang là một thành phố ven biển và là trung tâm kinh tế, chính trị, giáo dục,
văn hóa, khoa học kỹ thuật và du lịch của tỉnh Khánh Hòa, Việt Nam [1]. Theo số liệu
thống kê của Tổng cục Thống kê, tính đến năm 2018, thành phố này đã có đến 25 trường
Đại học, Cao đẳng và Cơ sở nghiên cứu khoa học [1]; thu hút hơn 15.980 sinh viên đến
từ khắp các tỉnh thành [2].
Và một trong những khó khăn lớn nhất của sinh viên khi xa nhà là việc đi thuê trọ.
Các bạn sinh viên thường phải vất vả tìm kiếm khắp nơi vì không xác định được một khu
vực cụ thể, mất nhiều thời gian, công sức mới có thể tìm được một nơi trọ phù hợp với túi
tiền, đáp ứng được nhu cầu. Tuy số lượng sinh viên ngày càng tăng, nhu cầu tìm kiếm nơi
trọ ngày càng cao, nhưng cách thức tìm nhà trọ vẫn chưa được cải tiến. Các bạn chỉ có
thể tiếp cận thông tin thông qua người quen giới thiệu, bảng tin rao vặt, mạng xã hội…,
vất vả tìm đường đến địa chỉ đã được cung cấp để xem tình trạng nơi ở.
Ngày nay, hệ thống thông tin địa lý (GIS) đã phát triển công nghệ cho phép chia sẻ
thông tin qua Internet bằng cách tích hợp GIS trên nền Web, tạo thành WebGIS, cho
phép cung cấp thông tin trên cơ sở tích hợp các thông tin không gian và thuộc tính của
đối tượng đã trở thành hướng đi mới mang lại hiệu quả cao trong nhiều lĩnh vực của đời
sống xã hội; cung cấp thông tin, hỗ trợ tìm kiếm nhà trọ cũng là một trong số những lĩnh
vực ấy. WebGIS với những ưu điểm nổi bật như hiển thị trực quan, dễ tiếp cận, thông tin
truyền tải giàu hình ảnh, cho cái nhìn hệ thống tổng thể và toàn diện có thể hỗ trợ việc
cung cấp thông tin phòng trọ được tiến hành nhanh hơn, kết quả tốt hơn, từ đó có thể dễ
dàng đưa ra quyết định một cách hiệu quả hơn.
Từ những lý do trên nên em đã quyết định thực hiện đề tài: “Xây dựng WebGIS
phục vụ tra cứu thông tin nhà trọ trực tuyến thành phố Nha Trang”.

 Mục tiêu nghiên cứu:


 Mục tiêu chung: Xây dựng WebGIS tìm kiếm nhà trọ xung quanh khu vực Đại
học Nha Trang bằng cách ứng dụng kết hợp Công nghệ Thông tin và những kiến
thức về Hệ thống Thông tin Địa lý.
 Mục tiêu cụ thể:
 Xây dựng cơ sở dữ liệu.
 Biên tập bản đồ phân bố nhà trọ.
 Thiết kế giao diện WebGIS, kết nối cơ sở dữ liệu.
 Thiết kế các chức năng phục vụ tìm kiếm và tra cứu thông tin nhà trọ.
 Nội dung và phương thức thực hiện:
 Nội dung thực hiện:
 Khảo sát các tiêu chí chọn nơi trọ của sinh viên.
 Thu thập thông tin, xây dựng cơ sở dữ liệu nhà trọ.
 Thu thập, xử lý các lớp dữ liệu liên quan: hành chính, giao thông, trạm chờ xe
buýt, chợ, trường đại học - cao đẳng, cơ sở y tế, ngân hàng - ATM và các địa điểm
tiện ích khác.
 Biên tập bản đồ phân bố nhà trọ.
 Xây dựng WebGIS hiển thị bản đồ phân bố nhà trọ cùng các chức năng tìm kiếm
và tra cứu thông tin nhà trọ.
 Phương pháp:
 Chọn lọc các tiêu chí chọn nhà trọ của sinh viên.
 Nguồn thu thập dữ liệu không gian: dữ liệu được thu thập từ hai nguồn chính là
Google Map và OpenStreetMap.
 Thu thập và tiền xử lý dữ liệu: Một số thao tác cần tiến hành ở bước này là chuyển
đổi hệ tọa độ của các lớp dữ liệu về WGS84. Dữ liệu tải từ nguồn OpenStreetMap
sẽ bao gồm cả những vùng ngoài khu vực nghiên cứu nên cần cắt các lớp dữ liệu
này vừa đủ trong khu vực. Tiến hành join bảng thuộc tính ở một số lớp dữ liệu để
có được đầy đủ những thuộc tính mong muốn. Các lớp dữ liệu tiện ích (ATM, y tế,
chợ,...) tải từ OpenStreetMap ban đầu là một khối dữ liệu điểm trong cùng một
lớp, cần xác định, chọn ra từng nhóm đối tượng và xuất ra các lớp dữ liệu riêng
biệt, vì các dữ liệu này thường không đủ đối tượng nên cần đối chiếu với Google
Map và hiện trạng từ thực tế để bổ sung thêm đối tượng cho các lớp dữ liệu này.
 Biên tập bản đồ: Sử dụng 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,...), tùy chỉnh cho các lớp dữ liệu xuất hiện theo tỷ lệ bản đồ, tỷ lệ càng lớn
càng có nhiều đối tượng xuất hiện. Lưu style thành các file SLD (Styled Layer
Descriptor).
 Xây dựng WebGIS, xây dựng các chức năng tìm kiếm: sử dụng các ngôn ngữ lập
trình, chủ yếu là PHP và JavaScript để xây dựng nội dung cùng các tính năng,
dùng HTML kết hợp CSS để thiết kế giao diện Web. Bên cạnh đó còn cần có các
công cụ như XAMPP, GeoServer, PostgreSQL/PostGIS, thư viện OpenLayer.
 Cấu trúc của báo cáo bao gồm:
Chương 1: Tổng quan về vấn đề nghiên cứu.
Chương 2: Khảo sát hiện trạng thành phố Nha Trang, tình hình nhà trọ, đăng tin
và tìm trọ, xây dựng đặc tả bài toán phục vụ tra cứu thông tin nhà trọ trực tuyến.
Chương 3: Phân tích thiết kế hệ thống WebGIS phục vụ tra cứu thông tin nhà trọ
trực tuyến tại thành phố Nha Trang.
Chương 4: Thu thập, tiền xử lý dữ liệu; biên tập bản đồ và các công cụ cần cài đặt
để xây dựng hệ thống WebGIS. 
Chương 5: Trình bày những kết quả đã thực hiện được và hướng dẫn chi tiết cách
cài đặt, sử dụng chương trình.
Chương 6: Những kết quả, ưu điểm và mặt hạn chế của hệ thống WebGIS phục
vụ tra cứu thông tin nhà trọ trực tuyến thành phố Nha Trang đã thiết kế ở chương 3. Từ
đó đưa ra hướng phát triển để hệ thống được hoàn thiện hơn.

1. TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU


1. CƠ SỞ LÝ THUYẾT
1. Tổng quan về Hệ thống Thông tin Địa lý (GIS)
Hệ thống Thông tin Địa lý (GIS) là một hệ thống máy tính thu thập, lưu trữ, kiểm
tra và hiển thị dữ liệu liên quan đến các vị trí trên bề mặt Trái Đất. Bằng cách liên kết
những dữ liệu dường như không liên quan, GIS có thể giúp các cá nhân và tổ chức hiểu
rõ hơn về các mô hình và mối quan hệ không gian [3].
GIS có thể sử dụng bất kỳ thông tin nào bao gồm vị trí. Vị trí có thể được thể hiện
theo nhiều cách khác nhau, chẳng hạn như vĩ độ và kinh độ, địa chỉ hoặc mã ZIP (mã bưu
chính).
Nhiều loại thông tin khác nhau có thể được so sánh và đối chiếu bằng GIS. Hệ
thống có thể bao gồm dữ liệu về con người, chẳng hạn như dân số, thu nhập hoặc trình độ
học vấn. Nó có thể bao gồm thông tin về cảnh quan, chẳng hạn như vị trí của các dòng
suối, các loại thảm thực vật khác nhau và các loại đất khác nhau. Nó có thể bao gồm
thông tin về các địa điểm của các nhà máy, trang trại và trường học, hoặc cống thoát
nước mưa, đường xá và đường dây điện.
Với công nghệ GIS, mọi người có thể so sánh vị trí của những thứ khác nhau để
khám phá cách chúng liên quan đến nhau. Ví dụ: sử dụng GIS, một bản đồ duy nhất có
thể bao gồm các địa điểm tạo ra ô nhiễm, chẳng hạn như nhà máy và các địa điểm nhạy
cảm với ô nhiễm, vùng đất ngập nước và sông ngòi. Một bản đồ như vậy sẽ giúp mọi
người xác định nơi cung cấp nước có nguy cơ cao nhất.
 Thu thập dữ liệu
 Định dạng dữ liệu 
Các ứng dụng GIS bao gồm cả hệ thống phần cứng và phần mềm. Các ứng dụng
này có thể bao gồm dữ liệu bản đồ, dữ liệu hình ảnh, dữ liệu kỹ thuật số hoặc dữ liệu
trong bảng tính.
Dữ liệu bản đồ có thể bao gồm các thông tin như vị trí của sông ngòi, đường xá,
đồi và thung lũng. Dữ liệu bản đồ cũng có thể bao gồm dữ liệu khảo sát và thông tin ánh
xạ có thể được nhập trực tiếp vào GIS.
Dữ liệu kỹ thuật số cũng có thể được nhập vào GIS. Một ví dụ về loại thông tin
này là dữ liệu máy tính được thu thập bởi các vệ tinh cho thấy việc sử dụng đất - vị trí của
các trang trại, thị trấn và rừng.
Cảm biến từ xa cung cấp một công cụ khác có thể được tích hợp vào GIS. Cảm
biến từ xa bao gồm hình ảnh và dữ liệu khác được thu thập từ vệ tinh và máy bay không
người lái.
Cuối cùng, GIS cũng có thể bao gồm dữ liệu trong biểu mẫu bảng hoặc bảng tính,
chẳng hạn như nhân khẩu hoặc dân số. Nhân khẩu có thể dao động từ độ tuổi, thu nhập và
dân tộc đến các giao dịch mua gần đây và sở thích duyệt internet.
Công nghệ GIS cho phép tất cả các loại thông tin khác nhau này, bất kể nguồn gốc
hoặc định dạng ban đầu của chúng, được phủ lên nhau trên một bản đồ duy nhất. GIS sử
dụng vị trí làm biến chỉ mục chính để liên kết những dữ liệu dường như không liên quan
này.
Đưa thông tin vào GIS được gọi là thu thập dữ liệu. Dữ liệu đã ở dạng kỹ thuật số,
chẳng hạn như hầu hết các bảng và hình ảnh được chụp bởi vệ tinh, chỉ cần được tải lên
GIS. Tuy nhiên, bản đồ trước tiên phải được quét hoặc chuyển đổi sang định dạng kỹ
thuật số.
Hai loại định dạng tệp GIS chính là raster và vector. Định dạng raster là lưới của
các ô hoặc pixel. Định dạng raster rất hữu ích để lưu trữ dữ liệu GIS khác nhau, chẳng
hạn như độ cao hoặc hình ảnh vệ tinh. Định dạng vector là đa giác sử dụng các điểm
(được gọi là nút) và đường. Các định dạng vector rất hữu ích để lưu trữ dữ liệu GIS với
vùng ranh giới rõ ràng, chẳng hạn như tỉnh, thành phố hoặc khu phố.
 Mối quan hệ không gian
Công nghệ GIS có thể được sử dụng để hiển thị các mối quan hệ không gian và
mạng tuyến tính. Các mối quan hệ không gian có thể hiển thị địa hình, chẳng hạn như các
lĩnh vực nông nghiệp và thủy lợi. Họ cũng có thể hiển thị các mô hình sử dụng đất, chẳng
hạn như vị trí của các công viên và khu nhà ở.

Các mạng tuyến tính, đôi khi được gọi là mạng hình học, thường được đại diện bởi
đường, sông và lưới tiện ích công cộng trong GIS. Một dòng trên bản đồ có thể chỉ ra một
con đường hoặc đường cao tốc. Tuy nhiên, với các lớp GIS, con đường đó có thể chỉ ra
ranh giới của một thành phố, công viên công cộng hoặc khu vực dân cư. 
Sử dụng thu thập dữ liệu đa dạng, mạng tuyến tính của một con sông có thể được
ánh xạ trên GIS để chỉ ra dòng chảy của các nhánh khác nhau.
Bản đồ thế giới có thể hiển thị kích thước chính xác của các quốc gia hoặc hình
dạng chính xác của chúng. GIS lấy dữ liệu từ các bản đồ được tạo bằng các hình chiếu
khác nhau và kết hợp chúng để tất cả thông tin có thể được hiển thị bằng một hình chiếu
chung.
 Bản đồ GIS
Khi tất cả dữ liệu mong muốn đã được nhập vào hệ thống GIS, chúng có thể được
kết hợp để tạo ra nhiều bản đồ riêng lẻ, tùy thuộc vào lớp dữ liệu nào được bao gồm. Một
trong những cách sử dụng phổ biến nhất của công nghệ GIS liên quan đến việc so sánh
các tính năng tự nhiên với hoạt động của con người.
Ví dụ, bản đồ GIS có thể hiển thị những tính năng nhân tạo gần một số tính năng
tự nhiên nhất định, chẳng hạn như nhà cửa và doanh nghiệp nào ở những khu vực dễ bị
ngập lụt.
Công nghệ GIS cũng cho phép người dùng “đào sâu” trong một lĩnh vực cụ thể
với nhiều loại thông tin. Bản đồ của một thành phố hoặc khu phố duy nhất có thể liên
quan đến thông tin như thu nhập trung bình, doanh số bán sách hoặc mô hình bỏ phiếu.
Bất kỳ lớp dữ liệu GIS nào cũng có thể được thêm hoặc loại bỏ khỏi bản đồ.
Bản đồ GIS có thể được sử dụng để hiển thị thông tin về số lượng và mật độ. Ví
dụ, GIS có thể cho thấy có bao nhiêu bác sĩ trong một khu phố so với dân số của khu vực.
Với công nghệ GIS, các nhà nghiên cứu cũng có thể xem xét sự thay đổi theo thời
gian. Họ có thể sử dụng dữ liệu vệ tinh để nghiên cứu các chủ đề như sự tăng lên và giảm
xuống của lớp băng ở các vùng cực và phạm vi phủ sóng đó đã thay đổi như thế nào theo
thời gian. Một khu cảnh sát có thể nghiên cứu những thay đổi trong dữ liệu tội phạm để
giúp xác định nơi phân công sĩ quan.

Một cách sử dụng quan trọng của công nghệ GIS dựa trên thời gian liên quan đến
việc tạo ra chụp ảnh time-lapse cho thấy các quy trình xảy ra trong các khu vực rộng lớn
và thời gian dài. Ví dụ, dữ liệu cho thấy sự chuyển động của chất lỏng trong đại dương
hoặc dòng không khí giúp các nhà khoa học hiểu rõ hơn về độ ẩm và năng lượng nhiệt di
chuyển trên toàn cầu như thế nào.
Công nghệ GIS đôi khi cho phép người dùng truy cập thêm thông tin về các khu
vực cụ thể trên bản đồ. Một người có thể trỏ đến một vị trí trên bản đồ kỹ thuật số để tìm
thông tin khác được lưu trữ trong GIS về vị trí đó. Ví dụ: người dùng có thể nhấp vào
một trường học để tìm số lượng học sinh đã đăng ký, số lượng học sinh trên mỗi giáo
viên hoặc cơ sở thể thao mà trường có.
Các hệ thống GIS thường được sử dụng để tạo ra hình ảnh ba chiều. Điều này rất
hữu ích, ví dụ, cho các nhà địa chất nghiên cứu các đứt gãy động đất.
Công nghệ GIS giúp việc cập nhật bản đồ dễ dàng hơn nhiều so với việc cập nhật
bản đồ được tạo thủ công. Dữ liệu cập nhật chỉ đơn giản là có thể được thêm vào chương
trình GIS hiện có. Một bản đồ mới sau đó có thể được in hoặc hiển thị trên màn hình.
Điều này bỏ qua quá trình vẽ bản đồ truyền thống, có thể tốn thời gian và tốn kém.
Hình 1.1. Minh họa các lớp bản đồ GIS [3]

 Ứng dụng GIS


Những người làm việc trong nhiều lĩnh vực khác nhau sử dụng công nghệ GIS.
Công nghệ GIS có thể được sử dụng cho các cuộc điều tra khoa học, quản lý tài nguyên
và lập kế hoạch phát triển.
Nhiều doanh nghiệp bán lẻ sử dụng GIS để giúp họ xác định vị trí đặt cửa hàng
mới. Các công ty tiếp thị sử dụng GIS để quyết định ai sẽ tiếp thị các cửa hàng, nhà hàng
và ở đâu nên tiếp thị nó.
Các nhà khoa học sử dụng GIS để so sánh số liệu thống kê dân số với các nguồn
tài nguyên như nước uống. Các nhà sinh học sử dụng GIS để theo dõi các mô hình di cư
động vật.
Các cơ quan tỉnh, thành phố hoặc quận huyện sử dụng GIS để giúp lập kế hoạch
ứng phó của họ trong trường hợp thiên tai như động đất hoặc bão. Bản đồ GIS có thể cho
các cơ quan này thấy những khu phố nào đang gặp nguy hiểm nhất, nơi xác định vị trí nơi
trú ẩn khẩn cấp và những tuyến đường mọi người nên đi để đạt được sự an toàn.
Các kỹ sư sử dụng công nghệ GIS để hỗ trợ thiết kế, triển khai và quản lý mạng
truyền thông cho điện thoại di động, cũng như cơ sở hạ tầng cần thiết cho kết nối internet.
Các kỹ sư khác có thể sử dụng GIS để phát triển mạng lưới đường bộ và cơ sở hạ tầng
giao thông. 
Không có giới hạn đối với loại thông tin có thể được phân tích bằng công nghệ
GIS.
2. Tổng quan về WebGIS (Kết hợp GIS trên nền tảng Web)
World Wide Web (WWW) đã thay đổi mọi thứ và GIS cũng không ngoại lệ.
WebGIS là một hình thức nâng cao của Hệ thống thông tin địa lý có sẵn trên các nền tảng
web. Nó bắt đầu như một GIS chạy trong các trình duyệt web và đã phát triển thành
WebGIS phục vụ máy tính để bàn và thiết bị di động [4]. 
Đó là bất kỳ GIS nào sử dụng công nghệ Web để giao tiếp giữa một số thành
phần: máy chủ GIS (được xác định bởi URL) và máy khách (trình duyệt web, ứng dụng
máy tính để bàn hoặc ứng dụng di động). Giao tiếp thông qua Giao thức truyền siêu văn
bản (HTTP / HTTPS) và định dạng của phản hồi có thể là HTML, hình ảnh nhị phân,
XML (Ngôn ngữ đánh dấu mở rộng), GML (Ngôn ngữ đánh dấu địa lý) hoặc JSON (Ký
hiệu đối tượng JavaScript). 
Mục tiêu bao quát của công nghệ này là cho phép người dùng tự động truy cập,
chia sẻ và thao tác dữ liệu không gian địa lý trên web với bất kỳ nền tảng hoặc giao thức
nào.
 Máy chủ GIS và dịch vụ web OGC
Máy chủ GIS là phần mềm chủ động lắng nghe các yêu cầu cụ thể được gửi bởi
máy khách. Các yêu cầu này có thể dành cho các dịch vụ tuân thủ OGC khác nhau, ví dụ
như yêu cầu GetMap trong Dịch vụ Bản đồ Web (WMS), yêu cầu GetFeature trong
trường hợp Dịch vụ Tính năng Web (WFS), nhận yêu cầu bảo hiểm trong Dịch vụ phủ
sóng web (WCS), v.v.
Máy chủ GIS tải tập dữ liệu đã được yêu cầu (ví dụ: tệp hình dạng hoặc raster)
hiển thị nó, chia hình ảnh thành các ô và gửi nó đến máy khách yêu cầu. Mỗi khi máy
khách tương tác với bản đồ, máy chủ GIS nhận được yêu cầu và gửi ô hình ảnh dưới dạng
phản hồi với tốc độ rất nhanh.
Geoserver là một trong những máy chủ GIS được sử dụng phổ biến nhất. Nó có
giao diện quản trị dựa trên web và triển khai các bộ dữ liệu trong các giao thức tuân thủ
OGC, điều này làm cho nó trở thành một lựa chọn lý tưởng.
Các dịch vụ OGC được chỉ định bởi Open Geospatial Consortium (OGC) cho
phép tất cả các loại chức năng không gian địa lý. Chúng cho phép trao đổi dữ liệu địa lý
trên web. Ngôn ngữ đánh dấu địa lý (GML) dựa trên Ngôn ngữ đánh dấu mở rộng (XML)
được sử dụng để trao đổi thông tin.
Một số ví dụ:
Dịch vụ bản đồ web (WMS): Đây là một tiêu chuẩn OGC cho phép người dùng
truy cập từ xa hình ảnh bản đồ được suy luận địa lý thông qua các yêu cầu giao thức
truyền siêu văn bản (HTTPS).
Dịch vụ tính năng web (WFS): Đây là một giao diện được chỉ định bởi Open GIS
Consortium (OGC) cho phép trao đổi dữ liệu địa lý trên Web. Người dùng có thể tạo,
xóa, cập nhật hoặc khóa phiên bản tính năng.
Dịch vụ phủ sóng web (WCS): Nó cung cấp dữ liệu phủ sóng đa chiều để truy cập
qua Internet. Ví dụ: hình ảnh raster. 

 Các máy khách WebGIS


Khách hàng của WebGIS có thể bao gồm các ứng dụng máy tính để bàn, các ứng
dụng di động gốc hoặc bất kỳ ứng dụng hỗ trợ trình duyệt nào.
Một số giao diện lập trình ứng dụng mã nguồn mở và độc quyền (API) được sử
dụng để tạo các ứng dụng frontend web và di động sử dụng các dịch vụ web tuân thủ
OGC: OpenLayers, Leaflet, Mapbox GL, ArcGIS APIs,…
 Đặc điểm và yếu tố chính của WebGIS
WebGIS phải đáp ứng những điều sau đây
 Phạm vi tiếp cận toàn cầu bằng HTTP / HTTPS tức là máy chủ phải có bộ định vị
tài nguyên thống nhất (URL) cụ thể trên web để khách hàng có thể truy cập dễ
dàng.
 Hỗ trợ một số lượng lớn người dùng cùng một lúc: đòi hỏi hiệu suất cao và khả
năng mở rộng.
 Khả năng đa nền tảng tốt hơn: Các trình duyệt Web khác nhau: IE, Firefox, G.
Chrome cho hệ điều hành đa dạng (Win, Linux, MacOS, iOS),…
 Ứng dụng của WebGIS
WebGIS có các ứng dụng đa dạng. Một số trong số chúng được liệt kê dưới đây:
 Hợp tác thu thập dữ liệu không gian địa lý, ví dụ: Geoportals, clearinghouses, SDI,
v.v.
 Hệ thống thông tin địa lý tình nguyện (Volunteering Geographic Information
System). Ví dụ: OpenStreetMap.
 WebGIS có thể được sử dụng để thiết kế và lập kế hoạch cho các dự án của chính
phủ như quản lý lũ lụt đô thị, thiên tai, v.v.
 Ưu điểm của WebGIS
 Miễn phí
 Khả năng tiếp cận dễ dàng.
 Được sự hỗ trợ từ cộng đồng lớn.
 Kiểm soát: Người cung cấp dịch vụ có toàn quyền kiểm soát phần mềm do đó có
thể tùy chỉnh nó theo nhu cầu và mong muốn của khách hàng, v.v.
 Những thách thức của WebGIS
 Khả năng truy cập dành cho người khuyết tật
 Vấn đề bảo mật
 Chất lượng dữ liệu
 Hiệu suất hệ thống
 Khả năng truy cập ở các vị trí kết nối kém
 Chi phí bảo trì, v.v.
3. Tổng quan về GeoServer
GeoServer là một máy chủ mã nguồn mở được viết bằng Java cho phép người
dùng chia sẻ, xử lý và chỉnh sửa 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 nào bằng cách sử dụng
các tiêu chuẩn mở. GeoServer đã phát triển để trở thành một phương pháp dễ dàng kết
nối thông tin hiện có với bản đồ địa cầu ảo như Google Earth và NASA World Wind
cũng như các bản đồ dựa trên web như OpenLayers, Leaflet, Google Maps và Bing Maps.
GeoServer hoạt động như là việc triển khai tham chiếu của tiêu chuẩn dịch vụ tính năng
web không gian mở Consortium và cũng thực hiện dịch vụ bản đồ web, dịch vụ phủ sóng
web và thông số kỹ thuật dịch vụ xử lý web [5].
GeoServer hoạt động như một nút trong cơ sở hạ tầng dữ liệu không gian miễn phí
và mở. Giống như Apache HTTP Server đã cung cấp một máy chủ web miễn phí và mở
để xuất bản HTML, GeoServer cũng hoạt động nhằm mục đích làm tương tự cho dữ liệu
không gian địa lý.
 Các đặc trưng của GeoServer
GeoServer đọc nhiều định dạng dữ liệu khác nhau bao gồm: PostGIS, Oracle
Spatial, ArcSDE, DB2, MySQL, MongoDB, Apache Solr, Shapefiles, GeoTIFF,
GTOPO30, ECW, MrSID, JPEG2000.
Thông qua các giao thức tiêu chuẩn, nó tạo ra KML, GML, Shapefile, GeoRSS,
PDF, GeoJSON, JPEG, GIF, SVG, PNG và hơn thế nữa. Ngoài ra, người ta có thể chỉnh
sửa dữ liệu thông qua hồ sơ giao dịch WFS (WFS-T). GeoServer có thư viện mở
OpenLayers tích hợp để xem trước các lớp dữ liệu.
GeoServer cũng hỗ trợ xuất bản hiệu quả dữ liệu không gian địa lý lên Google
Earth thông qua việc sử dụng các liên kết mạng, sử dụng KML. Các tính năng nâng cao
cho đầu ra Google Earth bao gồm các mẫu cho cửa sổ bật lên tùy chỉnh, trực quan hóa
thời gian, chiều cao và “siêu lớp phủ”.
GeoServer được xây dựng dựa vào GeoTools, một thư viện của GIS.
 GeoServer được ứng dụng trong một số tổ chức nổi bật như:
 MassGIS (GIS tiểu bang Massachusetts, Hoa Kỳ)
 Macris Maps (Ủy ban Lịch sử Massachusetts, Hoa Kỳ)
 TriMet (Cơ quan vận chuyển cho Portland, Oregon)
 Khảo sát vũ khí (Cơ quan Lập bản đồ Quốc gia Vương quốc Anh)
 Viện Géographique National (Cơ quan Lập bản đồ Quốc gia Pháp)
 GBIF (Cơ sở thông tin đa dạng sinh học toàn cầu)
 Ngân hàng Thế giới
 Mô hình động đất toàn cầu
 GMOS (Hệ thống quan sát thủy ngân toàn cầu)
 FAO (Tổ chức Lương thực và Nông nghiệp Liên Hợp Quốc)
 Sở Công nghệ Thông tin và Viễn thông Thành phố New York, Hoa Kỳ
 ITU (Liên minh Viễn thông Quốc tế)
4. Tổng quan về PostgreSQL
PostgreSQL là một hệ thống quản lý cơ sở dữ liệu mã nguồn mở cấp doanh
nghiệp. Nó hỗ trợ cả SQL và JSON cho các truy vấn quan hệ và phi quan hệ để mở rộng
và tuân thủ SQL. PostgreSQL hỗ trợ các loại dữ liệu nâng cao và các tính năng tối ưu hóa
hiệu suất, chỉ có sẵn trong các cơ sở dữ liệu thương mại đắt tiền, như Oracle và SQL
Server. PostgreSQL còn được gọi là Postgres. Nó được hỗ trợ bởi một cộng đồng các nhà
phát triển giàu kinh nghiệm, những người đã có những đóng góp to lớn để biến nó thành
một hệ thống DBMS (hệ quản trị cơ sở dữ liệu) có độ tin cậy cao [6].
 Một số tính năng PostgreSQL nổi bật:
 Tương thích với các nền tảng khác nhau bằng cách sử dụng tất cả các ngôn ngữ
cấp cao và phần mềm trung gian.
 Nó cung cấp một cơ chế khóa tinh vi nhất.
 Hỗ trợ kiểm soát đồng thời đa phiên bản.
 Chức năng lập trình phía máy chủ.
 Tuân thủ tiêu chuẩn ANSI SQL.
 Hỗ trợ đầy đủ cho kiến trúc mạng máy khách - máy chủ.
 SSL sao chép dựa trên nhật ký và dựa trên kích hoạt.
 Máy chủ dự phòng và tính khả dụng cao.
 Hướng đối tượng và tương thích ANSI - SQL2008.
 Hỗ trợ cho JSON cho phép liên kết với các ngân hàng dữ liệu khác như NoSQL,
hoạt động như một trung tâm liên kết cho cơ sở dữ liệu polyglot.
 Ứng dụng của PostgreSQL:
 Ngành tài chính: PostgreSQL là một hệ thống DBMS lý tưởng cho ngành tài
chính. Hơn nữa, nó hoàn toàn tuân thủ ACID làm cho nó trở thành một lựa chọn lý
tưởng cho OLTP (Xử lý giao dịch trực tuyến). Nó cũng có khả năng thực hiện
phân tích cơ sở dữ liệu. Nó có thể được tích hợp với phần mềm toán học như
Matlab và R.
 Dữ liệu GIS của chính phủ: PostgreSQL cung cấp GIS mạnh mẽ được gọi là
“PostGIS”. Tiện ích mở rộng này cung cấp hàng trăm chức năng để xử lý dữ liệu
hình học ở các định dạng khác nhau. PostGIS tuân thủ tiêu chuẩn cao. Hơn nữa,
bằng cách sử dụng cả QGIS hoặc GeoServer, cộng đồng mã nguồn mở cung cấp
phương pháp dễ nhất để xử lý Geodata.
 Sản xuất: Ngày nay, các nhà sản xuất công nghiệp cũng sử dụng PostgreSQL để
tăng tốc quá trình kinh doanh tổng thể của họ. Nó cũng giúp họ tối ưu hóa hiệu
suất chuỗi cung ứng bằng cách sử dụng DBMS mã nguồn mở này làm phụ trợ lưu
trữ. Nó cho phép các công ty giảm chi phí hoạt động của doanh nghiệp của họ.
 Công nghệ web và NoSQL: Nếu trang web của bạn yêu cầu xử lý hàng trăm hoặc
thậm chí hàng ngàn yêu cầu mỗi giây tại thời điểm đó, khả năng mở rộng chắc
chắn là một vấn đề lớn. Ở đây, Postgres chứng minh giải pháp tốt nhất.
PostgreSQL hoạt động tốt với tất cả các framework hiện đại như Django, Node.js,
Hibernate, PHP, v.v. Nó cũng cung cấp khả năng sao chép cho phép mở rộng quy
mô bao nhiêu máy chủ cơ sở dữ liệu tùy thích.
 Dữ liệu khoa học: Bạn cần tạo terabyte dữ liệu nếu bạn đang làm việc trong
nghiên cứu và dự án khoa học. Do đó, điều quan trọng là phải xử lý một cách hiệu
quả nhất có thể. Vì vậy, PostgreSQL cung cấp khả năng phân tích tuyệt vời và
công cụ SQL mạnh mẽ. Điều này giúp bạn quản lý một lượng lớn dữ liệu một cách
dễ dàng.
5. Tổng quan về PostGIS
PostGIS là một chương trình phần mềm mã nguồn mở có thêm hỗ trợ cho các đối
tượng địa lý đến PostgreSQL cơ sở dữ liệu đối tượng - quan hệ. PostGIS tuân theo các
Đặc điểm Đơn giản cho Đặc tả SQL từ Hiệp hội Không gian Địa lý Mở (OGC) [7].
Về mặt kỹ thuật, PostGIS được triển khai như một phần mở rộng bên ngoài của
PostgreSQL.
 Tính năng:
 Các loại hình học cho Điểm, Chuỗi đường, Đa giác, Đa điểm, Chuỗi đa đường, Đa
phân tử và Bộ sưu tập hình học.
 Các vị từ không gian để xác định tương tác của các hình học bằng cách sử dụng
3x3 DE-9IM (được cung cấp bởi thư viện phần mềm GEOS) [7].
 Toán tử không gian để xác định các phép đo không gian địa lý như diện tích,
khoảng cách, chiều dài và chu vi [7].
 Các toán tử không gian để xác định các hoạt động tập hợp không gian địa lý, như
liên hiệp, chênh lệch, chênh lệch đối xứng và bộ đệm (do GEOS cung cấp).
 Các chỉ mục không gian R-tree-over-GiST (Generalized Search Tree) để truy vấn
không gian tốc độ cao.
 Hỗ trợ chọn lọc chỉ mục, để cung cấp các kế hoạch truy vấn hiệu suất cao cho các
truy vấn không gian / phi không gian hỗn hợp.
 Đối với dữ liệu raster, PostGIS WKT Raster (hiện được tích hợp vào PostGIS 2.0+
và được đổi tên thành PostGIS Raster) [7].
6. Tổng quan về OpenLayers Framework
OpenLayers là thư viện JavaScript mã nguồn mở (được cung cấp theo Giấy phép
BSD) để hiển thị dữ liệu bản đồ trong trình duyệt web dưới dạng bản đồ trơn. Nó cung
cấp một API để xây dựng các ứng dụng địa lý dựa trên web phong phú tương tự như
Google Maps và Bing Maps [8].
 Tính năng: OpenLayers hỗ trợ GeoRSS, KML (Ngôn ngữ đánh dấu lỗ khóa),
Ngôn ngữ đánh dấu địa lý (GML), GeoJSON và dữ liệu bản đồ từ bất kỳ nguồn
nào sử dụng tiêu chuẩn OGC dưới dạng Dịch vụ bản đồ web (WMS) hoặc Dịch vụ
tính năng web (WFS).
2. CÁC NGÔN NGỮ ĐƯỢC SỬ DỤNG
1. Ngôn ngữ HTML5 (Ngôn ngữ đánh dấu siêu văn bản)
HTML là viết tắt của Ngôn ngữ đánh dấu siêu văn bản. Nó được sử dụng để thiết
kế các trang web bằng ngôn ngữ đánh dấu. HTML là sự kết hợp của ngôn ngữ Siêu văn
bản và Đánh dấu. Siêu văn bản xác định liên kết giữa các trang web. Ngôn ngữ đánh dấu
được sử dụng để xác định tài liệu văn bản trong thẻ xác định cấu trúc của các trang web.
HTML5 là phiên bản HTML thứ năm và hiện tại HTML5 đã cải thiện đánh dấu có sẵn
cho các tài liệu [9].
 Tính năng mới:
 HTML5 đã giới thiệu các tính năng đa phương tiện mới hỗ trợ điều khiển âm
thanh và video bằng cách sử dụng thẻ <audio> và <video>.
 Có các yếu tố đồ họa mới bao gồm đồ họa vector và thẻ.
 Làm phong phú nội dung ngữ nghĩa bằng cách bao gồm <header> <footer>,
<article>, <section> và <figure> được thêm vào.
 Kéo và thả: Người dùng có thể lấy một đối tượng và kéo nó thêm vào một vị trí
mới.
 Dịch vụ vị trí địa lý: Giúp xác định vị trí hiện tại của khách hàng.
 Cơ sở lưu trữ web cung cấp các phương pháp ứng dụng web để lưu trữ dữ liệu trên
trình duyệt web.
 Sử dụng cơ sở dữ liệu SQL để lưu trữ dữ liệu ngoại tuyến.
 Cho phép vẽ các hình dạng khác nhau như hình tam giác, hình chữ nhật, hình tròn,
v.v.
 Có khả năng xử lý cú pháp sai.
 Dễ dàng khai báo DOCTYPE ví dụ <!doctype html>
 Mã hóa ký tự dễ dàng, ví dụ <meta charset = “UTF-8”>
 Các thành phần mới được thêm vào trong HTML5:
<article>: Các <article> được sử dụng để đại diện cho một bài viết hoặc bình luận
của người dùng. Cụ thể hơn, nội dung trong thẻ <article> độc lập với nội dung khác của
trang web (mặc dù nó có thể liên quan).
<aside>: <aside> được sử dụng để mô tả đối tượng chính của trang web theo cách
ngắn hơn như bút tô sáng. Về cơ bản, nó xác định nội dung có liên quan đến nội dung
chính của trang web nhưng không cấu thành ý định chính của trang chính. Thẻ <aside>
tác giả, liên kết, nội dung liên quan, v.v.
<figcaption>: <figurecaption> trong HTML được sử dụng để đặt chú thích cho
phần tử hình trong tài liệu.
<figure>: Việc thẻ <figure> trong HTML được sử dụng để thêm nội dung khép
kín như hình minh họa, sơ đồ, ảnh hoặc danh sách mã trong tài liệu. Nó có liên quan đến
luồng chính nhưng nó có thể được sử dụng ở bất kỳ vị trí nào của tài liệu và hình, đi theo
dòng chảy của tài liệu và nếu xóa nó thì nó không ảnh hưởng đến dòng chảy của tài liệu.
<header>: Nó chứa tiêu đề cũng như các nội dung khác, chẳng hạn như liên kết
điều hướng, mục lục, v.v.
<footer>: <footer> trong HTML được sử dụng để xác định chân trang của tài liệu
HTML. Phần này chứa thông tin chân trang (thông tin tác giả, thông tin bản quyền, nhà
cung cấp dịch vụ, v.v.). Thẻ chân trang được sử dụng trong thẻ nội dung. Thẻ <footer> là
mới trong HTML5. Các yếu tố chân trang yêu cầu thẻ bắt đầu cũng như thẻ kết thúc.
<main>: Phân định nội dung chính của nội dung của tài liệu hoặc ứng dụng web.
<mark>: Thẻ <mark> HTML được sử dụng để xác định văn bản được đánh dấu.
Nó được sử dụng để làm nổi bật phần của văn bản trong đoạn văn.
<nav>: <nav> được sử dụng để khai báo phần điều hướng trong tài liệu HTML.
Các trang web thường có các phần dành riêng cho các liên kết điều hướng, cho phép
người dùng điều hướng trang web. Các liên kết này có thể được đặt bên trong thẻ điều
hướng.
<section>: Nó phân định một nhóm nội dung theo chủ đề.
<details>: Thẻ <details> được sử dụng cho nội dung / thông tin ban đầu bị ẩn
nhưng có thể được hiển thị nếu người dùng muốn xem nó. Thẻ này được sử dụng để tạo
tiện ích tương tác mà người dùng có thể mở hoặc đóng nó. Thẻ <details> hiển thị khi mở
các thuộc tính đã đặt.
<summary>: Các thẻ <summary> trong HTML được sử dụng để xác định một
bản tóm tắt cho <details> element. Phần <summary> được sử dụng cùng với <details>
element và cung cấp một bản tóm tắt hiển thị cho người dùng. Khi người dùng nhấp vào
bản tóm tắt, nội dung được đặt bên trong <details> element sẽ hiển thị và thẻ  
<summary> yêu cầu cả thẻ bắt đầu và kết thúc.
<time>: Thẻ <time> được sử dụng để hiển thị dữ liệu / thời gian có thể đọc được
của con người. Nó cũng có thể được sử dụng để mã hóa ngày và giờ ở dạng có thể đọc
được bằng máy. Ưu điểm chính của người dùng là có thể đề nghị thêm lời nhắc sinh nhật
hoặc sự kiện theo lịch trình vào lịch cá nhân và các công cụ tìm kiếm của người dùng có
thể tạo ra kết quả tìm kiếm thông minh hơn.
<bdi>: Thẻ <bdi> đề cập đến sự cô lập hai chiều. Nó phân biệt văn bản với văn
bản khác có thể được định dạng theo hướng khác nhau. Thẻ này được sử dụng khi người
dùng tạo văn bản với một hướng dẫn không xác định.
<wbr>: Thẻ <wbr> trong HTML là viết tắt của cơ hội ngắt từ và được sử dụng để
xác định vị trí trong văn bản được trình duyệt coi là ngắt dòng. Nó chủ yếu được sử dụng
khi từ được sử dụng quá dài và có khả năng phá vỡ các dòng ở sai vị trí để phù hợp với
văn bản.
<datalist>: <datalist> được sử dụng để cung cấp tính năng tự động hoàn tất trong
các tệp HTML. Nó có thể được sử dụng với thẻ nhập liệu, để người dùng có thể dễ dàng
điền dữ liệu vào biểu mẫu bằng cách chọn dữ liệu.
<keygen>: <keygen> trong HTML được sử dụng để chỉ định trường trình tạo cặp
khóa trong biểu mẫu. Mục đích của <keygen> là cung cấp một cách an toàn để xác thực
người dùng. Khi một từ được gửi thì hai khóa được tạo ra, khóa riêng tư và khóa công
khai. Khóa riêng được lưu trữ cục bộ và khóa công khai được gửi đến máy chủ. Khóa
công khai được sử dụng để tạo chứng chỉ máy khách để xác thực người dùng trong tương
lai.
<output>: <output> trong HTML được sử dụng để đại diện cho kết quả tính toán
được thực hiện bởi tập lệnh phía máy khách như JavaScript.

<progress>: Nó được sử dụng để đại diện cho tiến trình của một nhiệm vụ. Nó
cũng được xác định rằng bao nhiêu công việc được thực hiện và bao nhiêu còn lại để tải
về một thứ. Nó không được sử dụng để đại diện cho không gian đĩa hoặc truy vấn có liên
quan.
<svg>: Thẻ đồ họa vector có thể mở rộng.
<canvas>: <canvas> trong HTML được sử dụng để vẽ đồ họa trên trang web bằng
JavaScript. Nó có thể được sử dụng để vẽ đường dẫn, hộp, văn bản, gradient và thêm
hình ảnh. Theo mặc định, nó không chứa viền và văn bản.
<audio>: Nó xác định nội dung âm nhạc hoặc âm thanh.
<embed>: Xác định bộ chứa cho các ứng dụng bên ngoài (thường là trình phát
video).
<source>: Nó định nghĩa các nguồn cho <video> và <audio>.
<track>: Nó xác định các bản nhạc cho <video> và <audio>.
<video>: Nó xác định nội dung video.
 Ưu điểm:
 Hỗ trợ tất cả các trình duyệt hiện đại. 
 Thân thiện với nhiều thiết bị hơn. 
 Dễ dàng sử dụng và thực hiện. 
 HTML5 tích hợp với CSS, JavaScript, v.v. có thể giúp xây dựng các trang web
đẹp. 
 Hạn chế:
 Các mã dài phải được viết, rất tốn thời gian. 
 Chỉ có các trình duyệt hiện đại mới hỗ trợ nó.

2. Ngôn ngữ CSS3


Để nói về CSS3 chắc chắn không thể không nhắc đến tiền thân của nó là CSS.
CSS là từ viết tắt của cụm từ Cascading Style Sheets, ngôn ngữ được sử dụng để tạo nên
phong cách cho website [10]:
 Có thể hiểu CSS đóng vai trò như một công cụ giúp chúng ta thêm vào những thay
đổi về mặt hình thức như đổi bố cục, màu sắc, font chữ,…
 CSS hoạt động bằng cách khoanh vùng chọn dựa vào tên một thẻ HTML, ID hay
Class. Từ đó, áp dụng những thuộc tính cần thay đổi lên vùng được chọn.
 Nếu một website không có CSS thì đó sẽ chỉ đơn thuần là một trang chứa văn bản
với 2 màu chủ đạo là trắng và đen.
CSS lần đầu tiên được đề xuất bởi Håkon Wium Lie vào ngày 10 tháng 10 năm
1994 và được W3C được phát hành phiên bản đầu tiên CSS1 vào năm 1996.
CSS3 là phiên bản thứ 3 và cũng là mới nhất của CSS, CSS3 được bổ sung thêm
nhiều tính năng mới tiện lợi hơn CSS cho người dùng. Được thừa hưởng tất cả những gì
có trong phiên bản trước và bổ sung các tính năng mới, CSS3 hiện rất được ưa chuộng
trong thiết kế website.
Với CSS3 nếu bạn kết hợp với jQuery nữa thì website của bạn sẽ trở nên sinh
động, điển hình là các hiệu ứng Parallax, Landing Page, …
CSS3 không phải là một thành phần của HTML5 nhưng lại có quan hệ mật thiết
với HTML5 do được phát triển song song với HTML5.
Các module trong CSS3:
 Selectors
 Box Model
 Backgrounds and Borders
 Image Values and Replaced Content
 Text Effects
 2D/3D Transformations
 Animations
 Multiple Column Layout
 User Interface
Các tính năng mới nổi bật của CSS3 [10]:
 Bộ chọn
 CSS3 Pseudo – Classes
 Màu trong CSS3
 CSS3 RGBA
 CSS3 HSL và HSLA
 CSS3 Opacity
 Góc làm tròn: Bán kính đường viền
 Drop Shadows – Hiệu ứng bóng đổ
 Text Shadow – Bóng văn bản
 Linear Gradients – Độ dốc tuyến tính
 Radial Gradients – Độ dốc xuyên tâm
 Multiple Background Images – Nhiều hình nền
Những ưu điểm của CSS3:
 Tương thích với HTML5: Khi mà HTML5 đang dần thay thế Flash, thì CSS3
chính là sự hỗ trợ cần thiết để có một giao diện website hoàn hảo.
 Hiển thị cho các thiết bị có kích thước khác nhau: Media Queries mới ra mắt
trong CSS3 là bước ngoặt lớn cho các website. Hỗ trợ tương thích với các kích
thước màn hình mà không cần chỉnh sửa nội dung hiển thị.
 Tối ưu hóa công cụ tìm kiếm SEO: Một điểm mạnh nữa của CSS3 được rất nhiều
lập trình viên ưa chuộng là khả năng loại bỏ những đoạn code HTML bị thừa.
Giúp các công cụ tìm kiếm có thể hoạt động tốt hơn. 
 Tương thích với mọi trình duyệt: CSS3 cũng được đánh giá rất cao về khả năng
tương thích khi có thể hoạt động tốt trên hầu hết các trình duyệt phổ biến. Dù hiển
thị trên nhiều trình duyệt khác nhau nhưng website vẫn khá nhất quán.

3. Ngôn ngữ JavaScript


JavaScript là một ngôn ngữ kịch bản nhẹ, đa nền tảng và được thông dịch. Nó nổi
tiếng với sự phát triển của các trang web, nhiều môi trường không phải trình duyệt cũng
sử dụng nó. JavaScript có thể được sử dụng cho các phát triển phía Máy khách cũng như
phát triển phía Máy chủ. JavaScript chứa một thư viện các đối tượng tiêu chuẩn, như 
Array, Date và Math và một tập hợp cốt lõi của các yếu tố ngôn ngữ như toán tử, cấu trúc
điều khiển và câu lệnh [11].
Phía máy khách: Nó cung cấp các đối tượng để điều khiển trình duyệt và Mô
hình đối tượng tài liệu (DOM) của nó. Giống như nếu tiện ích mở rộng phía máy khách
cho phép một ứng dụng đặt các yếu tố trên biểu mẫu HTML và phản hồi các sự kiện của
người dùng như nhấp chuột, nhập biểu mẫu và điều hướng trang. Các thư viện hữu ích
cho phía máy khách là AngularJS, ReactJS, VueJS và rất nhiều thư viện khác.
Phía máy chủ: Nó cung cấp các đối tượng liên quan đến việc chạy JavaScript trên
máy chủ. Giống như nếu các phần mở rộng phía máy chủ cho phép một ứng dụng giao
tiếp với cơ sở dữ liệu và cung cấp thông tin liên tục từ lời kêu gọi này đến một ứng dụng
khác hoặc thực hiện các thao tác tệp trên máy chủ. Framework nổi tiếng nhất hiện nay là
Node.js.
Với những tiến bộ trong công nghệ trình duyệt và JavaScript đã chuyển sang máy
chủ với Node.js và các framework khác, JavaScript có khả năng nhiều hơn nữa. Dưới đây
là một vài điều mà chúng ta có thể làm với JavaScript:
 JavaScript được tạo ra ngay từ đầu để thực hiện thao tác DOM. Các trang web
trước đó chủ yếu là tĩnh, sau khi JS được tạo ra các trang web động được tạo ra.
 Các hàm trong JS là các đối tượng. Chúng có thể có các thuộc tính và phương thức
giống như một đối tượng khác. Chúng có thể được truyền dưới dạng đối số trong
các hàm khác.
 Có thể xử lý ngày và giờ.
 Thực hiện xác thực biểu mẫu mặc dù các biểu mẫu được tạo bằng HTML.
 Không cần trình biên dịch.
 Các ứng dụng của JavaScript: 
 Phát triển web: Thêm tính tương tác và hành vi vào các trang web tĩnh, JavaScript
đã được phát minh để làm điều này vào năm 1995 bằng cách sử dụng AngularJS.
 Ứng dụng web: Với công nghệ, các trình duyệt đã được cải thiện đến mức cần có
một ngôn ngữ để tạo ra các ứng dụng web mạnh mẽ. Khi chúng ta khám phá bản
đồ trong Google Maps thì chúng ta chỉ cần nhấp và kéo chuột. Tất cả chế độ xem
chi tiết chỉ cần một cú nhấp chuột và điều này chỉ có thể là JavaScript. Nó sử dụng
Giao diện lập trình ứng dụng (API) cung cấp thêm sức mạnh cho mã Electron và
React rất hữu ích trong bộ phận này.
 Ứng dụng máy chủ: Với sự trợ giúp của Node.js, JavaScript đã đi từ máy khách
đến máy chủ và Node.js là mạnh nhất ở phía máy chủ.
 Trò chơi: Không chỉ trong các trang web, JavaScript còn giúp tạo ra các trò chơi
để giải trí. Sự kết hợp giữa JavaScript và HTML5 cũng làm cho JavaScript trở nên
phổ biến trong phát triển trò chơi. Nó cung cấp thư viện EaseJS cung cấp các giải
pháp để làm việc với đồ họa phong phú.
 Đồng hồ thông minh: JavaScript đang được sử dụng trong tất cả các thiết bị và
ứng dụng có thể. Nó cung cấp một thư viện PebbleJS được sử dụng trong các ứng
dụng đồng hồ thông minh. Framework này hoạt động cho các ứng dụng yêu cầu
internet cho hoạt động của nó.
 Nghệ thuật: Các nghệ sĩ và nhà thiết kế có thể tạo bất cứ thứ gì họ muốn bằng
JavaScript để vẽ trên khung vẽ HTML5, làm cho âm thanh hiệu quả hơn cũng có
thể được sử dụng thư viện p5.js.
 Học máy: Thư viện ml5.js JavaScript có thể được sử dụng trong phát triển web
bằng cách sử dụng machine learning.
 Hạn chế của JavaScript:
 Hiệu suất: JavaScript không cung cấp mức hiệu suất tương tự như được cung cấp
bởi nhiều ngôn ngữ truyền thống vì một chương trình phức tạp được viết bằng
JavaScript sẽ tương đối chậm.
 Độ phức tạp: Để thành thạo ngôn ngữ kịch bản, các lập trình viên phải có kiến
thức kỹ lưỡng về tất cả các khái niệm lập trình, đối tượng ngôn ngữ cốt lõi, đối
tượng máy khách và đối tượng phía máy chủ nếu không sẽ rất khó để họ viết các
tập lệnh nâng cao bằng JavaScript.
 Các phương tiện kiểm tra loại và xử lý lỗi yếu: Đây là ngôn ngữ được gõ yếu vì
không cần chỉ định kiểu dữ liệu của biến. Vì vậy, việc kiểm tra kiểu sai không
được thực hiện bởi trình biên dịch.
4. Ngôn ngữ PHP
Thuật ngữ PHP là từ viết tắt của PHP: Hypertext Preprocessor. PHP là một
ngôn ngữ kịch bản phía máy chủ được thiết kế đặc biệt để phát triển web. Nó là ngôn ngữ
mã nguồn mở miễn phí để tải về và sử dụng. PHP rất đơn giản để tìm hiểu, sử dụng và
các tệp này có phần mở rộng là “.php” [12].
Rasmus Lerdorf đã truyền cảm hứng cho phiên bản PHP đầu tiên và tham gia vào
các phiên bản sau này. Nó là một ngôn ngữ thông dịch và nó không yêu cầu trình biên
dịch:
 Mã PHP được thực thi trong máy chủ.
 Nó có thể được tích hợp với nhiều cơ sở dữ liệu như Oracle, Microsoft SQL
Server, MySQL, PostgreSQL, Sybase, Informix.
 Nó rất mạnh mẽ để giữ một hệ thống quản lý nội dung như WordPress và có thể
được sử dụng để kiểm soát quyền truy cập của người dùng.
 Nó hỗ trợ các giao thức chính như HTTP Basic, HTTP Digest, IMAP, FTP và các
giao thức khác.
 Các trang web www.facebook.com, www.yahoo.com cũng được xây dựng trên
PHP.
 Một trong những lý do chính đằng sau điều này là PHP có thể dễ dàng nhúng trong
các tệp HTML và mã HTML cũng có thể được viết trong tệp PHP.
 Điều phân biệt PHP với ngôn ngữ phía máy khách như HTML là mã PHP được
thực thi trên máy chủ trong khi mã HTML được hiển thị trực tiếp trên trình duyệt.
Mã PHP đầu tiên được thực thi trên máy chủ và sau đó kết quả được trả về trình
duyệt.
 Thông tin duy nhất mà máy khách hoặc trình duyệt biết là kết quả được trả về sau
khi thực thi tập lệnh PHP trên máy chủ mà không phải là mã PHP thực tế có trong
tệp PHP. Ngoài ra, các tệp PHP có thể hỗ trợ các ngôn ngữ kịch bản phía máy
khách khác như CSS và JavaScript.

Hình 1.2. Sơ đồ hoạt động của PHP [13]

 Các đặc điểm khác của PHP như sau:


 Đơn giản và nhanh chóng
 Hiệu quả
 Bảo mật
 Linh hoạt
 Đa nền tảng, nó hoạt động với các hệ điều hành chính như Windows, Linux,
MacOS.
 Trong số những ứng dụng của PHP có thể kể đến:
PHP thực sự có thể làm bất cứ điều gì liên quan đến kịch bản phía máy chủ hoặc
phổ biến hơn được gọi là backend của một trang web. Ví dụ: PHP có thể nhận dữ liệu từ
các biểu mẫu, tạo nội dung trang động, có thể làm việc với cơ sở dữ liệu, tạo phiên, gửi
và nhận cookie, gửi email, v.v. Ngoài ra còn có nhiều chức năng băm có sẵn trong PHP
để mã hóa dữ liệu của người dùng giúp PHP an toàn và đáng tin cậy được sử dụng như
một ngôn ngữ kịch bản phía máy chủ. Vì vậy, đây là một số khả năng của PHP làm cho
nó phù hợp để được sử dụng làm ngôn ngữ kịch bản phía máy chủ. 
Ngay cả khi bạn không bị thuyết phục bởi các khả năng trên của PHP, vẫn có một
số tính năng khác của PHP. PHP có thể chạy trên tất cả các hệ điều hành chính như
Windows, Linux, Unix, Mac OS X, v.v. Hầu như tất cả các máy chủ chính có sẵn ngày
nay như Apache đều hỗ trợ PHP. PHP cho phép sử dụng nhiều cơ sở dữ liệu. Và yếu tố
quan trọng nhất là nó miễn phí sử dụng và tải xuống và bất cứ ai cũng có thể tải xuống
PHP từ nguồn chính thức của nó là: www.php.net.
3. THỰC TIỄN VẤN ĐỀ LIÊN QUAN ĐẾN ĐỀ TÀI
Đề tài “Xây dựng WebGIS mã nguồn mở phục vụ tra cứu thông tin nhà trọ
trực tuyến khu vực Quận Tân Bình” năm 2018 của tác giả Đào Trúc Uyên, sinh viên
ngành Kỹ Thuật Trắc Địa – Bản Đồ, Khoa Trắc địa Bản đồ và Thông tin Địa lý của
trường Đại học Tài nguyên và Môi trường thành phố Hồ Chí Minh [14].
Đây là một đề tài xây dựng một hệ thống WebGIS phục vụ tra cứu thông tin nhà
trọ trực tuyến sử dụng các công nghệ mã nguồn mở như GeoServer để làm máy chủ bản
đồ, PostgreSQL + plugin PostGIS làm hệ quản trị cơ sở dữ liệu, framework flask dùng để
lập trình một ứng dụng Web bằng ngôn ngữ Python và thư viện Leaflet làm MapAPI.
Chức năng cơ bản của đề tài này là tìm kiếm nhà trọ theo thuộc tính, hiển thị
popup thông tin chi tiết nhà trọ khi nhấp chuột lên bản đồ, các chức năng duyệt bản đồ
như phóng to, thu nhỏ, di chuyển bản đồ. Tuy nhiên đề tài cũng có một số điểm hạn chế:
 Chức năng tìm kiếm còn sơ sài, chỉ tìm kiếm dưới dạng truy xuất những đối tượng
như phường xã, diện tích, khoảng giá phòng trọ trong ComboBox có sẵn. Chưa
thực hiện truy vấn với nhiều điều kiện được.
 Chưa thật sự phát huy khả năng phân tích và truy vấn của GIS.
4. TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU 
1. Tình hình nghiên cứu trên thế giới
Ứng dụng WebGIS trên thế giới đã có rất nhiều, được áp dụng vào nhiều lĩnh vực
khác nhau trong đời sống. Phần lớn các ứng dụng được triển khai nhằm tìm địa điểm, tìm
đường đi; ở một số trường đại học đã xây dựng các trang WebGIS nhằm cho mục đích
học thuật, nghiên cứu, hỗ trợ sinh viên. Tuy không tìm thấy nghiên cứu nào ứng dụng
WebGIS để xác định, tìm kiếm nhà trọ, nhà cho thuê nhưng những ứng dụng đã tìm được
cũng hỗ trợ đề tài trong quá trình nghiên cứu. 

Một số trang WebGIS nước ngoài:


1. https://www.openstreetmap.org/#map=17/12.26869/109.20214
OpenStreetMap cung cấp dữ liệu bản đồ cho hàng ngàn trang Web, ứng dụng di
động, và thiết bị phần cứng. OpenStreetMap được xây dựng bởi cộng đồng những người
đóng góp và bảo quản dữ liệu về đường sá, tòa nhà, quán cà phê, nhà ga và đủ mọi thứ ở
khắp thế giới.
2. https://openrouteservice.org/
Đây là trang Web Dịch vụ chỉ đường openrouteservice bao phủ toàn cầu và cho
phép bạn tính toán các tuyến đường và tất cả các loại thông tin điều hướng. Cung cấp một
loạt các tùy chọn du lịch cho nhiều phương thức vận chuyển. Trong số này, bạn có thể
chọn giữa xe hơi, các loại xe đạp khác nhau, đi bộ, đi bộ đường dài, xe lăn và xe hạng
nặng. Để giúp bạn cá nhân hóa các tuyến đường của mình hơn nữa, API cung cấp khả
năng tùy chỉnh đầu vào của bạn với các hạn chế loại đường và đặc điểm xe.
2. Tình hình nghiên cứu trong nước
WebGIS đối với nước ta là một lĩnh vực đang được quan tâm và nghiên cứu, ai
cũng có thể thấy những lợi ích và tiềm năng mà nó mang lại. Do vậy, trong thời gian gần
đây, đã có rất nhiều nghiên cứu về công nghệ WebGIS và cũng đã có rất nhiều dự án đã
đi vào hoạt động. Tuy nhiên, các trang WebGIS này cũng chỉ mới đưa bản đồ lên Web
với các chức năng cơ bản để tương tác với bản đồ, quản lý dữ liệu, chưa có phát huy thật
sự sức mạnh của GIS là khả năng phân tích, truy vấn không gian.
Các đề tài nghiên cứu trong nước đã tìm hiểu được:
1. Đề tài “Ứng dụng công nghệ mã nguồn mở xây dựng WebGIS thông tin
hành chính thành phố Hồ Chí Minh” của tác giả Lê Văn Sony, ngành Hệ
thống Thông tin Địa lý, trường Đại học Nông Lâm thành phố Hồ Chí Minh
[15]. 
Đề tài này thực hiện một số công việc như:
 Xây dựng cơ sở dữ liệu thông tin hành chính Thành phố Hồ Chí Minh trong hệ
quản trị cơ sở dữ liệu PostgreSQL [15].
 Thiết kế giao diện và đưa cơ sở dữ liệu hiển thị lên nền web bằng công nghệ mã
nguồn mở GeoServer, thư viện OpenLayers, các ngôn ngữ lập trình HTML,
JavaScript [15].
 Ứng dụng thư viện thao tác với GeoServer tạo kiểu hiển thị (style) cho các lớp dữ
liệu [15].
 Chỉnh sửa và cập nhật dữ liệu thuộc tính trong hệ quản trị cơ sở dữ liệu
PostgreSQL bằng Java [15].
2. Đề tài “Ứng dụng GIS hỗ trợ xử lý biến động đất đai tại huyện Bắc Bình –
tỉnh Bình Thuận” của tác giả Đặng Xuân Tiến, ngành Hệ thống Thông tin
Môi trường, trường Đại học Nông Lâm thành phố Hồ Chí Minh [16].
Đề tài đã thực hiện được một số công việc như:
 Tích hợp được các công cụ hỗ trợ xử lý biến đô ̣ng đất đai trong ArcMap [16].
 Hiển thị dữ liệu của thửa đất lên vùng làm việc của ArcMap [16].
 Xây dựng – phân tích, thiết kế CSDL hỗ trợ xử lý biến đô ̣ng đất đai trên địa bàn
của Huyện trong hệ quản trị cơ sở dữ liệu PostgreSQL.
 Xây dựng bản đồ số cho Huyện để phục vụ công tác quản lý CSDL đất đai được
dễ dàng [16].
 Dữ liệu lịch sử của thửa đất trước biến đô ̣ng và sau biến đô ̣ng được lưu trữ lâu dài
trong hệ quản trị cơ sở dữ liệu PostgreSQL và được khai thác mọi lúc [16].
Ngoài những đề tài nghiên cứu trên, đã có rất nhiều sản phẩm WebGIS của các cơ
quan, tổ chức đã được triển khai ứng dụng trên thực tế, tuy nhiên đa phần là những cơ
quan của nhà nước hoặc các sản phẩm tính phí. Nội dung chủ yếu vẫn là trong lĩnh vực
đất đai, quản lý, cung cấp các sản phẩm như tìm đường đi, tìm vị trí mà chưa có ứng dụng
vào trong lĩnh vực bất động sản, nhà trọ… với chức năng cơ bản là xem bản đồ, xem
thông tin, chưa có chức năng phân tích, ví dụ như: Hệ thống bản đồ hành chính của
Chính phủ Việt Nam (http://gis.chinhphu.vn/)
Như vậy, hiện chưa có một trang WebGIS chính thức nào hỗ trợ việc tìm kiếm nhà
trọ cho sinh viên, học sinh, tuy nhiên đã có nhiều nghiên cứu thành lập hệ thống WebGIS
với nhiều mức độ và mục tiêu khác nhau. Việc tìm hiểu các nghiên cứu này giúp ta có
nhiều kinh nghiệm, kiến thức để áp dụng cho bài toán cụ thể của đề tài.

2. KHẢO SÁT HIỆN TRẠNG


1. HIỆN TRẠNG THÀNH PHỐ NHA TRANG
Vị trí: Thành phố Nha Trang nằm ở phía đông tỉnh Khánh Hòa, có vị trí địa lý:
Phía bắc giáp thị xã Ninh Hòa, phía nam giáp huyện Cam Lâm, phía tây giáp huyện Diên
Khánh, phía đông giáp Biển Đông. Nằm cách thủ đô Hà Nội 1290 km về phía Bắc, cách
thành phố Cam Ranh 45 km và cách thành phố Hồ Chí Minh 441 km về phía Nam.
Thành phố Nha Trang có diện tích tự nhiên là 251 km² và dân số là 535.000 người [1].
Dân cư: Theo điều tra dân số năm 2019 thì dân số toàn thành phố có 422.601
người (1/4/2019), trong đó dân số thành thị chiếm 67,62% dân số nông thôn chiếm
32,38%. Tuy nhiên theo cách tính quy mô dân số trong phân loại đô thị (bao gồm cả dân
số thường trú và dân số tạm trú quy đổi) thì quy mô dân số Nha Trang hiện nay khoảng
500,000-535.000 người (bao gồm cả học sinh, sinh viên các trường đại học, cao đẳng,
trung học chuyên nghiệp, lao động tạm trú thường xuyên, tạm trú vãng lai...nhưng không
tính khách du lịch) [1].
Hành chính: Thành phố Nha Trang có 27 đơn vị hành chính cấp xã trực thuộc,
bao gồm 19 phường: Lộc Thọ, Ngọc Hiệp, Phước Hải, Phước Hòa, Phước Long, Phước
Tân, Phước Tiến, Phương Sài, Phương Sơn, Tân Lập, Vạn Thạnh, Vạn Thắng, Vĩnh Hải,
Vĩnh Hòa, Vĩnh Nguyên, Vĩnh Phước, Vĩnh Thọ, Vĩnh Trường, Xương Huân và 8 xã:
Phước Đồng, Vĩnh Hiệp, Vĩnh Lương, Vĩnh Ngọc, Vĩnh Phương, Vĩnh Thạnh, Vĩnh
Thái, Vĩnh Trung [1].
Khoa học - Giáo dục: Hiện nay, thành phố có đến 25 trường Đại học, Cao đẳng
và Cơ sở nghiên cứu khoa học.
Đường bộ: 
Đến năm 2012, thành phố có trên 898 tuyến đường, trong đó 280 tuyến đường do
thành phố quản lý với tổng chiều dài là 115,64 km; đường tỉnh 7 tuyến với tổng chiều dài
41,377 km; đường liên xã có 11 tuyến với tổng chiều dài 29,47 km; đường hẻm nội thành
619 tuyến, tổng chiều dài 174 km. Để kết nối với các địa phương khác, Nha Trang có
quốc lộ 1A chạy qua ngoại thành theo hướng Bắc Nam, đoạn qua địa bàn thành phố dài
14,91 km 
và Quốc lộ 1C nối trung tâm thành phố với quốc lộ 1A, có chiều dài 15,08 km. Ngoài ra
còn có đại lộ Nguyễn Tất Thành nối thành phố Nha Trang với sân bay quốc tế Cam Ranh
và đường Võ Nguyên Giáp nối Nha Trang với đường 723 (nay là Quốc lộ 27C) đến thành
phố Đà Lạt [1].
Hệ thống giao thông tĩnh phục vụ vận tải công cộng còn bao gồm 8 tuyến xe buýt
nội thành với khoảng 150 điểm dừng đỗ dọc đường phục vụ cho nhu cầu đi lại trong
thành phố và huyện Diên Khánh, huyện Khánh Vĩnh. Ngoài ra còn có 3 tuyến xe buýt
liên huyện Nha Trang - Cam Lâm - Cam Ranh, Nha Trang - Ninh Hòa - Vạn Ninh và
Nha Trang - Ninh Hòa - Ninh Tây nối Nha Trang với khu vực phía Nam và phía Bắc
Khánh Hòa [1].
Thương mại – Dịch vụ - Công Cộng: Nha Trang hiện có 24 chợ, trong đó 3 chợ
loại I, 2 chợ loại II, 18 chợ loại III [1]. Hệ thống ATM có mặt ở khắp thành phố nhất là ở
các trục đường lớn. Các công trình công cộng như công viên được xây dựng trên các trục
đường ven biển tạo không gian xanh, sạch, đẹp cho thành phố.
Y tế: Khánh Hòa là một trong những tỉnh có hệ thống Y tế phát triển nhất ở khu
vực Nam Trung Bộ. Theo quyết định 1047/QĐ-BYT của Bộ Y tế thì Nha Trang là một
trong 3 trung tâm y tế của vùng Nam Trung Bộ [1]. Hiện nay, thành phố có 7 bệnh viện
công lập và 5 bệnh viện tư nhân, bán công.
2. TÌNH HÌNH NHÀ TRỌ
Nhà trọ ở thành phố Nha Trang kinh doanh theo hình thức hộ gia đình: nhà nguyên
căn hoặc phòng trọ; có mặt chủ yếu gần khu vực các trường Đại học, Cao đẳng; thuận
tiện cho nhu cầu đi lại, học tập của sinh viên.
3. TÌNH HÌNH ĐĂNG TIN VÀ TÌM NHÀ TRỌ HIỆN NAY
1. Tình hình đăng tin của các chủ nhà trọ
Hiện nay, do nhu cầu tìm nhà trọ của các bạn sinh viên tại thành phố Nha Trang là
rất lớn, do vậy đã có không ít những dãy nhà trọ được xây dựng. Qua tìm hiểu và quan
sát từ thực tế xung quanh khu vực Đại học Nha Trang, các cách thức cung cấp thông tin
nhà trọ cho sinh viên chia làm hai phương pháp:

 Phương pháp truyền thống: 


Những cách này gồm có đi dán quảng cáo ở khắp nơi xung quanh trong khu vực
nhà trọ, thuê người phát tờ rơi, truyền miệng (thường là các bạn sinh viên cần nơi trọ sẽ
hỏi bạn bè, người quen, và nhờ những người quen biết,…)
Phương pháp này có ưu điểm là tương đối đơn giản, dễ thực hiện đối với những
người cho thuê nhà trọ hay tìm người ở ghép, đây là cách truyền thống nhất từ xưa đến
nay, do vậy cũng phù hợp với một bộ phận các bạn sinh viên đi tìm nhà trọ.
Tuy nhiên phương pháp này cũng có nhược điểm là:
 Phạm vi quảng cáo của chủ nhà trọ sẽ thu hẹp, chỉ xung quanh khu vực nhà trọ.
 Chi phí in ấn, dán tờ rơi, công sức bỏ ra tốn kém và mất thời gian.
 Cách thức truyền thông tin đến đối tượng tìm nhà trọ không hiệu quả, người tìm
phải đến tận nơi mới có thể xem được các mẩu quảng cáo được dán.
 Thông tin cung cấp thì không được phong phú, chủ yếu dưới hình thức mô tả.
Bên cạnh đó, việc dán quảng cáo, phát tờ rơi là vi phạm pháp luật và gây ô nhiễm
môi trường, mất mỹ quan thành phố, nội dung quảng cáo luôn bị tác động bởi các yếu tố
ngoại cảnh như mưa, nắng gây ảnh hưởng đến nội dung quảng bá.
Như vậy, phương pháp truyền thống bộc lộ khá nhiều nhược điểm, đặc biệt là hiệu
quả quảng cáo không cao so với chi phí bỏ ra. Người tìm nhà trọ cũng khó khăn trong
việc tìm nhà trọ phù hợp.
 Ứng dụng Công nghệ Thông tin:
Người dùng chỉ cần đăng ký một tài khoản tại trang Web là có thể đăng tin về nhà
trọ của bản thân để mọi người biết đến hoặc đăng tin lên các trang mạng xã hội như
Facebook, Zalo. Phương pháp mới này khắc phục được những nhược điểm của cách
quảng bá truyền thống là:
 Phạm vi quảng bá rộng trên môi trường Internet, không còn giới hạn ở chỉ ở những
nơi có tờ rơi hay dán quảng cáo nữa, như vậy lượng người biết đến sẽ nhiều hơn.
 Tiết kiệm chi phí: Người đăng tin chỉ tốn rất ít chi phí để lên mạng và đăng tin.
Chủ trọ có thể ngồi tại máy tính cá nhân có kết nối mạng hay thiết bị di động. Một
tin đăng có thể phục vụ cùng lúc nhiều người xem.
 Nội dung tin đăng không chịu tác động của các yếu tố ngoại cảnh.
 Không giới hạn về số lượng tin đăng và nội dung đăng tin. Người chủ nhà trọ có
thể mô tả chi tiết nhà trọ của mình mà không gặp bất kì rào cản nào.
 Kết hợp với công nghệ truyền thông mạng, người dùng có thể kèm theo tin đăng
hình ảnh chụp về nhà trọ, các đoạn video hay các hình ảnh Panorama.
Với cách thức này, người tìm nhà trọ có thể có thêm nhiều thông tin hơn để lựa
chọn, tuy nhiên những thông tin được cung cấp cũng chỉ ở dạng mô tả (mô tả nhiều và
phong phú hơn cách truyền thống)
Người xem tin khó hình dung nhà trọ như thế nào, cụ thể nào ở chỗ nào, có gần
trường, gần chợ không… Muốn biết cụ thể thì người tìm nhà trọ phải tìm đường đến tận
nơi mới có thêm thông tin, trả lời được những câu hỏi trên.
2. Tình hình tìm nhà trọ của sinh viên
Tương ứng với mỗi phương pháp đăng tin nhà trọ ở trên thì có các cách tìm nhà
trọ khác nhau:
 Đối với phương pháp truyền thống:
Người tìm nhà trọ phải xác định trước khu vực định thuê trọ và đến khu vực đó,
tìm ở những nơi hay dán các loại quảng cáo như ở các vách tường, các trụ điện, nhà chờ
xe buýt…hay hỏi thăm người địa phương để tìm nhà trọ mà không biết chính xác vị trí sẽ
tìm nằm ở đâu, vị trí nhà trọ đó có còn phù hợp không (gần trường đang học hay gần chợ,
bệnh viện). Đến tận nơi, người tìm nhà trọ mới xem được nhà trọ. Nếu không vừa ý lại
phải lặp lại quá trình tìm kiếm như trên.
Phương pháp này gây rất nhiều khó khăn cho người tìm nhà trọ, việc tìm nhà trọ
trở nên rất cực, mệt nhọc, tốn nhiều thời gian, công sức, tiền bạc và không hiệu quả. Đặc
biệt là các bạn sinh viên ở ngoại tỉnh, không rành đường phố ở Nha Trang. Người tìm
kiếm sẽ không thể nào hình dung trước được vị trí, hình dạng căn nhà cũng như mối quan
hệ không gian xung quanh nhà trọ đối với các địa điểm khác.

 Theo phương pháp mới:


Người tìm nhà trọ sẽ lên mạng tìm nhà trọ bằng cách sử dụng máy tính cá nhân
hoặc thiết bị di động. Người tìm nhà trọ sẽ có nhiều phương án lựa chọn hơn do được
cung cấp nhiều thông tin hơn. Có thể xem trước hình ảnh ngôi nhà, phòng trọ mà không
cần trực tiếp đến đó. Có được sự hướng dẫn cụ thể hơn. Do vậy mà cách tìm nhà trọ qua
mạng giúp cho các bạn sinh viên tiết kiệm rất nhiều công sức, tiền bạc và có thể dễ dàng
tìm được nhà hiệu quả hơn so với phương pháp truyền thống. 
Tuy nhiên, cũng như phương pháp truyền thống, các thông tin được cung cấp cũng
chỉ ở dạng mô tả. Các bạn sẽ không thể có cái nhìn bao quát, nhìn thấy vị trí đó cụ thể ở
đâu. Xung quanh có những gì. Đường nào đi đến đó. Nó cách trường bao nhiêu mét…
Tất cả những câu hỏi trên sẽ được trả lời dễ dàng bằng công nghệ GIS. Do vậy,
một giải pháp WebGIS - vừa kết hợp được những ưu điểm trên của Web vừa kết hợp khả
năng của GIS cho vấn đề nhà trọ sẽ hỗ trợ sinh viên rất nhiều trong việc tìm, lựa chọn và
ra quyết định tìm nhà trọ sao cho phù hợp nhất với nhu cầu của bản thân.
4. ĐẶC TẢ BÀI TOÁN
Hệ thống WebGIS phục vụ tra cứu thông tin nhà trọ trực tuyến thành phố Nha
Trang bao gồm những chức năng sau:
Quản lý nhà trọ: Nhà trọ được quản lý với những thông tin sau: Tên chủ trọ, số
điện thoại liên hệ, số nhà, diện tích, số người ở tối đa, nhà vệ sinh, giá phòng, tiền cọc,
tiền điện, tiền nước, giờ giấc mở cửa - đóng cửa, loại nhà trọ, tiện nghi có sẵn, số lượng
phòng trống, địa chỉ quản lý: đường, phường xã và đặc biệt là vị trí tương ứng của nhà trọ
trên bản đồ thành phố Nha Trang.
Quản lý người dùng: 
 Đối với quản trị viên: Hiệu chỉnh thông tin người dùng; thay đổi, hiệu chỉnh thông
tin nhà trọ. Thêm tài khoản quản trị viên. Báo cáo thống kê định kỳ. Quản lý các
loại danh mục (như đường, phường xã, loại đường,…). Quản trị hệ thống.

 Đối với chủ nhà trọ: 


Đăng ký tài khoản: mỗi thông tin cần lưu trữ như: mã tài khoản (sẽ được sinh tự
động khi đăng ký), tên tài khoản, họ và tên, mật khẩu, giới tính, địa chỉ, số điện thoại,
hình đại diện,…
Chỉnh sửa thông tin cá nhân, hiệu chỉnh thông tin nhà trọ.
 Đối với sinh viên, khách vãng lai: Di chuyển bản đồ (Pan), hiển thị toàn cục bản
đồ, phóng to và thu nhỏ bản đồ theo tỷ lệ, phóng to bản đồ theo vùng, xem thuộc
tính của một đối tượng, bật tắt các lớp bản đồ, hiển thị bản đồ, di chuyển nhanh
đến vùng định trước, xem thông tin nhà trọ, tìm kiếm nhà trọ đa điều kiện, thực
hiện truy vấn không gian, thuộc tính; tìm đường đi ngắn nhất.
 Mô tả chi tiết hoạt động
 Đối với quản trị viên:
 Quản trị hệ thống: 
Sao lưu/phục hồi dữ liệu: Sao lưu dữ liệu hàng ngày, hàng tuần ra thiết bị nhớ
ngoài để phục hồi dữ liệu khi gặp sự cố.
Trợ giúp: Hướng dẫn sử dụng phần mềm. 
Người sử dụng: Kích hoạt hoặc vô hiệu hóa tài khoản, thay đổi mật khẩu và thêm,
sửa, xóa thông tin tài khoản. Thêm mới tài khoản quản trị viên.
 Hiệu chỉnh: Điều chỉnh thông tin hồ sơ cá nhân. Điều chỉnh hoặc xóa nhà trọ. 
 Quản lý danh mục: Cập nhật: loại nhà trọ, tiện nghi, đường, loại đường, phường
xã, trường học, trạm xe buýt, tiện ích, loại tiện ích, loại tài khoản.
 Báo cáo thống kê định kỳ: 
Thống kê nhà trọ: Nhà trọ mới nhập/tháng/năm, số lượt xem nhà trọ/tháng/năm,
nhà trọ được xem nhiều/tháng. 
Thống kê người dùng: Thống kê người dùng truy cập/tháng/năm, thống kê người
dùng mới/tháng.
 Đối với chủ nhà trọ:
 Đăng ký: Chủ trọ đăng ký tài khoản thông qua form đăng ký.
 Hiệu chỉnh: Điều chỉnh thông tin hồ sơ cá nhân, xóa tài khoản. Thêm, điều chỉnh,
xóa thông tin nhà trọ.

3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG


1. PHÂN TÍCH
1. Mô hình BFD
Hình 3.1. Mô hình BFD

2. Mô hình DFD
Sơ đồ DFD tổng quát mức 0 – Quản lý WebGIS tra cứu thông tin nhà trọ

Hình 3.2. Sơ đồ DFD tổng quát mức 0

Sơ đồ DFD mức 1 của ô xử lý 2 (Quản lý nhà trọ)


Hình 3.3. Sơ đồ DFD mức 1 của ô xử lý 2

Sơ đồ DFD mức 1 của ô xử lý 3 (Quản lý người dùng)

Hình 3.4. Sơ đồ DFD mức 1 của ô xử lý 3

Sơ đồ DFD mức 1 của ô xử lý 5 (Báo cáo – Thống kê)


Hình 3.5. Sơ đồ DFD mức 1 của ô xử lý 5

3. Mô hình dữ liệu
1. Dữ liệu không gian
Qua khảo sát thực tế và quá trình thu thập dữ liệu từ bản đồ Google Map,
OpenStreetMap thành phố Nha Trang để phù hợp việc quản lý. Các lớp dữ liệu không
gian cần xây dựng:
Bảng 3.1. Dữ liệu không gian

Kiểu dữ
ST Tên
liệu của Thuộc tính của Theme
T Theme
Theme

1 Xã phường Polygon Mã phường xã, Mã thành phố, Tên phường xã.


2 Đường Polyline Mã đường, Tên đường, Mã loại đường.

Mã nhà trọ, ID người dùng, Mã đường, Mã tiện nghi, Mã


loại nhà trọ, Mã phường xã, Tọa độ X nhà trọ, Tọa độ Y
3 Nhà trọ Point nhà trọ, Số nhà, Số điện thoại chủ trọ, Diện tích, Số người
ở tối đa, Nhà vệ sinh, Giá phòng, Tiền cọc, Tiền điện,
Tiền nước, Giờ giấc, Số lượng phòng còn trống.

Mã Bus, Mã đường, Mã phường xã, Tọa độ X trạm bus,


4 Trạm bus Point
Tọa độ Y trạm bus, Tên trạm bus.

Mã trường, Mã đường, Mã phường xã, Tọa độ X trường,


5 Trường học Point
Tọa độ Y trường, Tên trường, Số nhà.
TP Nha
6 Polygon Mã thành phố, Mã tỉnh, Tên thành phố.
Trang

Mã tiện ích, Mã loại tiện ích, Mã đường, Mã phường xã,


7 Tiện ích Point
Tọa độ X tiện ích, Tọa độ Y tiện ích, Số nhà, Tên tiện ích.

Mạng lưới Mã số thứ tự, Mã đường, Mã loại đường, Mã định danh


8 Line
đường đường, Tên loại đường, Tên đường, Mã nguồn, Mã đích.

Các đỉnh
Mã đỉnh, Số đỉnh tham chiếu, Chỉ báo đỉnh, Số đỉnh tham
9 của mạng Point
chiếu đến, Số đỉnh tham chiếu đi.
lưới đường

2. Dữ liệu thuộc tính


Mô hình thực thể kết hợp (ERD) 
Hình 3.6. Mô hình thực thể kết hợp (ERD)
2. THIẾT KẾ
1. Thiết kế dữ liệu 
1. Mô hình quan hệ (mô hình dữ liệu mức logic)
1. User (ID, MaLTK, TenTK, MatKhau, HoTen, DiaChi, SDT, QuyenTK, Avatar,
GTinh)
2. Loại TK (MaLTK, TenLTK)
3. Phường xã (MaPX, MaTP, ShapePX, TenPX)
4. Đường (MaDuong, MaLD, TenDuong, ShapeD)
5. Loại đường (MaLD, TenLD)
6. Tiện nghi (MaTN, TenTN)
7. Loại nhà trọ (MaLNT, TenLNT)
8. Nhà trọ (MaNT, ID, MaDuong, MaTN, MaLNT, MaPX, ShapeNT, XNT, YNT,
DienTich, SoNguoiO, NhaVeSinh, GiaPhong, TienCoc, TienDien, TienNuoc,
GioGiac, SLPhongTrong)
9. Trường (MaTR, MaDuong, MaPX, XTR, YTR, TenTR, SoNhaTR, ShapeTR)
10. Trạm Bus (MaBus, MaDuong, MaPX, XBus, YBus, TenBus, ShapeBus)
11.  Loại tiện ích (MaLTI, TenLTI)
12. Tiện ích (MaTienIch, MaLTI, MaDuong, MaPX, XTI, YTI, SoNhaTI,
TenTienIch, ShapeTI)
2. Mô hình dữ liệu vật lý (PDM)
Hình 3.7. Mô hình dữ liệu vật lý (PDM)
3. Từ điển dữ liệu
Bảng 3.2. Dữ liệu tiện nghi

ST
Tên thuộc tính Kiểu dữ liệu Mô tả
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ã

ST Tên thuộc
Kiểu dữ liệu Mô tả
T tính

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

ST Tên thuộc
Kiểu dữ liệu Mô tả
T tính

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)

ST Tên thuộc tính Kiểu dữ liệu Mô tả


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

ST
Tên thuộc tính Kiểu dữ liệu Mô tả
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ọ

ST Tên thuộc
Kiểu dữ liệu Mô tả
T tính

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

5 MaLNT Varchar (15) Mã loại nhà trọ

6 MaPX Varchar (15) Mã phường xã

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ọ

Tên thuộc
STT Kiểu dữ liệu Mô tả
tính

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

ST Tên thuộc Kiểu dữ liệu Mô tả


T tính

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

ST
Tên thuộc tính Kiểu dữ liệu Mô tả
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

ST Tên thuộc
Kiểu dữ liệu Mô tả
T tính

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

7 SoNhaTI Nvarchar (100) Số nhà

8 TenTienIch Nvarchar (200) Tên 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

ST
Tên thuộc tính Kiểu dữ liệu Mô tả
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

ST Tên thuộc
Kiểu dữ liệu Mô tả
T tính

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


7 ShapeBus Varchar (50) Dạng hình học của đối tượng

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
a. 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 - + + (ID)
dùng
 
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
a. 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ó Sửa
a
Người dùng + - + (MaLTK)
Loại tài + (TenLTK) + + (MaLTK, TenLTK)
khoản

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
a. Bối cảnh: NhaTro (Nhà trọ), TienNghi (Tiện nghi)
b. Bảng tầm ảnh hưởng
R3 Thêm Xóa Sửa
Nhà trọ + - + (MaTN)
Tiện - + + (MaTN)
nghi
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
a. 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
a. 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à + - + (MaDuong)
trọ
Đườ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
a. 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)
Phường - + + (MaPX)

R7: Mỗi Nhà trọ chỉ có Nhà vệ sinh là ‘Riêng’ hoặc ‘Chung’
∀ t ∈NhaTro (t.NhaVeSinh ∈{'Riêng','Chung'})
a. Bối cảnh: NhaTro (Nhà trọ)
b. Bảng tầm ảnh hưởng
R7 Thêm Xóa Sửa
Nhà + - + (NhaVeSinh)
trọ
 
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
a. 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 - + + (MaLD)
đường

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
a. 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)
Phường - + + (MaPX)

R10: Mỗi Đường trong bảng Trường phải có giá trị trong bảng Đường
∀ t ∈Truong : ∃t'∈Duong, t.MaDuong=t'.MaDuong
a. 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ườn + - + (MaDuong)
g
Đườ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
a. 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 - + + (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
a. 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
a. 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 - + + (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
a. 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
a. 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 - + + (MaLTI)
ích
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 (t.GTinh ∈{'Nam','Nữ'})
a. Bối cảnh: User (Người dùng)
b. Bảng tầm ảnh hưởng
R16 Thêm Xóa Sửa
Người + - + (GTinh)
dù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)
a. 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 + - + (QuyenTK)
dùng

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 (∃s∈USTK (t.ID=s.ID))
a. 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ó Sửa
a
Người dùng - + + (ID, MaLTK)
Nhà trọ + - + (ID)
Loại tài + (TenLTK) + + (MaLTK, TenLTK)
khoản

R19: Loại tài khoản chỉ có thể là ‘User’ hoặc ‘Admin’


∀ t ∈LoaiTK (t.TenLTK ∈{'User','Admin'})
a. 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 + (TenLTK) + + (TenLTK)
khoản

R20: Tên Loại tài khoản là duy nhất


∀ t1,t2 ∈LoaiTK (t1≠t2 ∧ t1.TenLTK≠t2.TenLTK)
a. 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 + (TenLTK) + + (TenLTK)
khoản

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 (∃s∈USLTK (t.ID=s.ID))
a. 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)
Loại tài + + + (ID, TenLTK)
khoản (TenLTK)

2. Thiết kế giao diện


1. Sơ đồ màn hình
Hình 3.8. Sơ đồ màn hình
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.9. Màn hình chung của trang Web

Màn hình của chủ trọ:


Hình 3.10. Màn hình của chủ trọ

Màn hình của quản trị viên:


Hình 3.11. Màn hình của Admin

Màn hình đăng nhập:

Hình 3.12. Màn hình đăng nhập

Màn hình đăng ký:


Hình 3.13. Màn hình đăng ký

Màn hình chỉnh sửa hồ sơ:


Hình 3.14. Màn hình chỉnh sửa hồ sơ

Màn hình đổi mật khẩu:


Hình 3.15. Màn hình đổi mật khẩu

Màn hình thêm mới nhà trọ:


Hình 3.16. Màn hình thêm mới nhà trọ

3. Thiết kế xử lý

Đăng ký tài khoản Đăng nhập

Hình 3.17. Sơ đồ giải thuật đăng ký

Hình 3.18. Sơ đồ giải thuật đăng nhập


Đổi mật khẩu Thêm nhà trọ

Hình 3.19. Sơ đồ giải thuật đổi mật khẩu

Hình 3.20. Sơ đồ giải thuật thêm nhà trọ


Tìm kiếm thuộc tính Tìm kiếm không gian

Hình 3.21. Sơ đồ giải thuật tìm kiếm thuộc


tính

Hình 3.22. Sơ đồ giải thuật tìm kiếm không


gian

4. CÀI ĐẶT CHƯƠNG TRÌNH


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/asia.html
Bước 2: Đưa dữ liệu shapefile đường vào ArcMap
Hình 4.1. Dữ liệu đường OpenStreetMap

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.2. 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.3. 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.4. 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 hoà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,
tiện ích (ATM, y tế, chợ, công viên, nhà sách, bưu điện, hành chính) với các cột thuộc
tính đã đượ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.5. Dữ liệu tọa độ nhà trọ

Bước 3: Tại cửa sổ phần mềm ArcMap → Chọn File → Add Data → Add XY
Data → Chọn file Excel → OK.
Hình 4.6. Nhập dữ liệu tọa độ vào ArcMap

 
Bước 4: Nhấp chuột phải lớp dữ liệu vừa Add → 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 toàn cầu).
Hình 4.7. Các lớp dữ liệu đã xử lý được

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 đồ.

Quá 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ụ Symbology. 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.8. 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:

Hình 4.9. Kết quả 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ệu. File SLD sẽ
giúp lưu lại hình dạng, màu sắc của ký hiệu.
Hình 4.10. Xuất file SLD

Kết quả xuất file SLD:

Hình 4.11. Kết quả xuất file SLD


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ệu.
 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

5. HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH


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://youtu.be/n_1g5KZQRn4
2. KẾT QUẢ THỰC HIỆN ĐỀ TÀI
1. Xây dựng giao diện
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.
Hình 5.1. Giao diện trang chủ WebGIS

 Giao diện trang tìm kiếm nâng cao


 Giao diện trang đăng ký

Hình 5.3. Giao diện trang đăng ký dành cho chủ trọ
 Giao diện trang đăng nhập

Hình 5.4. Giao diện trang đăng nhập dành cho chủ trọ và quản trị viên
 Giao diện trang liên hệ
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ọ.

Hình 5.6. Giao diện của chủ trọ

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
tiết, hiệu chỉnh tất cả các thành viên, hiệu chỉnh nhà trọ.

Hình 5.7. Giao diện của quản trị viên

2. Xây dựng chức năng


1. Đối với chủ trọ
 Chức năng đăng ký tài khoản
Người dùng khi đăng ký tài khoản sẽ được kiểm tra trùng tên tài khoản với tài
khoản đã có trong cơ sở dữ liệu, kiểm tra trường nhập vào rỗng, kiểm tra mật khẩu nhập
lại có khớp với mật khẩu thứ nhất hay không.

Hình 5.8. Đăng ký tài khoản không thành công


Sau khi người dùng nhập đầy đủ thông tin hợp lệ thì trang web sẽ phản hồi việc
đăng ký tài khoản thành công.

Hình 5.9. Đăng ký tài khoản thành công


 Chức năng đăng nhập
Kiểm tra đối với trường nhập vào rỗng khi đăng nhập.

Hình 5.10. Kiểm tra trường rỗng khi đăng nhập

Kiểm tra đối với tên tài khoản không hợp lệ hoặc chưa được đăng ký.

Hình 5.11. Tài khoản không hợp lệ hoặc chưa đăng ký


Kiểm tra độ chính xác trường mật khẩu khi đăng nhập.

Hình 5.12. Kiểm tra trường mật khẩu khi đăng nhập

 Chức năng đổi mật khẩu


Kiểm tra lại thông tin tài khoản có chính xác hay không trước khi thực hiện đổi
mật khẩu.

Hình 5.13. Xác thực tài khoản khi đổi mật khẩu

Sau khi nhập đầy đủ thông tin tài khoản hợp lệ thì trang web sẽ phản hồi để người
dùng tiến hành đăng nhập lại với mật khẩu mới.
Hình 5.14. Đổi mật khẩu thành công

 Chức năng chỉnh sửa hồ sơ cá nhân


Người dùng có thể thay đổi thông tin hồ sơ cá nhân bao gồm: họ và tên, số điện
thoại, hình ảnh, giới tính và địa chỉ.
Ví dụ: Thay đổi ảnh đại diện cá nhân.
Hình 5.15. Thay đổi thông tin hồ sơ cá nhân

 Chức năng xóa tài khoản


Trước khi xóa tài khoản thì trang web sẽ xác nhận lại với người dùng có thực sự
muốn xóa tài khoản này hay không. Nếu không thì người dùng sẽ tiếp tục sử dụng và
ngược lại thì tài khoản sẽ được xóa.

Hình 5.16. Xóa tài khoản cá nhân

 Chức năng thêm mới nhà trọ


Sau khi người dùng nhập đầy đủ thông tin như hình dưới thì trang web sẽ phản hồi
về việc đăng ký nhà trọ thành công.
Hình 5.17. Đăng ký mới nhà trọ thành công

Sau khi đăng ký nhà trọ thành công thì nhà trọ sẽ được hiển thị trên bản đồ.
Hình 5.18. Hiển thị nhà trọ trên bản đồ sau khi đăng ký thành công

 Chức năng xóa nhà trọ


Trước khi xóa nhà trọ thì trang web sẽ xác nhận lại với người dùng có thực sự
muốn xóa nhà trọ này hay không. Nếu không thì nhà trọ sẽ không bị xóa và ngược lại thì
nhà trọ sẽ được xóa.

Hình 5.19. Xóa nhà trọ


 Chức năng chỉnh sửa thông tin nhà trọ
Hình 5.20. Form chỉnh sửa thông tin nhà trọ

2. Đối với quản trị viên


 Quản lý thông tin của tất cả người dùng

Hình 5.21. Thông tin chi tiết các thành viên


 Đăng ký thêm tài khoản Admin

Hình 5.22. Đăng ký thêm tài khoản Admin


 Kích hoạt hoặc vô hiệu hóa tài khoản người dùng
Ví dụ: Vô hiệu hóa một tài khoản người dùng bất kỳ

Hình 5.23. Vô hiệu hóa tài khoản


 Xem chi tiết, hiệu chỉnh thông tin người dùng

Hình 5.24. Xem chi tiết và hiệu chỉnh thông tin người dùng

 Hiệu chỉnh thông tin của tất cả các nhà trọ do người dùng đăng ký
Hình 5.25. Hiệu chỉnh thông tin của tất cả các nhà trọ do người dùng đăng ký

3. Đối với sinh viên và khách vãng lai


 Chức năng tìm kiếm cơ bản (chỉ theo thuộc tính)
Đây là chức năng tìm kiếm cơ bản nhất của trang Web, giúp xác định nhanh nhà
trọ dựa vào một từ khóa bất kỳ.
Tìm gì: Bạn có thể nhập bất kỳ thông tin gì về nhà trọ như: giá phòng, giá tiền
nước, tiền điện, loại nhà trọ,.. thậm chí những mô tả về nhà trọ có các tiện nghi như: quạt,
điều hòa, giường, nhà vệ sinh riêng hay chung, …

Hình 5.26. Tìm những nhà trọ thuộc loại sinh viên (có 29 kết quả)

Ở đâu: Giúp bạn giới hạn khu vực tìm kiếm ở một phường/xã hoặc đoạn đường
nào đó trong thành phố.
Hình 5.27. Tìm những nhà trọ thuộc loại sinh viên ở phường Vĩnh Thọ (còn 7 kết quả)

 Chức năng tìm kiếm nâng cao (theo thuộc tính)


Chức năng này cho phép tìm kiếm nhà trọ đa điều kiện theo những tiêu chí mà
người dùng đưa ra kết hợp với các toán tử so sánh để tìm kiếm như: lớn hơn, bé hơn hoặc
bằng,…
Ví dụ: Tìm kiếm nhà trọ thuộc phường Vĩnh Thọ, diện tích phòng lớn hơn 16m2,
thuộc loại nhà trọ sinh viên, giá phòng dưới 3.000.000 đồng.
Hình 5.28. Tìm kiếm nâng cao theo thuộc tính

 Chức năng tìm kiếm không gian


Chức năng này cho phép tìm kiếm nhà trọ theo bán kính thuộc phường/xã hoặc
gần đối tượng nào đó kết hợp thêm các tiêu chí nhà trọ như: diện tích, loại nhà trọ, giá
phòng, tiền điện, tiền nước,…
Hình 5.29. Tìm kiếm nhà trọ gần ĐH Nha Trang với bán kính 250m (có 3 kết quả)

Kết quả tìm kiếm nhà trọ gần Đại học Nha Trang với bán kính 250m được hiển thị
và đánh dấu trên bản đồ.
Hình 5.30. Kết quả tìm kiếm theo không gian

 Chức năng tìm kiếm xung quanh


Chức năng này cho phép tìm kiếm nhà trọ theo tọa độ được đánh dấu trên bản đồ
với bán kính mong muốn kết hợp thêm các tiêu chí nhà trọ như: diện tích, loại nhà trọ, giá
phòng, tiền điện, tiền nước,… hoặc tìm kiếm một số tiện ích khác.
Hình 5.31. Tìm kiếm nhà trọ theo tọa độ được đánh dấu với bán kính 200m

Kết quả tìm kiếm nhà trọ theo tọa độ được đánh dấu với bán kính 200m được hiển
thị và đánh dấu trên bản đồ.
Hình 5.32. Kết quả tìm kiếm xung quanh

 Chức năng phát hiện vị trí hiện tại của người dùng

Hình 5.33. Phát hiện vị trí hiện tại của tôi

 Chức năng hiển thị popup thông tin


Chức năng này cho phép hiển thị popup một số thông tin nhà trọ khi được kích
hoạt và nhấn vào một nhà trọ bất kì trên bản đồ.

Hình 5.34. Kích hoạt lấy thông tin nhà trọ

 Chức năng di chuyển nhanh tới phường/xã mong muốn


Hình 5.35. Di chuyển tới phường Ngọc Hiệp

 Bật tắt các lớp Layers trên bản đồ

Các lớp dữ liệu bản đồ:


Cho phép ta bật, tắt để xem sự chồng lớp của các lớp bản đồ, giúp dễ
nhìn hơn ở khu vực dày đặc đối tượng nào đó.
 Chức năng đo lường
Chức năng này cho phép đo lường diện tích của khu vực hoặc chiều dài bất kỳ trên
bản đồ.
Hình 5.36. Đo lường chiều dài và khu vực

 Chức năng tìm đường


Chức năng này cho phép tìm đường đi ngắn nhất giữa hai tọa độ được đánh dấu
trên bản đồ khi được kích hoạt.
Hình 5.37. Tìm đường đi ngắn nhất

 Chức năng tải xuống bản đồ với định dạng ảnh PNG
Hình 5.38. Tải xuống hình ảnh bản đồ PNG

Kết quả hình ảnh bản đồ sau khi tải xuống.


Hình 5.39. Kết quả tải hình ảnh bản đồ

 Chức năng xuất hình ảnh bản đồ với định dạng PDF

Hình 5.40. Xuất bản đồ PDF

Kết quả sau khi xuất bản đồ PDF với kích thước trang A4, độ phân giải 150dpi.

Hình 5.41. Kết quả xuất bản đồ PDF


6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1. KẾT QUẢ ĐẠT ĐƯỢC
Sau thời gian nghiên cứu và thực hiện đề tài, đến nay đề tài đã thực hiện những
công việc cụ thể sau:
Sản phẩm cụ thể của đề tài là hệ thống WebGIS phục vụ cho việc tìm kiếm thông
tin nhà trọ trực tuyến tại thành phố Nha Trang trên nền tảng mã nguồn mở, chạy trên
XAMPP localhost. 
Đây là hệ thống WebGIS với các chức năng:
 Hiển thị và thao tác cơ bản với bản đồ như hiển thị nhiều lớp, phóng to, thu nhỏ,
dịch chuyển,…
 Xây dựng được chức năng quản trị và phân quyền người dùng gồm 3 đối tượng
chính: người dùng thông thường (sinh viên, khách vãng lai), chủ trọ và quản trị
viên.
 Chủ trọ có thể thêm mới, xóa hay cập nhật nhà trọ cũng như thông tin cá nhân của
mình.
 Quản trị viên có thể xóa hay cập nhật thông tin nhà trọ, hiệu chỉnh thông tin, kích
hoạt hoặc vô hiệu hóa tài khoản của chủ trọ.
Người dùng có thể tìm kiếm nhà trọ với các chức năng hỗ trợ:
 Truy vấn, tìm kiếm nhà trọ theo thuộc tính, không gian và kết hợp cả hai, xuất
hình ảnh bản đồ theo định dạng PNG hoặc PDF.
 Phát hiện vị trí hiện tại của người dùng. Hiển thị thông tin đối tượng khi click
chuột lên bản đồ. Các chức năng đo lường: Đo khoảng cách, tính diện tích trên bản
đồ.
 Chức năng tìm đường đi ngắn nhất giữa hai điểm được chọn bất kì trên bản đồ.
2. ƯU ĐIỂM 
 Hệ thống WebGIS hoạt động được trên môi trường trình duyệt web giúp người
dùng dễ dàng tiếp cận thông qua Internet. 
 Thể hiện trực quan vị trí nhà trọ cũng như các tiện ích liên quan trên nền bản đồ số
với các công cụ tương tác bản đồ khác nhau. 
 Cung cấp các công cụ truy vấn từ đơn giản đến phức tạp, truy vấn được cả thuộc
tính, không gian và kết hợp cả hai…phù hợp với mọi đối tượng người dùng, giúp
người dùng tiết kiệm cả về thời gian, tiền bạc lẫn công sức.
3. HẠN CHẾ
 Giao diện hệ thống chưa được tối ưu cho trải nghiệm người dùng.
 Chưa đưa được hệ thống lên một hosting (máy chủ) cụ thể.
 Một số chức năng chưa hoàn thiện, cụ thể như chức năng tìm đường đi ngắn nhất
chưa đưa ra hướng dẫn chi tiết hướng đi cho người dùng.
 Cơ sở dữ liệu nhà trọ chưa được đầy đủ và chính xác.
4. HƯỚNG PHÁT TRIỂN
 Hoàn thiện thêm những chức năng hệ thống hiện có, cải thiện về giao diện, trải
nghiệm người dùng Web cũng như bản đồ. Đưa hệ thống lên hosting (máy chủ) cụ
thể.
 Tìm hiểu thêm về Pgrouting, xây dựng dữ liệu hoàn chỉnh để có thể thực hiện
phân tích mạng có hướng, có hỗ trợ chức năng cấm quẹo, hướng dẫn chi tiết
đường đi, đường một chiều…Xây dựng thêm các chức năng nâng cao khác phục
vụ việc phân tích không gian để tìm vị trí nhà trọ tối ưu.
 Xây dựng chức năng đánh giá nhà trọ để hỗ trợ tốt hơn việc đưa ra quyết định lựa
chọn nhà trọ, giúp tiết kiệm thời gian, công sức cho người dùng. 
 Xây dựng hoàn chỉnh cơ sở dữ liệu về nhà trọ, thêm hình ảnh, ảnh panorama,…
5. KẾT LUẬN
Ngày nay, cuộc cách mạng công nghiệp 4.0 và vai trò của Internet ngày càng được
khẳng định và không thể thiếu trong quản lý và chia sẻ thông tin của một quốc gia hay
địa phương. Cùng với sự phát triển mạnh mẽ của hệ thống mạng toàn cầu – Internet và
nhu cầu chia sẻ, tra cứu thông tin trên Internet.
Nhà trọ là nhu cầu cần thiết và là nỗi lo đầu tiên của các bạn sinh viên khi bước
vào năm học, nhu cầu của các bạn chủ yếu là tìm được một phòng trọ có vị trí thuận tiện
cho việc học tập và đi lại cũng như phù hợp với túi tiền. Tuy nhiên chưa có một trang
Web nào giúp các bạn dễ dàng hơn trong việc tìm kiếm nhà trọ. Hầu hết các trang Web
tìm nhà trọ hiện nay đều cung cấp thông tin thiếu trực quan, thuần dưới dạng mô tả, thông
tin cung cấp còn thiếu rất nhiều, không có công cụ tìm kiếm, truy vấn không gian hiệu
quả. Do vậy xây dựng một trang WebGIS trong lĩnh vực này là cần thiết, không chỉ phục
vụ cho các bạn sinh viên mà còn giúp ích cho các đối tượng khác. Các sản phẩm WebGIS
có thể phục vụ nhu cầu của một cộng đồng lớn, thuận tiện việc trao đổi, tìm kiếm thông
tin, chia sẻ thông tin và dữ liệu.
TÀI LIỆU THAM KHẢO

[1]  Wikipedia tiếng Việt, “Nha Trang,” 24 06 2021. [Trực tuyến]. Available:
https://vi.wikipedia.org/wiki/Nha_Trang. [Đã truy câ ̣p 25 06 2021].

[2]  “Tổng cục Thống kê,” 2018. [Trực tuyến]. Available: https://www.gso.gov.vn/px-
web-2/?pxid=V1018&theme=Gi%C3%A1o%20d%E1%BB%A5c. [Đã truy câ ̣p 10
04 2021].

[3]  National Geographic, “GIS (Geographic Information System),” 2021. [Trực tuyến].
Available: https://www.nationalgeographic.org/encyclopedia/geographic-
information-system-gis/12th-grade/. [Đã truy câ ̣p 20 05 2021].

[4]  Emmanuel Jolaiya, “SECTION 1: Quick Introduction To GIS And WebGIS,” 03 12


2020. [Trực tuyến]. Available: https://jeafreezy.hashnode.dev/section-1-quick-
introduction-to-gis-and-webgis-cki8iqqgh02a6hps15dgm5463. [Đã truy câ ̣p 11 05
2021].

[5]  Wikipedia, “GeoServer,” 16 04 2021. [Trực tuyến]. Available:


https://en.wikipedia.org/wiki/GeoServer. [Đã truy câ ̣p 14 05 2021].

[6]  Guru99, “What is PostgreSQL? Introduction, Advantages & Disadvantages,” [Trực


tuyến]. Available: https://www.guru99.com/introduction-postgresql.html. [Đã truy
câ ̣p 15 05 2021].

[7]  Wikipedia, “PostGIS,” 23 04 2021. [Trực tuyến]. Available:


https://en.wikipedia.org/wiki/PostGIS. [Đã truy câ ̣p 16 05 2021].

[8]  Wikipedia, “OpenLayers,” 23 01 2021. [Trực tuyến]. Available:


https://en.wikipedia.org/wiki/OpenLayers. [Đã truy câ ̣p 17 05 2021].

[9]  GeeksforGeeks, “HTML5 | Introduction,” 23 04 2019. [Trực tuyến]. Available:


https://www.geeksforgeeks.org/html5-introduction/. [Đã truy câ ̣p 20 05 2021].

[10]  Mắt Bão, “CSS3 là gì? Từ A đến Z các tính năng mới của CSS3 so với CSS,” 22 05
2020. [Trực tuyến]. Available: https://wiki.matbao.net/css3-la-gi-tu-a-den-z-cac-
tinh-nang-moi-cua-css3-so-voi-css. [Đã truy câ ̣p 21 05 2021].

[11]  GeeksforGeeks, “Introduction to JavaScript,” 18 05 2021. [Trực tuyến]. Available:


https://www.geeksforgeeks.org/introduction-to-javascript/. [Đã truy câ ̣p 22 05
2021].

[12]  GeeksforGeeks, “PHP | Introduction,” 23 03 2021. [Trực tuyến]. Available:


https://www.geeksforgeeks.org/php-introduction/. [Đã truy câ ̣p 23 05 2021].

[13]  Minh Anh, “PHP là gì? PHP dùng để làm gì trong lập trình?,” 28 10 2020. [Trực
tuyến]. Available: https://news.timviec.com.vn/php-la-gi-71062.html. [Đã truy câ ̣p
23 05 2021].

[14]  Đào Trúc Uyên, "Xây dựng WebGIS mã nguồn mở phục vụ tra cứu thông tin nhà
trọ trực tuyến khu vực Quận Tân Bình," Trường Đại học Tài nguyên và Môi trường
thành phố Hồ Chí Minh, 2018.

[15]  Lê Văn Sony, "Ứng dụng công nghệ mã nguồn mở xây dựng WebGIS thông tin
hành chính thành phố Hồ Chí Minh," Trường Đại học Nông Lâm thành phố Hồ Chí
Minh, 2013.

[16]  Đặng Xuân Tiến, "Ứng dụng GIS hỗ trợ xử lý biến động đất đai tại huyện Bắc Bình
– tỉnh Bình Thuận," Trường Đại học Nông Lâm thành phố Hồ Chí Minh, 2014.

PHỤ LỤC
1. PHỤ LỤC 1: HƯỚNG DẪN CÀI ĐẶT POSTGRESQL VÀ POSTGIS
Đầu tiên để cài đặt PostgreSQL ta truy cập vào link và tải phiên bản phù hợp:
(https://www.enterprisedb.com/downloads/postgres-postgresql-downloads)
Các bước tiến hành cài đặt PostgreSQL và PostGIS gồm:
Bước 1: Mở file cài đặt đã tải ở link trước đó
Bước 2: Chọn ổ đĩa, thư mục lưu chương trình

Bước 3: Tiếp theo bạn cần tạo mật khẩu là: admin, user mặc định là “postgres”
Bước 4: Điền cổng kết nối muốn cài đặt hoặc để mặc định là 5432
Bước 5: Chọn cụm Database
Bước 6: Tích chọn Stack Builder để cài đặt phần mở rộng của PostgreSQL
Bước 7: Chọn tích vào ô PostGIS 3.1
Bước 8: Tích chọn PostGIS và Create spatial database

Bước 9: Chọn thư mục đã cài đặt PostgreSQL trước đó


Bước 10: Nhập tài khoản PostgreSQL và cổng kết nối đã được cài đặt
Bước 11: Tiến hành cài đặt PostGIS
Sau khi chương trình cài đặt thành công sẽ có thông báo hoàn thành

2. PHỤ LỤC 2: HƯỚNG DẪN CÀI ĐẶT GEOSERVER VỚI TOMCAT


XAMPP
Đầu tiên để cài đặt XAMPP ta vào link sau và tải phiên bản phù hợp:
(https://www.apachefriends.org/download.html)
Tiếp theo, vào link sau để tải và cài đặt phiên bản Java SE Development Kit:
(https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)
Sau khi cài xong JDK chúng ta tiến hành thiết lập biến môi trường cho JAVA. Bạn
chuột phải vào My Computer , chọn Properties, chọn vào Advanced system settings

Hộp thoại System Properties mở ra, chúng ta chọn vào Environment Variables..
như hình dưới
Trong System variables chọn New
Điền Variable name: JAVA_HOME, Variable value là đường dẫn đến thư mục cài
đặt jdk như hình dưới:

Sau đó chúng ta tìm biến Path trong System Variable và chọn Edit. Chúng ta thêm
đoạn sau đây vào cuối của Variable value: %JAVA_HOME%\bin. Click OK để kết thúc

cài đặt.
Sau khi cài xong JAVA chúng ta tiếp tục cài Tomcat. Tiếp tục bạn tạo một biến
môi trường cho Tomcat với tên biến: CATALINA_HOME, giá trị là đường dẫn đến
Tomcat như hình dưới:

Sau đó tiếp tục thêm Variable value: %CATALINA_HOME%\bin vào biến Path
như với Java ở trên.
Tiếp theo chúng ta mở XAMPP Control Panel, khởi động Tomcat, click Admin để
chạy Tomcat.
Sau khi Tomcat đã chạy, các bạn vào trình duyệt mặc định sẽ thấy như sau:

Tiếp theo chúng ta tải GeoServer với link: (http://geoserver.org/release/stable/)


Các bạn chọn vào Web Archive (war) để tải GeoServer về. Sau khi tải xong, giải
nén file tải được chúng ta sẽ có một file war để cài đặt.
Vào Tomcat http://localhost:8080 chọn vào Manager App. User các bạn có thể tìm
thấy trong conf/tomcat-users.xml. Nếu không vào được và báo lỗi các bạn có thể phải
thêm manager-gui role cho user như sau:
Bước 1: Vào thư mục conf trong D:\XAMPP\tomcat, mở file tomcat-users.xml
Bước 2: Thêm role và user như sau:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-
gui,manager-script,manager-jmx,manager-status"/> 

Trong D:\XAMPP\tomcat\webapps\manager\WEB-INF\web.xml chúng ta sửa


dòng sau để tăng giới hạn kích thước file geoserver:
<multipart-config>
<!-- 50MB max -->
<max-file-size>52428800</max-file-size> 
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
Đổi từ 52428800 (50MB) thành 125829120 (tương đương 120MB)
Sau khi vào Manager App trong phần WAR file to deploy, chúng ta chọn tệp với
file war của GeoServer và nhấn Deploy

Nếu không Deploy thành công (true) thì Copy file geoserver.war vào thư mục
D:\XAMPP\tomcat\webapps và khởi động lại Tomcat.
Sau khi Deploy thành công thì ta sẽ thấy geoserver đã được liệt kê trong danh sách
các app như ở dưới:

GeoServer sau khi cài đặt phải sửa lại user admin password để đăng nhập được,
cách sửa lại như sau: 
Vào thư mục cài đặt GeoServer, tìm đến
D:\XAMPP\tomcat\webapps\geoserver\data\security\usergroup\default\users.xml. 
Sửa lại dòng code
<user enabled="true" name="admin"
password="digest1:D9miJH/hVgfxZJscMafEtbt...JOSV4POi55PQI4tw"/>
thành
<user enabled="true" name="admin" password="admin"/>
Tiếp theo truy cập vào http://localhost:8080/geoserver chúng ta sẽ thấy giao diện
của Geoserver. Username đăng nhập sẽ là admin, password là admin.

3. PHỤ LỤC 3: TẠO DATABASE VỚI POSTGRESQL VÀ POSTGIS


Các bước để lưu dữ liệu không gian vào trong PostgreSQL bao gồm: 
Bước 1: Mở pgAdmin4, nhập mật khẩu đã tạo trong lúc cài đặt
Bước 2: Chuột phải vào Database, chọn Create, chọn Database…
Bước 4: Trong tab General bạn điền tên Database, Owner bạn chọn là postgres.
Trong tab Definition bạn chọn postgis_31_sample và nhấn Save
Bước 5: Mở công cụ PostGIS Shapefile Import/Export Manager lên. Công cụ này
được cài sẵn sau khi bạn cài PostGIS (bạn có thể tìm thấy trong Start → PostGIS..). Chọn
vào View connection details… để nhập thông tin đăng nhập vào PostGIS như hình dưới:
Bước 6: Chọn AddFile, tìm đến file shape đã xử lý trên ArcMap rồi click Open để
thêm file shape vào danh sách. Sau đó click Import để đưa shape file này vào CSDL như
hình dưới:
Vậy là chúng ta đã đẩy xong file shape vào cơ sở dữ liệu, kiểm tra trong
PostgreSQL sẽ thấy đã được tạo thêm các bảng mới như hình dưới:

Cuối cùng, chúng ta kết nối cơ sở dữ liệu này với hệ thống WebGIS để tiến hành
lập trình, xây dựng các chức năng:
4. PHỤ LỤC 4: PUBLISH DATA VỚI GEOSERVER
Để Publish data với GeoServer chúng ta làm theo các bước sau:
Bước 1: Truy cập vào http://localhost:8080/geoserver chúng ta sẽ thấy giao diện
của GeoServer. Username đăng nhập sẽ là admin, password là admin.
Bước 2: Chọn Workspaces, chọn Add new workspace để tạo một vùng làm việc.
Bước 4: Chọn Workspace đã tạo, nhập tên database, nhập user là postgres và
passwd là admin.
Bước 5: Sau khi nhập thành công Database PostgreSQL, trang sẽ tự động load các
layer và đưa chúng ta sang trang New layer, chúng ta có thể chọn Publish để publish các
layer cần thiết lên GeoServer.

Bước 6: Sau khi nhấn Publish, chúng ta định nghĩa hệ tọa độ (ở đây mình dùng hệ
tọa độ WGS84, mã code
4326) 

Bước 7: Trong phần Bounding Boxes, nhấn Compute form data và Compute from
native bounds để tính toán extent cho layer của chúng ta như hình dưới:
Bước 8: Click Save để lưu lại Layer của chúng ta. Sau khi lưu xong thì Layer sẽ
hiện trên danh sách Layer như hình dưới:

Bước 9: Làm lại các bước trên đối với các Layer còn lại.

Sau khi hoàn thành Publish các layer vào GeoServer, ta chọn Layer Preview, chọn
OpenLayers để xem trước các layer trên nền Web
Kết quả xem trước lớp dữ liệu xã phường trên GeoServer

5. PHỤ LỤC 5: BÀI TOÁN TÌM ĐƯỜNG VỚI POSTGIS + PGROUTING


1. Kiểm tra chương trình
Với các phiên bản PostGIS bản mới nhất hiện nay thì pgRouting đã tích hợp sẵn
vào bộ cài đặt:
 Vào pgAdmin, chọn SQL rồi gõ lệnh sau để kiểm tra xem bạn đã cài đặt thành
công hay chưa và phiên bản pgRouting là bao nhiêu:
2. Xử lý dữ liệu:
Data của OpenStreetMap sẽ không thể sử dụng được luôn để đưa vào tạo route vì
pgRouting đòi hỏi mỗi đoạn giao cắt sẽ phải là một line riêng. Vì vậy chúng ta sẽ phải
tiến hành phá khối các polyline thành các line. Để phá khối polyline chúng ta sử dụng
công cụ Explore của QGIS như sau:
 Vào Processing → ToolBox để bật toolbox. Trong toolbox chúng ta gõ Explore 
vào ô tìm kiếm để mở chức năng Explore.
 Chọn layer để phá khối, chọn đường dẫn file sau khi đã phá khối và ấn Run.
Tiếp theo chúng ta sẽ Import layer Network.shp vào database của PostgreSQL
Quay trở lại pgAdmin, để cho layer network của chúng ta có thể tìm đường được
chúng ta phải tạo Topology cho nó theo các bước sau:
1. Mở pgAdmin và chọn vào database chứa bảng network và chọn Query Tool.

2. Chúng ta thêm 2 trường vào bảng network tạo ở bước trước như sau:
alter table public.network add column source integer;
alter table public.network add column target integer;

3. Tạo topology cho network như sau:


select pgr_createTopology('public.network', 0.0001, 'geom',
'gid');
4. Sau khi chạy xong, pgRouting sẽ tạo cho chúng ta một bảng nữa có tên là
network_vertices_pgr.
Để test chức năng chúng ta sẽ sử dụng QGIS như sau:
1. Mở QGIS, vào Database → DB Manager → DB Manager
2. Chắc chắn rằng bạn đã connect đến PostGIS, chọn vào database bạn đã connect
đến, vào menu Database → SQL window gõ lệnh sau rồi ấn Execute.
SELECT seq, node as id1, edge as id2, cost, geom
FROM pgr_dijkstra(
'SELECT gid as id, source, target, st_length(geom) as
cost FROM public.network',
1, 5000, false
) di
JOIN public.network pt
ON di.edge = pt.gid;
3. Chọn Load as new layer → Load để xem kết quả:
4. Kết quả:

3. Tạo layer Route trong Geoserver:


1. Tạo hàm pgr_fromAtoB với PostgreSQL:
CREATE OR REPLACE FUNCTION pgr_fromAtoB(
IN tbl varchar,
IN x1 double precision,
IN y1 double precision,
IN x2 double precision,
IN y2 double precision,
OUT seq integer,
OUT gid integer,
OUT name text,
OUT heading double precision,
OUT cost double precision,
OUT geom geometry)
RETURNS SETOF record AS
$BODY$
DECLARE
sql text;
rec record;
source integer;
target integer;
point integer;
BEGIN
-- Find nearest node
EXECUTE 'SELECT id::integer FROM network_vertices_pgr
ORDER BY the_geom <-> ST_GeometryFromText(''POINT('
|| x1 || ' ' || y1 || ')'') LIMIT 1' INTO rec;
source := rec.id;
EXECUTE 'SELECT id::integer FROM network_vertices_pgr
ORDER BY the_geom <-> ST_GeometryFromText(''POINT('
|| x2 || ' ' || y2 || ')'') LIMIT 1' INTO rec;
target := rec.id;
-- Shortest path query (TODO: limit extent by BBOX)
seq := 0;
sql := 'SELECT gid, geom, name, cost, source, target,
ST_Reverse(geom) AS flip_geom FROM ' ||
'pgr_dijkstra(''SELECT gid as id , source::int, target::int,
'
|| 'st_length(geom) as cost FROM '
|| quote_ident(tbl) || ''', '
|| source || ', ' || target
|| ' , false), '
|| quote_ident(tbl) || ' WHERE edge = gid ORDER BY seq';
 
-- Remember start point
point := source;

FOR rec IN EXECUTE sql


LOOP
-- Flip geometry (if required)
IF ( point != rec.source ) THEN
rec.geom := rec.flip_geom;
point := rec.source;
ELSE
point := rec.target;
END IF;
 
-- Calculate heading (simplified)
EXECUTE 'SELECT degrees( ST_Azimuth(
ST_StartPoint(''' || rec.geom::text || '''),
ST_EndPoint(''' || rec.geom::text || ''') ) )'
INTO heading;
 
-- Return record
seq := seq + 1;
gid := rec.gid;
name := rec.name;
cost := rec.cost;
geom := rec.geom;
RETURN NEXT;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE STRICT;
Hàm trên sẽ tìm trong bảng network_vertices_pgr để tìm các điểm gần nhất với
điểm chúng ta nhập vào để làm target, source, rồi sử dụng 2 điểm đó đưa vào hàm
pgr_dijkstra để tìm route.
Các bước tạo layer Route trong Geoserver:
1. Sử dụng công cụ Configure new SQL view… của GeoServer. Chúng ta chọn
Configure new SQL view…

2. Điền View Name là route, SQL statement nhập như sau:


SELECT (route.geom) FROM (
SELECT geom FROM pgr_fromAtoB('network', %x1%, %y1%,
%x2%, %y2%
) ORDER BY seq) AS route
3. Tiếp theo chúng ta chọn Guess parameters from SQL, nhập Default value =0 và
Validation regular expression = ^-?[\d.]+$

4. Trong phần Attributes, ấn Refresh, trong Type bạn chọn LineString, SRID chọn hệ
tọa độ của data, ở đây là 4326 và Save để hoàn tất bước này.

5. Nhấn Compute from data và Compute from native bounds để tạo tạo độ khung cho
layer → Save để hoàn tất.
4. Kết quả chạy trên localhost:

You might also like