Tải bản đầy đủ (.pdf) (11 trang)

Mô phỏng mô hình quản lý hoạt động của hệ thống xe bus ở khu vực trung tâm thành phố Hồ Chí Minh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (629.66 KB, 11 trang )

Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 1
1. ĐẶT VẤN ĐỀ
Vấn đề tổ chức, xây dựng và quản lý dữ liệu là một trong những vấn đề cơ bản,
đóng vai trò cực kỳ quan trọng trong các ứng dụng GIS. Dữ liệu được mô tả đầy đủ,
quản lý chặt chẽ, trong sáng sẽ giúp cho các ứng dụng được vận hành trơn tru.
Cơ sở dữ liệu quan hệ truyền thống không thể mô tả được đầy đủ các thuộc tính
của các đối tượng không gian, người nghiên cứu về GIS phải nghiên cứu các mô hình
cơ sở dữ liệu quan hệ mở rộng. Việc giải quyết các bài tập trong môn học “Cơ sở dữ
liệu không gian” là một trong những phương pháp nghiên cứu và tiếp cận với các mô
hình dữ liệu không gian.
Tên đề tài: “Mô phỏng mô hình quản lý hoạt động của hệ thống xe bus ở
khu vực trung tâm thành phố Hồ Chí Minh”
2. NỘI DUNG
2.1. Mô tả các thực thể.
Trong mô hình có các thực thể chính sau đây:
 bus_station (Trạm xe bus): là đối tượng không gian dạng điểm:
 gid Tự sinh ra khi chuyển từ shape file sang
 id: Mã trạm, kiểu varchar(10)
 name: Tên trạm, kiểu varchar(50)
 the_geom: POINT()
 bus_route (Tuyến xe bus): là đối tượng không gian dạng đường:
 gid Tự sinh ra khi chuyển từ shape file sang
 id: Mã trạm, kiểu varchar(10)
 name: Tên trạm, kiểu varchar(50)
 the_geom: MULTILINESTRING()
 administrative (Đơn vị hành chính): là đối tượng không gian dạng vùng.
 gid Tự sinh ra khi chuyển từ shape file sang
 name: Tên trạm, kiểu varchar(50)
 the_geom: MULTIPOLYGON()
 bus_cooperative (Hợp tác xã xe bus): là một kiểu dữ liệu thông thường.


 id Mã Hợp tác xã, kiểu varchar(10)
 name: Tên hợp tác xã, công ty vận tải, kiểu varchar(50)
 quantity_of_bus: số lượng xe bus, kiểu interger
 addres: Địa chỉ, kiểu varchar(50)
Ngoài ra còn có 2 bảng geometry_columns và spatial_ref_sys dùng để mô tả
các kiểu dữ liệu không gian và tham chiếu không gian. Một cơ sở dữ liệu thông thường
trong PostgeSQL muốn tạo được các đối tượng không gian cần phải nạp 2 bảng này
Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 2
vào cơ sở dữ liệu của mình được thông qua hai file: lwpostgis.sql và
spatial_ref_sys.sql
Đồng thời một số mối quan hệ nhiều nhiều giữa các đối tượng cũng sinh ra các
bảng dữ liệu thuộc tính (mô tả chi tiết bên dưới).
2.2. Mô tả các quan hệ giữa các thực thể:
- bus_station và bus_route: Quan hệ nhiều – nhiều (kí hiệu M – N) (Quan hệ
không gian)
+ Một trạm xe bus có thể có nhiều tuyến đi qua.
+ Một tuyến xe bus có thể đi qua nhiều trạm khác nhau.
- bus_route và administrative: Quan hệ nhiều – nhiều (kí hiệu M – N) (Quan hệ
không gian)
+ Trên một đơn vị hành chính (quận, huyện) sẽ có nhiều tuyến xe bus đi
qua.
+ Một tuyến xe bus có thể chạy qua nhiều đơn vị hành chính (quận,
huyện) khác nhau.
- Bus_Station và Administrative: Quan hệ một – nhiều (kí hiệu 1 – M)
+ Một trạm xe bus chỉ thuộc một đơn vị hành chính (quận, huyện) nhất
định.
+ Trên một đơn vị hành chính (quận, huyện) người ta có thể đặt nhiều
trạm xe bus khác nhau.
- Bus_Route và Bus_Cooperative: Quan hệ nhiều – nhiều (kí hiệu M – N)

+ Một tuyến xe bus bất kỳ có thể được đăng ký tham gia bời nhiều hợp
tác xã xe bus khác nhau.
+ Một hợp tác xã xe bus có thể đăng ký hoạt động trên nhiều tuyến xe
bus.
Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 3
2.3. ER diagram with pictogram:

