Giới thiệu dự án
Huyện Cần Giờ là huyện duy nhất giáp biển của Thành phố Hồ Chí Minh, sở hữu vị trí chiến lược cách trung tâm thành phố khoảng 50 km về phía Đông Nam. Nơi đây có Khu dự trữ sinh quyển rừng ngập mặn Cần Giờ với tổng diện tích 75.740 ha (vùng lõi 4.880 ha) – khu dự trữ sinh quyển đầu tiên tại Việt Nam được UNESCO công nhận năm 2000. Theo số liệu của Cục Thống kê TP.HCM và Tổng cục Du lịch, năm 2023 huyện Cần Giờ đón 3,8 triệu lượt khách (tăng 26% so với năm 2022), doanh thu năm 2022 đạt 2.114 tỷ đồng. Huyện đặt mục tiêu đến năm 2030 trở thành thành phố nghỉ dưỡng và du lịch sinh thái chất lượng cao, đón 49 triệu lượt khách với tốc độ tăng trưởng bình quân 12,5%/năm.
MỤC TIÊU PHÁT TRIỂN DU LỊCH CẦN GIỜ (2023 - 2030)
2023: [████] 3,8 triệu lượt khách (+26% YoY)
2030: [████████████████████████████████████████████████] 49 triệu lượt khách (12,5%/năm)
Tuy nhiên, thực trạng hạ tầng thông tin du lịch tại địa phương còn tồn tại nhiều điểm nghẽn nghiêm trọng:
- Hệ thống thông tin phân tán, nghèo nàn: Kênh quảng bá của Ban Quản lý rừng phòng hộ Cần Giờ chủ yếu là trang web tĩnh, thiếu khả năng tương tác trực quan.
- Thách thức về địa hình và điều khiển lộ trình: Mạng lưới sông ngòi chiếm hơn 22.000 ha với mật độ dòng chảy 7–11 km/km², địa hình trũng thấp và 5 cấp độ ngập triều khiến việc tra cứu bản đồ giấy hoặc ứng dụng thông thường không đáp ứng được lộ trình tối ưu kết hợp đường bộ và đường thủy.
- Thiếu hụt dữ liệu không gian tích hợp: Du khách gặp khó khăn khi tìm kiếm đồng thời thông tin địa điểm tham quan, 289 cơ sở ẩm thực, 56 cơ sở lưu trú và tình hình thời tiết, lượng mưa thực tế.
+-----------------------------------------------------------------------------------+
| MỤC TIÊU NGHIÊN CỨU ĐỒ ÁN |
+---+-------------------------------------------------------------------------------+
| 1 | Xây dựng CSDL không gian & phi không gian chuẩn hóa trên PostgreSQL/PostGIS. |
| 2 | Lập trình giao diện WebGIS đa phân hệ (Trang chủ, Bản đồ tương tác, Quản trị).|
| 3 | Phát triển chức năng tương tác không gian, định vị, tìm đường và tích hợp API. |
+---+-------------------------------------------------------------------------------+
Đề tài "Phát triển WebGIS hỗ trợ phát triển du lịch sinh thái tại huyện Cần Giờ, thành phố Hồ Chí Minh" do tác giả Nguyễn Thanh Hưng thực hiện (ngành Hệ thống Thông tin, Trường Đại học Nông Lâm TP.HCM, GVHD: ThS. Nguyễn Duy Liêm) xây dựng giải pháp kiến trúc WebGIS 3 tầng hiện đại. Giải pháp kết hợp giữa hệ quản trị CSDL quan hệ đối tượng PostgreSQL/PostGIS, backend Node.js và frontend ReactJS với Mapbox API nhằm số hóa toàn diện hạ tầng du lịch sinh thái Cần Giờ.
Hệ thống cho phép hiển thị bản đồ vector thời gian thực với độ trễ tải trang dưới 1,5 giây, cung cấp chỉ đường chính xác qua thuật toán định tuyến, tích hợp lớp bản đồ radar mưa cập nhật chu kỳ 10–30 phút. Phạm vi nghiên cứu bao trùm toàn bộ ranh giới hành chính 70.445,34 ha của huyện Cần Giờ với dữ liệu thực địa cập nhật năm 2024.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nghiên cứu tiến hành đánh giá so sánh các giải pháp thông tin du lịch và nền tảng WebGIS hiện hữu nhằm xác định khoảng trống công nghệ:
| Tiêu chí so sánh |
Cổng BQL Rừng Cần Giờ |
WebGIS Du lịch TP.HCM (2021) |
WebGIS Quảng Bình (2019) |
WebGIS Du lịch Cần Giờ (Đề tài) |
| Kiến trúc dữ liệu |
Web tĩnh (HTML/CSS) |
Cơ sở dữ liệu quan hệ |
MySQL + PHP backend |
PostgreSQL/PostGIS + GeoPackage |
| Tương tác bản đồ số |
Không hỗ trợ |
Hạn chế tương tác sâu |
Có tương tác cơ bản |
Tương tác đa lớp mượt mà (Mapbox GL) |
| Định vị & Dẫn đường |
Không có |
Gợi ý lộ trình tĩnh |
Thuật toán lịch trình tự động |
Định vị GPS HTML5 + Routing đa điểm |
| Dữ liệu thời tiết live |
Không tích hợp |
Không có |
Không có |
OpenWeatherMap (10m) + RainViewer (30m) |
| Khả năng quản trị CMS |
Thủ công |
Đóng kín |
Bán tự động |
Quản trị phân quyền NextUI + Express API |
Theo mô hình phân loại yêu cầu MoSCoW, hệ thống xác định các tính năng cốt lõi:
- Must-have: Tương tác bản đồ số (Zoom, Pan, Layer switch), định vị GPS người dùng, tìm kiếm thuộc tính và không gian đối với 15 điểm du lịch, 289 cơ sở ẩm thực, 56 cơ sở lưu trú; thuật toán dẫn đường.
- Should-have: Đo khoảng cách/diện tích thực tế, hiển thị lớp thời tiết hiện tại và dự báo lượng mưa.
- Could-have: Tích hợp bộ lọc đánh giá sao, thời gian hoạt động của dịch vụ ẩm thực/lưu trú.
- Won't-have (giai đoạn này): Cổng thanh toán trực tuyến và đặt phòng trực tiếp (Booking/Payment gateway).
MA TRẬN YÊU CẦU HỆ THỐNG (MoSCoW)
+------------------------------------+-------------------------------------+
| MUST-HAVE | SHOULD-HAVE |
| - Tương tác bản đồ số (Zoom/Pan) | - Đo đạc khoảng cách / diện tích |
| - Định vị GPS người dùng | - Layer thời tiết OpenWeatherMap |
| - Dẫn đường lộ trình tối ưu | - Radar dự báo mưa RainViewer |
| - Tra cứu 360 POIs du lịch | |
+------------------------------------+-------------------------------------+
| COULD-HAVE | WON'T-HAVE |
| - Bộ lọc đánh giá & thời gian mở | - Cổng thanh toán trực tuyến |
| - Tùy biến kiểu bản đồ vệ tinh | - Hệ thống đặt phòng tự động |
+------------------------------------+-------------------------------------+
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình 3 tầng vật lý phân tách độc lập (3-Tier Architecture):
graph TD
subgraph Presentation_Tier ["Tầng Trình Diễn (Client - Browser)"]
UI["Giao diện Người dùng (ReactJS 18.2 + NextUI 2.2 + Bootstrap)"]
MapEngine["Engine Bản đồ (Mapbox GL JS v2.15)"]
UI <--> MapEngine
end
subgraph Logic_Tier ["Tầng Xử Lý Logic (Application Server)"]
WebServer["Web Server (Apache HTTP Server / Nginx)"]
NodeServer["API Engine (NodeJS v18 LTS / Express v4.18)"]
MapboxAPI["Mapbox Studio Cloud Services"]
ExternalAPI["External APIs (OpenWeatherMap + RainViewer)"]
WebServer <--> NodeServer
NodeServer <--> MapboxAPI
NodeServer <--> ExternalAPI
end
subgraph Data_Tier ["Tầng Dữ Liệu (Database Server)"]
Postgres["RDBMS PostgreSQL 15"]
SpatialExt["Spatial Engine PostGIS 3.3"]
GeoFiles["GeoPackage (.gpkg) & Vector Tiles"]
Postgres --- SpatialExt
SpatialExt <--> GeoFiles
end
Presentation_Tier <== "HTTP/HTTPS (REST API JSON & Vector Tiles)" ==> Logic_Tier
Logic_Tier <== "SQL / Spatial Queries (pg driver)" ==> Data_Tier
Technology Stack & Versions
- Frontend: ReactJS v18.2.0, NextUI v2.2.9, Bootstrap v5.3.0, Mapbox GL JS v2.15.0, jQuery v3.7.0.
- Backend: NodeJS v18.17.0 LTS, Express.js v4.18.2, pg-promise v11.5.0.
- Database & GIS Server: PostgreSQL v15.3, PostGIS v3.3.3, Mapbox Studio API, QGIS v3.28 LTR.
- Dữ liệu chuyển đổi: Chuyển đổi toàn bộ dữ liệu từ hệ tọa độ chuẩn quốc gia VN-2000 (Múi 3°, Kinh tuyến trục $105^\circ45'$, EPSG:3405) sang hệ tọa độ quốc tế WGS 84 (EPSG:4326).
+--------------------------------------------------------------------+
| THÔNG SỐ CHUYỂN ĐỔI TỌA ĐỘ VÀ BỘ DỮ LIỆU |
+----------------------+---------------------------------------------+
| Nguồn dữ liệu gốc | VN-2000 Múi chiếu 3° (Sở TN&MT TP.HCM) |
| Hệ tọa độ đích | WGS 84 / Geographic Lat-Long (EPSG:4326) |
| Điểm du lịch (POI) | 15 điểm di tích, danh lam, sinh thái |
| Cơ sở ẩm thực | 289 nhà hàng, quán ăn địa phương |
| Cơ sở lưu trú | 56 khách sạn, resort, nhà nghỉ, homestay |
| Mạng lưới thủy hệ | 22.000 ha sông rạch (Lòng Tàu, Soài Rạp...) |
| Giao thông bộ | OpenStreetMap Geofabrik + Tuyến Rừng Sác |
+----------------------+---------------------------------------------+
Database Schema Design
Cơ sở dữ liệu lưu trữ các bảng quan hệ không gian với kiểu hình học GEOMETRY(Point, 4326) và GEOMETRY(MultiLineString/MultiPolygon, 4326):
-- Thiết kế bảng lưu trữ cơ sở ẩm thực và địa điểm du lịch
CREATE TABLE tourism_poi (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
category VARCHAR(100), -- 'Di tích', 'Sinh thái', 'Biển'
address TEXT,
operating_hours VARCHAR(100),
rating NUMERIC(2,1) CHECK (rating >= 0 AND rating <= 5),
reviews_count INTEGER DEFAULT 0,
phone VARCHAR(20),
geom GEOMETRY(Point, 4326)
);
CREATE INDEX idx_tourism_poi_geom ON tourism_poi USING GIST (geom);
Methodology
Đề tài áp dụng phương pháp luận phát triển phần mềm lặp (Iterative Lifecycle) kết hợp quy trình quản lý chất lượng không gian GIS:
- Giai đoạn thu thập & ETL: Thu thập dữ liệu từ Sở TN&MT, OpenStreetMap và trích xuất dữ liệu bán cấu trúc bằng Apify scraper từ Google Maps.
- Giai đoạn tiền xử lý: Sử dụng QGIS Desktop để chuẩn hóa bảng mã tiếng Việt UTF-8, loại bỏ bản ghi trùng lặp và chuyển hệ tọa độ về WGS 84.
- Giai đoạn phát triển phần mềm: Xây dựng hệ thống trong 4 tháng (02/2024 – 06/2024).
- Kiểm thử & Đánh giá rủi ro: Kiểm thử chức năng, đo đạc độ trễ mạng và đánh giá tính an toàn bảo mật qua phân quyền JWT trên trang quản trị.
Implementation và kết quả
Development process
Quá trình lập trình tập trung vào việc hiện thực hóa các module API backend và giao diện bản đồ tương tác Client-side.
QUY TRÌNH THỰC HIỆN DỰ ÁN (02/2024 - 06/2024)
[Tháng 2-3/2024] Thu thập & Chuẩn hóa dữ liệu GIS (VN-2000 -> WGS 84)
│
[Tháng 4/2024] Xây dựng Database PostGIS & RESTful API NodeJS
│
[Tháng 5/2024] Lập trình giao diện ReactJS, tích hợp Mapbox GL JS & Routing
│
[Tháng 6/2024] Tích hợp OpenWeather/RainViewer, UAT & Triển khai nghiệm thu
Thuật toán tìm kiếm không gian (Spatial Radius Search)
Backend NodeJS xử lý truy vấn các điểm dịch vụ ẩm thực/lưu trú lân cận vị trí người dùng thông qua hàm không gian PostGIS ST_DWithin:
// Express.js Controller: Tìm kiếm POI lân cận theo bán kính (ST_DWithin)
const express = require('express');
const router = express.Router();
const db = require('../config/database');
router.get('/api/v1/poi/nearby', async (req, res) => {
try {
const { longitude, latitude, radiusInMeters, category } = req.query;
const query = `
SELECT id, name, category, address, rating, reviews_count,
ST_X(geom) as lng, ST_Y(geom) as lat,
ST_Distance(geom::geography, ST_SetSRID(ST_MakePoint($1, $2), 4326)::geography) as distance
FROM tourism_poi
WHERE ST_DWithin(geom::geography, ST_SetSRID(ST_MakePoint($1, $2), 4326)::geography, $3)
AND ($4::varchar IS NULL OR category = $4)
ORDER BY distance ASC
LIMIT 50;
`;
const result = await db.any(query, [parseFloat(longitude), parseFloat(latitude), parseFloat(radiusInMeters), category]);
res.status(200).json({ success: true, count: result.length, data: result });
} catch (error) {
res.status(500).json({ success: false, error: error.message });
}
});
module.exports = router;
Tích hợp Mapbox Routing & Lớp thời tiết
Frontend ReactJS khởi tạo bản đồ Mapbox GL JS, tích hợp MapboxDirections plugin để tính toán lộ trình di chuyển dựa trên thuật toán tìm đường ngắn nhất ($A^*$ Search Algorithm) và gọi dữ liệu radar mưa:
// React Component: Khởi tạo Mapbox GL JS & Routing Plugin
import React, { useEffect, useRef } from 'react';
import mapboxgl from 'mapbox-gl';
import MapboxDirections from '@mapbox/mapbox-gl-directions/dist/mapbox-gl-directions';
import '@mapbox/mapbox-gl-directions/dist/mapbox-gl-directions.css';
mapboxgl.accessToken = process.env.REACT_APP_MAPBOX_TOKEN;
const MapView = () => {
const mapContainerRef = useRef(null);
const map = useRef(null);
useEffect(() => {
if (map.current) return;
map.current = new mapboxgl.Map({
container: mapContainerRef.current,
style: 'mapbox://styles/mapbox/outdoors-v12',
center: [106.8825, 10.4916], // Tọa độ trung tâm Cần Giờ
zoom: 11
});
// Tích hợp thanh công cụ tìm đường lộ trình tối ưu (Mapbox Directions API)
const directions = new MapboxDirections({
accessToken: mapboxgl.accessToken,
unit: 'metric',
profile: 'mapbox/driving',
controls: { instructions: true }
});
map.current.addControl(directions, 'top-left');
// Thêm lớp Radar thời tiết từ RainViewer API
map.current.on('load', () => {
map.current.addSource('rainviewer-radar', {
type: 'raster',
tiles: ['https://tilecache.rainviewer.com/v2/radar/nowcast_30min/256/{z}/{x}/{y}/2/1_1.png'],
tileSize: 256
});
map.current.addLayer({
id: 'rain-radar-layer',
type: 'raster',
source: 'rainviewer-radar',
paint: { 'raster-opacity': 0.65 }
});
});
}, []);
return <div ref={mapContainerRef} style={{ width: '100%', height: '100vh' }} />;
};
export default MapView;
Testing và validation
Quá trình thử nghiệm hệ thống được thực hiện qua các bài kiểm tra chức năng (Functional Testing) và đo lường hiệu năng kỹ thuật:
+------------------------------------------------------------------------+
| KẾT QUẢ ĐO LƯỜNG HIỆU NĂNG HỆ THỐNG |
+---------------------------------------+--------------------------------+
| Thời gian phản hồi API trung bình | 42 ms |
| Thời gian render bản đồ đầy đủ | 1,18 giây |
| Độ chính xác định vị GPS HTML5 | Sai số < 8,5 mét |
| Tốc độ tính toán lộ trình (A*) | < 185 ms |
| Tỷ lệ test case pass (Unit/E2E) | 98,4% (63/64 test cases) |
+---------------------------------------+--------------------------------+
Đánh giá UAT (User Acceptance Testing) thực hiện trên 60 người dùng (cán bộ quản lý, sinh viên, khách du lịch thực tế tại hội thảo chuyên ngành) cho kết quả điểm hài lòng tổng thể đạt 91,5/100 điểm, trong đó tính năng tìm đường và xem radar mưa được đánh giá cao nhất.
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các phân hệ đề ra:
- Module Bản đồ tương tác: Điều hướng mượt mà, hỗ trợ đo đạc khoảng cách đa điểm, bật/tắt linh hoạt 6 lớp bản đồ nền và lớp chuyên đề.
- Module Dữ liệu chuyên đề: Quản lý và trực quan hóa chính xác 15 điểm danh lam/di tích, 289 điểm ẩm thực và 56 điểm lưu trú với đầy đủ metadata (ảnh, rating, số điện thoại, thời gian mở cửa).
- Module Dẫn đường thông minh: Dẫn đường tối ưu mạng lưới đường bộ (đặc biệt tuyến đường huyết mạch Rừng Sác nối phà Bình Khánh đến thị trấn Cần Thạnh).
- Module Tích hợp khí tượng: Cập nhật tự động nhiệt độ, vận tốc gió, độ ẩm mỗi 10 phút và hiển thị bán kính mưa dự báo trong 30 phút.
Đổi mới và đóng góp
Technical Innovations
- Kiến trúc tích hợp dữ liệu khí tượng thời gian thực vào WebGIS sinh thái: Lần đầu tiên tại khu vực rừng ngập mặn Cần Giờ, một hệ thống WebGIS tích hợp trực tiếp lớp dữ liệu radar lượng mưa từ RainViewer API và tham số khí hậu từ OpenWeatherMap API, hỗ trợ du khách phòng tránh các đợt áp thấp nhiệt đới và triều cường bất thường.
- Đồng bộ hóa pipeline dữ liệu đa nguồn: Tự động hóa quá trình thu thập dữ liệu bán cấu trúc (Google Maps JSON qua Apify), kết hợp dữ liệu hành chính chuẩn hóa từ Sở Tài nguyên và Môi trường TP.HCM, chuyển đổi liền mạch giữa VN-2000 và WGS 84.
- Tối ưu hóa tải Vector Tiles với Mapbox Studio & GeoPackage: Giảm kích thước gói dữ liệu truyền tải qua mạng đến 60% so với phương pháp truyền tải GeoJSON truyền thống, giúp bản đồ hoạt động mượt mà trên cả mạng 3G/4G di động.
TIẾT KIỆM TÀI NGUYÊN VÀ HIỆU NĂNG TẢI DỮ LIỆU
GeoJSON truyền thống: [████████████████████] 100% (Dung lượng lớn ~8.4 MB)
Vector Tiles Tối ưu: [████████] 40% (Giảm 60% dung lượng, còn ~3.3 MB)
So sánh với các công trình nghiên cứu trước đây
| Thông số / Chức năng |
WebGIS Thái Bình (Nguyễn Mạnh Hà, 2017) |
WebGIS Quảng Nam (TTXT Du lịch, 2022) |
WebGIS Cần Giờ (Đề tài 2024) |
| Công nghệ bản đồ nền |
ArcGIS Online Server |
Google Map API |
Mapbox GL JS + GeoPackage |
| Định vị vị trí hiện tại |
Không hỗ trợ |
Có hỗ trợ |
Hỗ trợ GPS chính xác cao (<8.5m) |
| Dẫn đường động (Routing) |
Tuyến đường cố định |
Dẫn đường Google cơ bản |
Thuật toán A* & Mapbox Directions |
| Dữ liệu thời tiết & Radar |
Không có |
Không có |
Tích hợp Radar mưa 30m Real-time |
| Chi phí bản quyền nền tảng |
Bản quyền ArcGIS cao |
Chi phí API Google Maps cao |
Tối ưu mã nguồn mở, chi phí 0$ |
Đóng góp học thuật và giải thưởng
Nghiên cứu đã xuất sắc đạt Giải Ba tại Hội thảo khoa học quốc gia "Du lịch xanh gắn với phát triển bền vững trong bối cảnh toàn cầu hóa" (tháng 6/2024), khẳng định tính thực tiễn và giá trị khoa học trong việc ứng dụng công nghệ thông tin địa lý phục vụ chiến lược chuyển đổi số ngành du lịch TP. Hồ Chí Minh.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Real-world Use Cases)
- Kịch bản 1: Du khách phượt sinh thái trong ngày: Khách du lịch xuất phát từ nội thành TP.HCM qua phà Bình Khánh, mở WebGIS để định vị tọa độ cá nhân, tra cứu thời tiết huyện Cần Giờ, tìm lộ trình ngắn nhất đến Khu du lịch sinh thái Vàm Sát hoặc Đảo Khỉ, sau đó lọc danh sách các quán hải sản 4-5 sao trong bán kính 3 km.
- Kịch bản 2: Cơ quan quản lý du lịch địa phương: Cán bộ Phòng Văn hóa - Thông tin huyện Cần Giờ sử dụng trang quản trị WebGIS để cập nhật thông tin các điểm tham quan mới, theo dõi sự phân bố các cơ sở lưu trú và quy hoạch mạng lưới dịch vụ đồng bộ với định hướng du lịch xanh.
sequenceDiagram
autonumber
actor Tourist as Khách du lịch
participant WebApp as WebGIS Frontend (ReactJS)
participant APIServer as Node.js Backend API
participant GISDB as PostgreSQL/PostGIS
participant WeatherService as RainViewer API
Tourist->>WebApp: Truy cập WebGIS & Bật chia sẻ vị trí (GPS)
WebApp->>APIServer: Gửi tọa độ (Lat, Lng)
APIServer->>GISDB: Truy vấn POI lân cận (ST_DWithin)
GISDB-->>APIServer: Trả về 15 điểm du lịch, 289 quán ăn, 56 lưu trú
APIServer-->>WebApp: Trả dữ liệu JSON thuộc tính + không gian
WebApp->>WeatherService: Yêu cầu Tile Radar mưa thời gian thực
WeatherService-->>WebApp: Render lớp phủ mây mưa lên bản đồ
Tourist->>WebApp: Chọn điểm đến & Bấm "Chỉ đường"
WebApp-->>Tourist: Hiển thị lộ trình tối ưu và hướng dẫn di chuyển
Chiến lược triển khai hạ tầng kỹ thuật
Hệ thống được thiết kế để đóng gói và triển khai dễ dàng thông qua Docker Container trên máy chủ ảo hóa Linux (Ubuntu 22.04 LTS):
# Hướng dẫn triển khai hệ sinh thái WebGIS Cần Giờ với Docker Compose
git clone https://github.com/thanhhung-gis/webgis-cangio.git
cd webgis-cangio
# Khởi chạy PostgreSQL/PostGIS và Node.js Backend Container
docker-compose up -d --build
# Kiểm tra trạng thái các dịch vụ
docker ps
+--------------------------------------------------------------------+
| CẤU HÌNH PHẦN CỨNG TRIỂN KHAI ĐỀ XUẤT |
+----------------------+---------------------------------------------+
| Máy chủ (Cloud VPS) | 2 vCPU, 4GB RAM, 50GB NVMe SSD (Ubuntu 22) |
| Web Server | Nginx 1.24 (Reverse Proxy, SSL Let's Encrypt)|
| Cơ sở dữ liệu | PostgreSQL 15 + PostGIS 3.3 Engine |
| Băng thông mạng | Tối thiểu 100 Mbps |
| Chi phí vận hành ước tính | ~15 - 25 USD / tháng |
+----------------------+---------------------------------------------+
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Độ phủ sóng mạng di động: Tại một số vùng lõi sâu trong rừng ngập mặn Cần Giờ, sóng 4G/5G còn chập chờn, ảnh hưởng đến khả năng tải bản đồ nền trực tuyến.
- Dữ liệu giao thông đường thủy thời gian thực: Hiện tại dữ liệu đường thủy mới ở dạng lớp vector tĩnh, chưa tích hợp dữ liệu định vị tàu thuyền thời gian thực qua hệ thống AIS.
- Tính năng tương tác đa chiều: Chưa hỗ trợ mô hình 3D bản đồ số hoặc công nghệ thực tế ảo tăng cường (AR POI).
LỘ TRÌNH NÂNG CẤP VÀ PHÁT TRIỂN
+-----------------------------------------------------------------------+
| GIAI ĐOẠN HIỆN TẠI (v1.0 - 2024) |
| - WebGIS 2D Mapbox GL JS + PostGIS |
| - Định vị GPS, Routing đường bộ, Radar thời tiết 30 phút |
+-----------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------+
| GIAI ĐOẠN 2 (2025 - 2026): NÂNG CẤP OFFLINE & THỜI GIAN THỰC |
| - Hỗ trợ Progressive Web App (PWA) lưu cache bản đồ Offline |
| - Tích hợp AIS theo dõi tàu thuyền du lịch đường sông Cần Giờ |
+-----------------------------------------------------------------------+
│
▼
+-----------------------------------------------------------------------+
| GIAI ĐOẠN 3 (2027+): AI & 3D SMART TOURISM |
| - Trợ lý ảo AI tự động lập lịch trình du lịch cá nhân hóa |
| - Trực quan hóa 3D WebGIS rừng ngập mặn và di tích lịch sử |
+-----------------------------------------------------------------------+
Đối tượng hưởng lợi
CÁC NHÓM ĐỐI TƯỢNG HƯỞNG LỢI CHÍNH
┌───────────────────────────┐ ┌───────────────────────────┐
│ KHÁCH DU LỊCH │ │ CƠ QUAN QUẢN LÝ / XTTM │
│ - Giảm 65% thời gian tìm │ │ - Số hóa 100% dữ liệu POI │
│ lộ trình và địa điểm │ │ - Quảng bá trực quan 24/7 │
└─────────────┬─────────────┘ └─────────────┬─────────────┘
│ │
▼ ▼
═════════════════════════════════════════════════
HỆ SINH THÁI WEBGIS DU LỊCH SINH THÁI CẦN GIỜ
═════════════════════════════════════════════════
▲ ▲
│ │
┌─────────────┴─────────────┐ ┌─────────────┴─────────────┐
│ LẬP TRÌNH VIÊN / GIS DEV │ │ DOANH NGHIỆP ĐỊA PHƯƠNG │
│ - Kiến trúc mẫu Node-React│ │ - Tiếp cận 3,8M du khách │
│ - Pipeline xử lý PostGIS │ │ - Tăng doanh thu dịch vụ │
└───────────────────────────┘ └───────────────────────────┘
- Sinh viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình xây dựng ứng dụng WebGIS từ khâu tiền xử lý dữ liệu không gian, chuyển đổi hệ tọa độ đến lập trình full-stack.
- Kỹ sư phần mềm & GIS Developers: Cung cấp mã nguồn và mô hình tích hợp hiệu quả giữa PostgreSQL/PostGIS, Express.js và Mapbox GL JS API.
- Cơ quan quản lý Nhà nước: Cung cấp công cụ số hóa phục vụ đề án chuyển đổi số huyện Cần Giờ thành đô thị sinh thái thông minh trước năm 2030.
- Hộ kinh doanh & Doanh nghiệp du lịch: Giúp 289 quán ăn và 56 cơ sở lưu trú tiếp cận trực tiếp với du khách mà không tốn phí hoa hồng trung gian.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống WebGIS này là gì?
Hệ thống yêu cầu máy chủ cài đặt hệ điều hành Linux (Ubuntu 20.04/22.04 LTS), tối thiểu 2 vCPU, 4GB RAM và 30GB bộ nhớ trống. Các thành phần phần mềm bắt buộc gồm Node.js v18+, PostgreSQL v14+ có cài extension PostGIS v3+, cùng với tài khoản Mapbox API Token để kết nối bản đồ nền.
2. Hệ thống xử lý giới hạn tải (Scalability) như thế nào khi số lượng người dùng tăng cao?
Hệ thống sử dụng cơ chế lưu trữ dữ liệu không gian dưới dạng Mapbox Vector Tiles kết hợp bộ nhớ đệm (Caching) tại tầng Web Server Nginx. Đồng thời, các truy vấn không gian trên PostgreSQL đều được đánh chỉ mục không gian GiST (Generalized Search Tree), giúp duy trì thời gian phản hồi API dưới 100ms ngay cả khi phục vụ đồng thời hơn 1.000 truy vấn/giây.
3. Làm thế nào để tích hợp thêm các nguồn dữ liệu du lịch mới vào hệ thống?
Quản trị viên có thể đăng nhập vào trang quản trị CMS (được bảo mật bằng xác thực JWT) để thêm mới trực tiếp các điểm POI thông qua giao diện biểu mẫu hoặc tải lên hàng loạt qua file GeoJSON/Shapefile. Backend sẽ tự động kiểm tra tính hợp lệ của tọa độ WGS 84 và lưu trữ vào PostGIS.
4. Chi phí duy trì hệ thống WebGIS này hàng tháng là bao nhiêu?
Nhờ ứng dụng toàn bộ nền tảng mã nguồn mở (ReactJS, NodeJS, PostgreSQL/PostGIS) kết hợp gói miễn phí của Mapbox (hỗ trợ 50.000 lượt tải bản đồ/tháng) và OpenWeatherMap, chi phí duy trì chỉ bao gồm tiền thuê máy chủ đám mây (Cloud VPS), dao động từ 15 đến 25 USD/tháng (khoảng 350.000 – 600.000 VNĐ).
5. Dữ liệu thời tiết và radar mưa được cập nhật với tần suất như thế nào?
Dữ liệu thời tiết tổng quan (nhiệt độ, độ ẩm, sức gió) được kết nối với trạm khí tượng vệ tinh của OpenWeatherMap API với chu kỳ cập nhật 10 phút/lần. Dữ liệu bản đồ nhiệt lượng mưa từ RainViewer Radar API được cập nhật liên tục với bước dự báo 30 phút theo thời gian thực.
Kết luận
Đồ án khóa luận tốt nghiệp "Phát triển WebGIS hỗ trợ phát triển du lịch sinh thái tại huyện Cần Giờ, thành phố Hồ Chí Minh" của tác giả Nguyễn Thanh Hưng đã giải quyết triệt để bài toán thiếu hụt hạ tầng số trong quảng bá và điều hướng du lịch tại huyện Cần Giờ. Bằng việc kết hợp hài hòa giữa hệ cơ sở dữ liệu không gian mạnh mẽ PostgreSQL/PostGIS, backend NodeJS và giao diện trực quan ReactJS + Mapbox GL JS, công trình mang lại giải pháp công nghệ toàn diện, tối ưu lộ trình và nâng cao trải nghiệm của du khách.
Giải thưởng tại Hội thảo khoa học quốc gia năm 2024 là minh chứng rõ nét cho giá trị khoa học và tiềm năng ứng dụng thực tiễn của đề tài. Hệ thống không chỉ mở ra hướng đi mới cho du lịch sinh thái Cần Giờ mà còn là mô hình chuẩn có thể nhân rộng tại nhiều địa phương ven biển khác trên toàn quốc. Các nhà nghiên cứu, lập trình viên và cơ quan quản lý quan tâm có thể tham khảo kiến trúc giải pháp để áp dụng vào các bài toán chuyển đổi số ngành du lịch bền vững.