2.4. ER schema:
bus_station
gid
(serial)
id
(varchar)
name
(varchar)
the_geom
(point)
1 HB.001 Hong Bang POINT
2 BTH.001 Ba Thang Hai POINT
3 LDH.001 Le Dai Hanh POINT
…. ……… ……… ……

bus_route
gid
(integer)

id
(varchar)
name

(varchar)
the_geom
(mutilinestring)
1 R.001 Hong Bang – Cong vien Dam Sen MULTILINESTRING

2 R.002 Ben xe Cho Lon – Thao Cam Vien MULTILINESTRING

3 R.003 Ben Thanh – Ben xe mien Dong MULTILINESTRING

…. ……. …………… ……………….



Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 4
Bus_Cooperative
id
(varchar)

name
(varchar)
quantity_of_bus

(interger)
address
(varchar)
CPML Cong ty co phan van
tai Mai Linh
30 400A, Le Hong Phong, Quan
10

HTXQT

Hop tac xa van tai xe
buyt Quyet Thang
15 78, An Duong Vuong, Quan 5
XKCL Cong ty xe khach Cho
Lon
15 205, Phu Huu, Quan 5
…. ……. …… ……………

administrative
gid
(serial)
name
(varchar)
Shape
(Polygon)
1 Quan 1 MULTIPOLYGON

2 Quan 10 MULTIPOLYGON

3 Quan Tan Binh MULTIPOLYGON

…. ………. …………

route_crosses_station
id
(serial)
route_id
(varchar)

station_name
(varchar)
1 R.001 Hong Bang
2 R.002 Dai hoc Su Pham
3 R.003 Ben xe mien Dong
…… ………… ………………

route_crosses_station
id
(serial)
coop_id
(varchar)
route_name
(varchar)
1 CPML Hong Bang – Cong vien Dam Sen
2 HTX195 Cho Lon – Cho Go Vap
3 HTXBM Ben Thanh – San bay Tan Son Nhat
…… ………… ………………


Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 5

2.5. Danh sách một số câu hỏi truy vấn gợi ý:
 Liệt kê tất cả các trạm mà tuyến ‘Ben xe Cho Lon – Thao Cam Vien’ đi qua?
SELECT c.station_name, r.name AS Route_Name
FROM route_crosses_station c, bus_route r
WHERE (r.name = 'Ben xe Cho Lon - Thao Cam Vien')
AND (c.route_id=r.id);
station_name | route_name

+
An Dong Plaza | Ben xe Cho Lon - Thao Cam Vien
Dai hoc Su Pham | Ben xe Cho Lon - Thao Cam Vien
Cong vien Tao Dan | Ben xe Cho Lon - Thao Cam Vien
An Duong Vuong | Ben xe Cho Lon - Thao Cam Vien
Ben xe Cho Lon | Ben xe Cho Lon - Thao Cam Vien
Hung Vuong Plaza | Ben xe Cho Lon - Thao Cam Vien
Dinh Thong Nhat | Ben xe Cho Lon - Thao Cam Vien
Dai truyen hinh Tp.HCM | Ben xe Cho Lon - Thao Cam Vien
Nga Sau Cong Hoa | Ben xe Cho Lon - Thao Cam Vien
Thao Cam Vien | Ben xe Cho Lon - Thao Cam Vien
Chau Van Liem | Ben xe Cho Lon - Thao Cam Vien
Nguyen Trai | Ben xe Cho Lon - Thao Cam Vien
(12 rows)
 Liệt kê tất cả các trạm xe bus nằm ở Quận 1?
SELECT s.name
FROM bus_station s
WHERE ST_Contains(
(SELECT the_geom
FROM administrative
WHERE name = 'Quan 1')
,s.the_geom);
name

Cong vien Tao Dan
Dinh Thong Nhat
Dai truyen hinh Tp.HCM
Thao Cam Vien
Cho Ben Thanh
Nguyen Thi Minh Khai

Cong vien Le Van Tam
(7 rows)
 Liệt kê tất cả các tuyến xe bus đi qua Quận 5?
SELECT r. name
FROM bus_route r
WHERE ST_Crosses(r.the_geom,
(SELECT the_geom
FROM administrative
WHERE name = 'Quan 5')
);
name

Ben xe Cho Lon - Thao Cam Vien
Cho Lon - Cho Go Vap
(2 rows)
Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 6

 Tính tổng chiều dài tất cả các tuyến xe bus?
SELECT sum(ST_Length(the_geom)) AS km_bus
FROM bus_route;
km_bus

53.7695054045018
(1 row)
 Quận nào có nhiều trạm xe bus nhất?
SELECT a.name AS District_Name
FROM administrative a, bus_station s
WHERE ST_Contains(a.the_geom,s.the_geom)
ORDER BY District_Name

DESC LIMIT 1;
district_name

Quan Tan Binh
(1 row)
 Quận nào có nhiều tuyến xe bus đi qua nhất?
SELECT a.name AS District_Name
FROM administrative a, bus_route r
WHERE ST_Crosses(r.the_geom,a.the_geom)
ORDER BY District_Name
DESC LIMIT 1;
district_name

Quan Tan Binh
(1 row)
 Tuyến xe bus nào có lộ trình dài nhất?
SELECT name, ST_length(the_geom) AS Length_Km
FROM bus_route
ORDER BY Length_Km
DESC LIMIT 1;
name | length_km
+
Cho Lon - Cho Go Vap | 11.9828896181423
(1 row)
 Hợp tác xã nào có nhiều xe nhất?
SELECT name, quantity_of_bus
FROM bus_cooperative
ORDER BY quantity_of_bus
DESC LIMIT 1;
name | quantity_of_bus

+
Cong ty co phan van tai Mai Linh | 30
(1 row)



Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 7

 Hai tuyến xe bus ‘Cho Lon – Cho Go Vap’ và ‘Ben Thanh – San bay Tan Son
Nhat’ có cắt nhau không?
SELECT ST_intersects(
(SELECT the_geom
FROM bus_route
WHERE name ='Cho Lon - Cho Go Vap'),
(SELECT the_geom
FROM bus_route
WHERE name ='Ben Thanh - San bay Tan Son Nhat')
);
st_intersects

t
(1 row)
 Liệt kê tất cả những tuyến xe bus giao cắt với tuyến ‘Ben Thanh – San bay Tan
Son Nhat’?
SELECT name
FROM bus_route r
WHERE ST_intersects(the_geom,
(SELECT the_geom
FROM bus_route

WHERE name ='Ben Thanh - San bay Tan Son Nhat'))
AND (name !='Ben Thanh - San bay Tan Son Nhat');
name

Ben xe Cho Lon - Thao Cam Vien
Ben Thanh - Ben xe mien Dong
Cho Lon - Cho Go Vap
(3 rows)
 Tìm tuyến xe bus đi qua nhiều quận nhất?
SELECT r.name, COUNT(distinct a.name) AS district
FROM administrative a, bus_route r
WHERE st_crosses(r.the_geom,a.the_geom)
GROUP BY r.name
ORDER BY district DESC LIMIT 1;
name | district
+
Cho Lon - Cho Go Vap | 6
(1 row)
 Tìm tuyến xe bus đi qua nhiều trạm nhất?
SELECT r.name AS Route_Name,
COUNT(c.station_name) AS Number_Station
FROM route_crosses_station c, bus_route r
WHERE c.route_id=r.id
GROUP BY r.name
ORDER BY Number_Station DESC LIMIT 1;
route_name | number_station
+
Ben xe Cho Lon - Thao Cam Vien | 12
(1 row)


Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 8

 Tính khoảng cách giữa hai trạm ‘Dai hoc Bach Khoa’ va ‘Dai hoc Su Pham’?
SELECT ST_distance(
(SELECT the_geom
FROM bus_station
WHERE name = 'Dai hoc Bach Khoa'),
(SELECT the_geom
FROM bus_station
WHERE name ='Dai hoc Su Pham'))
AS Distance_Km;
distance_km

3.00883091654776
(1 row)
 Tính từ trạm ‘Dai hoc Bach Khoa’, liệt kê tất cả các trạm trong bán kính 2 km?
Tính khoảng cách đến mỗi trạm đó và sắp xếp theo thứ tự từ gần đến xa?
SELECT id,name,ST_distance(
(SELECT the_geom
FROM bus_station
WHERE name ='Dai hoc Bach Khoa'),the_geom)
AS Distance_Km from bus_station
WHERE (ST_DWithin(
(SELECT the_geom
FROM bus_station
WHERE NAME ='Dai hoc Bach Khoa'), the_geom,2))
AND (name !='Dai hoc Bach Khoa')
ORDER BY Distance_Km;
id | name | distance_km

+ +
LDH.001 | Le Dai Hanh | 0.677032874539835
LTK.001 | Ly Thuong Kiet | 1.03114751093211
LLQ.002 | Lac Long Quan | 1.09247080604834
BTH.002 | Ba Thang Hai | 1.15923686339518
BT.001 | Binh Thoi | 1.42901293042356
OIK.001 | Cong vien Dam Sen | 1.78699808208386
CMT8.003 | Cach Mang Thang Tam | 1.8696803311251
BTH.001 | Ba Thang Hai | 1.90253048453201
HV.001 | Hung Vuong | 1.94893975059578
HV.002 | Hung Vuong Plaza | 1.95264094065191
(10 rows)
 Tính chiều dài trung bình của các tuyến xe bus?
SELECT AVG(ST_length(the_geom))
AS Distance_Average_Km
FROM bus_route;
distance_average_km

8.96158423408364
(1 row)



Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 9

 Tìm trên quận 5 tuyến và xe của ‘Cong ty co phan van tai Mai Linh’ có ID là
‘CPML’?
SELECT distinct r.name
FROM bus_route r, bus_cooperative c, route_of_cooperative rc

WHERE ST_Crosses(r.the_geom,
(SELECT the_geom
FROM administrative
WHERE name ='Quan 5'))
AND (c.id='CPML')
AND (c.id=rc.coop_id);
name

Ben xe Cho Lon - Thao Cam Vien
Cho Lon - Cho Go Vap
(2 rows)
2.6. Sử dụng Quantum GIS để hiển thị dữ liệu không gian
2.6.1. Giới thiệu
Quantum GIS hay còn gọi là Qgis là phần mềm GIS mã nguồn mở với các tính
năng thao tác trên các lớp bản đồ chủ yếu dưới dạng vector.
Dự án Qgis được khởi đầu vào tháng 5 năm 2002. Ý tưởng được hình thành vào
tháng 2 năm đó khi Gary Sherman nỗ lực để tạo ra một phần mềm hiển thị các file dữ
liệu GIS chạy trên hệ điều hành mã nguồn mở Linux và phần mềm đã được xây dựng
trên cơ sở ngôn ngữ lập trình C++. Đến tháng 6 năm 2002, được đăng ký tại
SourceForge.

Giao diện chính của Quantum GIS
2.6.2. Tính năng của Quantum GIS
Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 10
Qgis có thể đọc được nhiều dạng dữ liệu: các lớp bản đồ tạo bởi ArcView,
MapInfo và GRASS, các bảng thông tin tạo bởi PostgreSQL (thông qua PostGIS).
Số hóa bản đồ và các công cụ kết nối với GPS.
Các tính năng biên tập bản đồ, tạo lưới kinh vĩ độ, chèn thang tỉ lệ, mũi tên chỉ
hướng bắc

Phân tích không gian nhờ PostGIS hoặc kết nối với GRASS GIS.
Thay đổi các tính năng thông qua cơ chế plug-in.
2.6.3. Các thao tác kết nối với cơ sở dữ liệu PostGIS
- Chọn Layer\ Add PostGIS Layer
- Tại cửa sổ Add PossGIS Table, chọn New để tạo kết nối mới, điền đầy đủ các
thông số vào và sau đó thực hiện kết nối.
Ví dụ:
Name: Ket noi voi PostGIS <tên phiên làm việc, tự đặt>
Host: localhost <địa chỉ lưu trữ CSDL để kết nối>
Database baitap <tên cơ sở dữ liệu>
Port 5432 <cổng để truy cập>
Username: postgres <tên người sử dụng>
Password: ********* <mật khẩu>

Kết nối với cơ sở dữ liệu postGIS



Bài tập lớn môn: Cơ sở dữ liệu không gian HVTH: Phạm Thế Hùng
Trang 11

- Sau đó chọn đối tượng không gian để hiện thị.
- Ta có thể thực hiện các câu truy vấn đơn giản khi hiển thị dữ liệu
- Quantum GIS hỗ trợ một số chức năng cơ bản của các phần mềm GIS: Zoom,
Pan, Phân loại đối tượng dựa trên thuộc tính,…

Hiển thị dữ liệu không gian

TÀI LIỆU THAM KHẢO
[1]. Đỗ Trung Tuấn (2004). Cơ sở dữ liệu. Nhà xuất bản Đại học quốc gia thành

phố Hồ Chí Minh, thành phố Hồ Chí Minh.
[2]. Ralf Hartmut Guting. Tutorial Spatial Database System. Germany.
[3]. PostGIS 1.3.5 Manual
[4] Quantum GIS Documentation Version 1.01
[5]. Website Bách khoa toàn thư:
[6]. Website SQL Tutorial:

×