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

XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++

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 (1.75 MB, 117 trang )

ĐẠI HỌC BÁCH KHOA TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
[\















Luận văn tốt nghiệp

XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ
HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D
DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI
TƯỢNG BẰNG NGÔN NGỮ C++



















Viên Vĩnh Mên
Nguyễn Đăng Lữ
Nguyễn Việt Hùng
Lý Thanh Xuân Huy
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
\[







Luận văn tốt nghiệp

XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ
HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D
DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI

TƯỢNG BẰNG NGÔN NGỮ C++




Luận văn này nộp để hoàn tất chương trình kỹ sư của
khoa Công Nghệ Thông Tin – Đại Học Bách Khoa Tp. Hồ Chí Minh



Hội đồng : Nguyễn Trung Trực.
Nguyễn Ngô Bảo Trân.
Trần Quang.
Nguyễn Hữu Hải.







SVTH : Lý Thanh Xuân Huy - 59800810
Nguyễn Việt Hùng - 59800770
Nguyễn Đăng Lữ - 59801124
Viên Vĩnh Mên - 59801161
GVHD : Nguyễn Hữu Hải.
GVPB : Nguyễn Ngô Bảo Trân.





⎯ Tháng 01/2003 ⎯
L
L


I
I


C
C
A
A
M
M


Đ
Đ
O
O
A
A
N
N


Chúngtôicamđoanrằng,ngoạitrừcáckếtquảthamkhảotừcáccôngtrình
khácnhưđãghirõtrongluậnvăn,cáccôngviệctrìnhbàytrongluậnvănnày

làdochínhchúngtôithựchiệnvàchưacóphầnnộidungnàocủaluậnvăn
nàyđượcnộpđểlấybằngcấpởtrườngnàyhoặc trườngkhác.

L
L


I
I


C
C


M
M


Ơ
Ơ
N
N


SauquátrìnhhọctậptạiTrườngĐạiHọcBáchKhoa,bằngsựnhiệttìnhgiảng
dạycủamình,quýthầycôđãtruyềnđạtchochúngtôinhữngkiếnthứcvô
cùngquýbáu.Trongkhoảngthờigianthựctậpcũngnhưtrongkhoảngthời
gianthựchiệnbảnluậnvănnàylàcơhộiđểchúngtôicóthểvậndụngnhững
kiếnthứcđóvàothựctếnhằmnângcaohiểubiếtcủamìnhvàlàhànhtrang

đểkhôngphảibỡngỡkhiratrường.Bảnluậnvănnàylàkếtquảcủanhững
kiếnthứcđó.
TrướchếtchúngtôixinchânthànhcảmơncácthầycôTrườngĐạiHọcBách
Khoađãtruyềnđạtchochúngtôinhữngkiếnthứcquýbáutrongnhữngnăm
học tập tại trường.Đặc biệt là thầy Nguyễn Hữu Hải, ngườiđã trực tiếp
hướngdẫnvànhiệttìnhgiúpđỡđểchúngtôihoànthànhbảnluậnvănnày.
Thứhai,chúngtôixinchânthànhcảmơngiađìnhvàbạnbè,nhữngngườiđã
hỗtrợvềmặtvậtchấtcũngnhưủnghộvềmặttinhthầnđểchúngtôihoàn
thànhbảnluậnvănnày.
Saucùng,chúngtôixinchúcquýthầycôcùnggiađình,bạnbèđượcdồidào
sứckhỏevàhoànthànhtốtcôngtáccủamình.
Tp.HồChíMinh,ngày09tháng01năm2003.
Nhómsinhviênthựchiện
LýThanhXuânHuy
NguyễnViệtHùng
NguyễnĐăngLữ
ViênVĩnhMên
T
T
Ó
Ó
M
M


T
T


T

T


Nộidungchínhcủađềtàilàxâydựngthưviệnvớiba chứcnăngchính:lưu
trữ–tínhtoán–trìnhdiễncácđốitượngđịahìnhdướidạnglướitamgiác
khôngđều (Triangulared IrrergularNetwork) gọi làThư viện Tínhtoán và
TrìnhdiễnLướitamgiáckhôngđều.
Thưviệnnàybaogồmbatầng:tầngcơsởdữliệu–databasemanipulation
layer (tầng DML) , tầng giải thuật – algorithms layer và tầng trình diễn –
presetationlayer.
TầngDMLcungcấpkhảnănglưutrữcácđốitượngkhônggiandựatrênnền
tảngcơsởdữliệuhướngđốitượngcủaODBMSVersant6.0.Cungcấptậpcác
hàmgiaotiếplậptrìnhứngdụng(API)chophéptruyxuấtđếncácđốitượng
này.
TầngALbaogồmcácthuậttoán,giảithuậtchomộtsốbàitoántrênđịahình
như:khoảngcáchtừhaiđiểmtrênbềmặt,khảnăngnhìnthấytừđiểmnày
đếnđiểm khác theođường thẳng hay theo cácđường gấp khúc…Các giải
thuậtnàycũngđượcđónggóithànhcáchàmAPIđưarachongườidùng.
TầngPLcungcấpkhảnăngvẽlướitamgiáclênmànhìnhdựavàocôngc ụ
OpenGL.Ngoàira,t ầngPLcòncungcấpkhảnăngtươngtáctrựctiếpvớicác
đốitượngkhônggianquagiaodiệnngườidùngđồhọa(GUI).

M
M


C
C



L
L


C
C



LỜI CAM ĐOAN
LỜI CẢM ƠN
TÓM TẮT
MỤC LỤC
DANH MỤC HÌNH
GIỚI THIỆU
CHƯƠNG 1 : PHẦN TÍCH ĐỀ TÀI 2
I. BỐI CẢNH CỦA ĐỀ TÀI 2
I.1. Bối cảnh 2
I.2. Mô tả sơ lược đề tài 3
II. MỤC TIÊU CỦA ĐỀ TÀI: 4
III. KIẾN TRÚC THƯ VIỆN 4
III.1. Tầng DML 5
III.2. Tầng AL 5
III.3. Tầng PL 5
III.4. Ưu điểm của cách hiện thực đa tầng: 5
III.5. Khuyết điểm của cách hiện thực đa tầng: 5
IV. LƯU TRỮ TIN 5
IV.1. Giới thiệu 5
IV.2. Lưu trữ TIN 6
IV.3. Giới thiệu về một số phép toán trên TIN: 8

IV.3.1. Tính diện tích TIN, thể tích TIN. 8
IV.3.2. Tính độ dốc của bề mặt. 8
IV.3.3. Xác định độ cao của một điểm khi biết tọa độ x và y của điểm đó. 8
IV.3.4. Xác định M(x
M
, y
M
, z
M
) có thuộc bề mặt TIN hay không? 9
IV.3.5. Từ một điểm C(x
C,
y
C,
z
C
) cho trước, hãy xác định phần bề mặt của TIN xung quanh điểm C trong vòng
bán kính R>0 theo phương ngang. 9

IV.3.6. Tính khoảng cách địa hình. 9
IV.3.7. Cắt TIN bằng mặt phẳng bất kỳ. 9
IV.3.8. Tính diện tích của mặt cắt. 9
IV.3.9. Tính khả kiến trên TIN. 10
IV.3.10. Chuyển đổi sang ma trận độ cao. 10
IV.3.11. Truy vấn dữ liệu trên TIN. 10
V. CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG – CHUẨN ODMG. 10
V.1. Chuẩn ODMG 10
V.1.1. Giới thiệu 10
V.1.2. Kiến trúc của ODBMS theo chuNn ODMG 11
V.2. So sánh giữa ODB và RDB 16

VI. KẾT QUẢ MON G ĐỢI TỪ ĐỀ TÀI. 17
VII. CÁC KIẾN THỨC VÀ KỸ THUẬT CHÍN H SỬ DỤN G TRON G ĐỀ TÀI. 17
CHƯƠNG 2 : TẦNG CƠ SỞ DỮ LIỆU DATABASE MANIPULATION LAYER 19
I. VERSAN T. 19
I.1. Versant và chuẩn ODMG. 19
I.2. CDSL đối tượng trong Versant. 19
I.2.1. Các bước xây dựng các lớp CSDL trên Versant. 20
I.2.2. Đối tượng trong Versant. 21
II. CÁC LỚP CỦA THƯ VIỆN GTIN . 21
II.1. Xây dựng ERD. 21
II.2. Hiện thực các lớp C++. 22
II.2.1. Lược đồ lớp. 22
II.2.2. Tính toàn vẹn dữ liệu trong CSDL của TIN . 23
II.2.3. Interface của các lớp persistent. 24
II.3. Tạo và nạp lược đồ CSDL. 26
III. HỆ TỌA ĐỘ ÁN H XẠ. 26
III.1. Tại sao có hệ tọa độ ánh xạ? 26
III.2. Các phép ánh xạ. 26
III.2.1. Các phép ánh xạ. 27
III.2.2. Công thức đổi tọa độ thực sang tọa độ ánh xạ và ngược lại. 27
III.3. Sử dụng các phép ánh xạ. 28
IV. TRUY VẤN CÁC ĐỐI TƯỢN G KHÔN G GIAN . 28
IV.1. Các loại câu truy vấn thường dùng trong dữ liệu không gian. 28
IV.2. Truy vấn trong Versant. 28
IV.3. Chỉ mục cho đối tượng đa chiều - họ cây R. 30
IV.3.1. Giới thiệu. 30
IV.3.2. Họ cây R-Tree. 30
IV.3.3. Chỉ mục trong cơ sở dữ liệu. 33
IV.3.4. Áp dụng cây G-Tree trong giải quyết các yêu cầu truy vấn. 34
V. SƠ KẾT TẦN G DML. 34

CHƯƠNG 3 : TẦNG THUẬT TOÁN – ALGORITHM LAYER 36
I. TẦN G THUẬT TOÁN . 36
I.1. Lớp coordinate. 36
I.2. Lớp CTinPlane. 36
I.3. Lớp Vector3D. 37
I.4. Lớp CTinQuery. 37
I.5. Lớp TinUtils. 38
II. MỘT SỐ THUẬT TOÁN TRÊN TIN . 38
II.1. Giao TIN với một mặt phẳng cho trước. 38
II.1.1. Phân tích bài toán: 38
II.1.2. Giải thuật: 38
II.2. Tính diện tích mặt cắt của TIN với mặt phẳng. 41
II.2.1. Phân tích yêu cầu: 41
II.3. Tính diện tích và thể tích TIN 45
II.3.1. Phân tích yêu cầu: 45
II.4. Tính độ dốc của bề mặt TIN. 46
II.5. Xác định độ cao của một điểm khi biết tọa độ x và y của điểm đó. 46
II.6. Xác định M(x
M
, y
M
, z
M
) có thuộc bề mặt TIN hay không? 47
II.7. Từ một điểm C(x
C,
y
C,
z
C

) cho trước, hãy xác định phần bề mặt của TIN xung quanh điểm C
trong vòng bán kính R>0 theo phương ngang. 47

II.8. Ma trận độ cao. 47
II.8.1. Phân tích yêu cầu: 47
II.8.2. Giải thuật: 48
II.8.3. Phục hồi TIN từ ma trận độ cao. 48
II.9. Tính khả kiến từ A đến B. 49
II.9.1. Phân tích giải thuật: 49
II.9.2. Giải thuật A nhìn B theo đường thẳng: 49
II.9.3. Giải thuật A nhìn B theo đường bất kỳ: 50
II.10. Khoảng cách giữa hai điểm trên Tin. 51
II.10.1. Phân tích yêu cầu: 51
II.10.2. Giải thuật: 51
II.11. Truy xuất dữ liệu TIN từ file 52
CHƯƠNG 4 : VẼ LƯỚI TAM GIÁC & TƯƠNG TÁC NGƯỜI DÙNG -TẦNG RESENTATION. 54
I. CÔN G CỤ VẼ. 54
II. VẼ LƯỚI TAM GIÁC. 54
II.1. Các hệ tọa độ trong lập trình đồ họa. 54
II.2. Vẽ Tin lên màn hình. 55
III. CÁC YÊU CẦU TƯƠN G TÁC VỚI N GƯỜI DÙN G. 56
III.1. Yêu cầu về tương tác với người dùng. 56
III.2. Quan sát các đối tượng không gian dưới các góc độ. 56
III.3. Chọn đối tượng 3D bằng mouse. 57
III.4. Kéo-thả (drag-and-drop) các đối tượng 3D. 59
III.5. Sơ kết. 59
IV. ĐIỀU KHIỂN WORLD3D. 60
IV.1. Tính năng. 60
IV.1.1. Tương tác người dùng. 60
IV.1.2. World3D là một điều khiển hoạt động độc lập và hoàn chỉnh. 60

IV.1.3. Khả năng hoạt động trên nhiều database. 61
IV.1.4. World3D là một kiến trúc mở. 61
IV.1.5. Undo buffer. 62
IV.2. Kiến trúc điều khiển World3D. 62
IV.2.1. Các đối tượng trong World3D 63
IV.2.2. Các bộ điều hợp. 64
IV.3. Xử lý biến cố trong World3D. 64
IV.3.1. Trình xử lý biến cố Mouse. 64
IV.3.2. Trình xử lý thông điệp WM_PAIN T. 67
CHƯƠNG 5 : ĐỐI TƯỢNG COM CỦA TẦNG DML VÀ AL. 68
I. GIỚI THIỆU VỀ COM : 68
II. KIẾN TRÚC CỦA COM : 69
II.1. COM Interfaces : 69
II.1.1. Interface Marshaling: 69
II.1.2. Các Interface cơ bản của COM : 70
II.1.3. COM Threading Model : 71
CHƯƠNG 6 : CHƯƠNG TRÌNH DEMO TÍNH THỂ TÍCH CẦN ĐÀO, ĐẮP CỦA ĐOẠN ĐƯỜNG 74
I. GIỚI THIỆU 74 U
I.1. Đặt vấn đề. 74
I.2. Mô tả ứng dụng 74
I.3. Mục tiêu 74
II. HIỆN THỰC ỨN G DỤN G 75
II.1. Các giải thuật để giải quyết 75
II.2. Xây dựng mặt đường từ trục AB và bề rộng delta 75
II.3. Cắt tam giác bằng 4 mặt phẳng của hình hộp bao con đường. 76
II.4. Tính thể tích đào, thể tích đắp, thể tích khoan. 76
II.5. Lưu trữ và truy xuất con đường bằng file 77
II.6. Kiến trúc ứng dụng 78
II.7. Nhập dữ liệu vào chương trình 79
II.8. Giao diện 80

III. CÁCH SỬ DỤN G 80
CHƯƠNG 7 : TỔNG KẾT VÀ ĐÁNH GIÁ ĐỀ TÀI 82
I. KẾT QUẢ ĐẠT ĐƯỢC 82
II. Ý N GHĨA THỰC TIỄN CỦA THƯ VIỆN 83
III. HƯỚN G MỞ RỘN G ĐỀ TÀI 83
TÀI LIỆU THAM KHẢO 84
PHỤ LỤC A: HƯỚNG DẪN SỬ DỤNG DML API. 85

D
D
A
A
N
N
H
H


M
M


C
C


H
H
Ì
Ì

N
N
H
H


Hình 1-1. Lưới đa giác đều. 3
Hình 1-2. Mô hình độ cao (DEM). 3
Hình 1-3. Vị trí của đề tài. 4
Hình 1-4. Kiến trúc thư viện. 4
Hình 1-5. Biểu diễn Lưới tam giác không đều (TIN ). 6
Hình 1-6. Quan hệ giữa các lớp đối tượng. 8
Hình 1-7. Giao tuyến đa giác. 9
Hình 1-8. Giao tuyến là polyline. 9
Hình 1-9. Mô hình ma trận độ cao. 10
Hình 1-10. Truyền thông điệp giữa các đối tượng. 12
Hình 1-11. So sánh giữa ODB và RDB. 16
Hình 2-1. Lược đồ các thực thể cơ bản của Tin. 22
Hình 2-2. Lược đồ lớp. 23
Hình 2-3. Sơ đồ Mapped Coordinate System. 27
Hình 2-4. Cấu trúc của X-Tree. 32
Hình 3-1. Trường hợp mp α cắt khối hộp bao tin tại 4 điểm A,B,C,D. 38
Hình 3-2. Hai trường hợp của mặt phẳng chính. 40
Hình 3-3. Xác định E và F. 40
Hình 3-4 Giao tuyến là một đa giác 41
Hình 3-5. Giao tuyến là một polylines 42
Hình 3-6. Diện tích tam giác ABC 42
Hình 3-7. Đa giác bậc n 43
Hình 3-8. Ma trận dộ cao. 47
Hình 3-9. Tinh toán độ cao cho ma trận độ cao 48

Hình 3-10. Phục hồi TIN từ ma trận độ cao 48
Hình 3-11. A nhìn thấy B theo đường thẳng. 49
Hình 3-12. Minimum Bounding Region. 50
Hình 3-13. Khoảng cách từ điểm đến đoạn. 50
Hình 3-14. Tính khả kiến theo theo nhiều đoạn thẳng. 51
Hình 3-15. Khoảng cách giữa A, B trên Tin. 51
Hình 4-1. Hệ tọa độ bàn tay trái và bàn tay phải. 55
Hình 4-2. Camera trong OpenGL. 57
Hình 4-3. Kiến trúc World3D. 62
Hình 4-4. Lưu đồxử l ý event MouseDown của World3D (a) và WorldObject (b). 65
Hình 4-5. Trình xử lý biến bố MouseDown của TWorldTin. 65
Hình 4-6. Lưu đồ xử lý event MouseMove (a) và MouseTimer (b). 66
Hình 4-7. Lưu đồ xử lý biến cố MouseMove cho WorldObject. 66
Hình 4-8. Lưu đồ xử lý biến cố WM_PAIN T. 67
Hình 5-1. Sơ đồ liên kết động đến COM Object. 68
Hình 5-2. Sơ đồ cấu trúc của IUnknown interface. 71
Hình 6-1. Đoạn đường qua hai điềm A, B. 74
Hình 6-2. Các tam giác được chọn để tính toán. 75
Hình 6-3.1 Kiến trúc ứng dụng 78
Hình 6-4 Cấu trúc dữ liệu lưu trữ con đường 79
Hình 6-5 Giao diện chương trình Road Computation 80




G
G
I
I



I
I


T
T
H
H
I
I


U
U


Trongxãhộithôngtin,thôngtinđịalýchi ếmmộtvaitròhếtsứcquantrọng.
Thựcvậy,khicung  cấpthôngtinvềmộtsựvật,sựviệc hayhiệntượnggì,
ngườitaluônphảiđềcậpđếnsựvật,sựviệchayhiệntượngnàydiễnraở
đâu,khinào.Đóchínhlàcácthôngtinđịalý(geographic information).
Thậtsựlàtừlâu,việcthuthậpvàxửlýcácthôngtinđịalýđãđượcchúýđến
màcơbảnnhấtlàngànhkhoahọcbảnđồ.Việcnghiêncứu,xâydựngracác
bảnđồđãgópphầnquantrọngtrongsựpháttriểnkinhtếcũngnhưtrongđời
sốngxãhội.Ngàynay,vấnđềxửlýcácthôngtinđịalýngàycàngpháttriển
trởthànhhệthốngthôngtinđịalý(GeographicInformationSystem–GIS).
GISđãvàđangđượcứngdụngngàymộtrộngrãitrongrất nhiềulĩnhvực.Từ
nhữngứngdụngtruyềnthốngvềbảnđồđịahình, tàinguyên,môitrường,
GISđãthâmnhậpvàocáclĩnhvựckhácliênquanđếnconngười,quyhoạch
vàquảnlýđôthị,quảnlýcơsởkỹthuậthạtầng,kinhtế,xãhội…

Vớinhữngứngdụngngàycàngrộngrãihệthốngthôngtinđịalýtrongcác
lĩnhvựckinhtế,xãhộ,từnăm1992,cácnhàkhoahọcHoaKỳđãxáclậpmột
ngànhkhoahọcmới,Khoahọcthôngtinđịalý–GIS(GeographicInformatin
Science).Đến nay,ngành khoa họcnàyđangtừng bước hoànthiệncác mô
hìnhbiểudiễncácđốitượngmộtcáchtrungthựchơn.Dođó,cácmôhìnhnày
khácvớicácmôhìnhcủangànhbảnđồhọc,mặcdùtronggiaiđoạnhiệnnay,
khoahọcthôngtinđịalývẫncònsửdụngphươngphápbảnđồđểxácđịnhvị
trícủacácđốitượng,cáchoạtđộng,cács ựkiệntrongkhônggian.
Banđầu,cácGISđượcxâydựngdựatrênmôhìnhhóacácđốitượngkhông
giantừthếgiớithựcsangmặtphẳnghaichiều(2D).Khoahọcthôngtinđịalý
2Dđãđượcnghiêncứutrongmộtthờigiankhálâuvàđãcórấtnhiềuứng
dụng dựa trênnền tảng2D. Cácứngdụng này ngày nay vẫn cònđượcsử
dụngrộngrãitrongthựctế.Tuynhiên,đểbiểudiễncácđốitượngkhônggian
bachiều(3D),ngườitađãdùngcáckýhiệu(màusắc,đườngđồngmức…)để
biểu diễn chiều không gian thứba củađốitượnglên mặt phẳng hai chiều.
Điều này làm phức tạp bảnđồbiểudiễn cácđốitượng. Mặt khác, phương
thứcbiểudiễnnàykhôngtạođượctínhtrựcquanđốivớingườidùng,rấtkhó
khăntrongviệcmôphỏngtrênmáytính.
Vớinhữngyêucầungàycàngtăngtrongxửlýthôngtinđịalýcộngvớimức
độpháttriểncủangànhđồhọamáytínhhiệnnaycóthểdễdàngbiểudiễn
cáchìnhảnhbachiều,khoahọcthôngtinđịalýbachiềuđãđượcpháttriểnđể
biểu diễn cácđốitượngmộtcáchtrung thực hơn.Do việc thể hiện cácđối
tượngkhô nggianmộtcáchtrungthựcvàtrựcquahơn,mặcdùrađờikhông
lâu,GIS3Dđãcókhánhiềuứngdụngtrongthựctếvàđangtừngbướcthay
thếGIS2Dtrongnhiềulĩnhvực.Đặcbiệtlàtronglĩnhvựcquảnlýtàinguyên,
môitrường,trongcácứngdụngmôphỏngvềđịahình…
Hiệnnay,ởnướcta,việctriểnkhaicácứngdụngGIS2Dkhôngcònlàmột
vấnđềmớimẽnữa.TuynhiênđốivớicácứngdụngGIS3Dthìthậtsựcònrất
ít.Mộttrongnhữngnguyênnhânđólàdosựthiếuthốnvềmặccôngcụhỗtrợ
GIS3D.Dođó,đểcóthểtheokịpsựpháttriểncủacôngnghệ,chúngtacần

phảixâydựngngaynềntảngcáccôngcụhỗtrợGIS3D,nhằmtừngbướcđưa
thaythếcácứngdụng2Dtrướcđây.
Từyêucầuđó,chúngtôiđãnhậnvànghiêncúuđềtàiXâydựngthưviệchỗ
trợchoviệclậptrìnhcácứngdụngGIS3DdựatrênmôhìnhLướitamgiác
khôngđều.Hivọngrằngkếtquảcủachúngtôicóthểlàmtiềnđềchocácđề
tàisaunghiêncứusâuhơnnữatrongviệcxâydựngcáccôngcụ,ứngdụng
GIS3Dvàotrongthựctiễn.
Trongphạmvithờigianhoàntấtbảnluậnánnày,chúngtôikhôngcóđiều
kiệnđểnghiêncứukỹlưỡnghơn,chonênkếtquảđạtđuợccònhạnchếvàcó
thểcónhiềusaisót.Rấtmongquýthầycôvàcácbạnbỏqua,đồngthờiđóng
gópýkiếnđểthưviệnngàycànghoànchỉnhhơn.
TP.HỗChíMinh,ngày09tháng01năm2003.
Nhómsinhviênthựchiện.














P
P
H

H
Â
Â
N
N


T
T
Í
Í
C
C
H
H


Đ
Đ




T
T
À
À
I
I



Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
CHƯƠNG 1 : PHẦN TÍCH ĐỀ TÀI
I. BỐI CẢNH CỦA ĐỀ TÀI
I.1. Bối cảnh
Hệ thống thông tin địa lý (Geographic Information System) là hệ thống thông tin dựa
trên cơ sở tính toán của máy tính. GIS ngày càng phát triển mạnh mẽ dựa trên nền tảng
sự tiến bộ không ngừng của khoa học máy tính, đồ họa máy tính, phân tích và quản lý
dữ liệu không gian…
GIS là một hệ thống được kiến trúc từ các thành phần cơ bản sau đây: phần cứng, phần
mềm, cơ sở dữ liệu và người dùng. Các thành phần này có quan hệ mật thiết với nhau,
tác động qua lại lẫn nhau. Trong đó, người dùng là nhân tố thực hiện các thao tác điều
hành sự hoạt động của hệ thống GIS. Các thông tin về sự vật hiện tượng từ thế giới
thực được đo đạc, số hóa bằng các thiết bị phần cứng. Các số liệu này được hệ thống
GIS mô hình thành các đối tượng dữ liệu và lưu xuống cơ sở dữ liệu để quản lý. Cơ sở
dữ liệu là thành phần trung tâm của hệ thống GIS. Phần mềm sẽ thao tác trên cơ sở dữ
liệu để tính toán, phân tích rồi xuất kết quả ra cho người dùng đánh giá và hỗ trợ người
dùng ra quyết định. N gười dùng sau đó sử dụng các kết quả này để tác động một cách
hợp lý lên thế giới thực nhằm đạt được mục tiêu đã đề ra. Việc tác động của caon
người lên thế giới thực làm phát sinh ra những thông tin mới cần được đưa vào cơ sở
dữ liệu cho GIS quản lý. Cứ như thế tạo thành một vòng tròn khép kín các mội quan
hệ giữa các thành phần trong hệ thống GIS.
GIS hỗ trợ con người trong việc thu thập dữ liệu, làm mô hình, thao tác, phục hồi,
phân tích và biểu diễn các dữ liệu địa lý. Từ đó, GIS trở thành công cụ hữu hiệu trong
công tác quản lý và hỗ trợ tích cực cho việc ra quyết định của con người.
Việc nghiên cứu GIS đã mở ra nhiều thách thức thú vị mới trong nhiều lĩnh vực như:
lĩnh vực địa lý, lĩnh vực nghiên cứu bản đồ, lĩnh vực dò tìm từ xa, lĩnh vực xử lý ảnh,
ngành khoa học môi trường và ngành khoa học máy tính…
Hiện nay, GIS thường được quản lý dưới dạng mô hình 2D trong khi các mô hình thế
giới thực là 3D. Để có thể biểu diễn được chiều thứ ba của địa hình người ta dùng các

ký hiệu như: màu sắc, các đường đồng mức, các chú thích bản đồ… Kết quả dẫn đến
là việc thể hiện địa hình lên trở nên phức tạp nhưng không thể biểu diễn được chi tiết
bề mặt các địa hình, không trực quan, gây khó khăn trong việc quản lý, phân tích và
đánh giá các đối tượng GIS. Các ứng dụng mô tả đối tượng trên 2D hiện không thể
đáp ứng với các yêu cầu ngày càng cao về các thông tin địa lý. Chính vì điều này đã
hạn chế nhiều khả năng của GIS trong việc phản ánh thế giới thực. Đồng thời, tạo ra
nhu cầu cần một thư viện hỗ trợ cho việc xây dựng các mô hình GIS 3D nhằm đáp ứng
cho nhiều bài toán thực tế. Xuất phát từ nhu cầu đó, tập luận văn này tập trung nghiên
cứu nhằm xây dựng một thư viện phần mềm để hỗ trợ hệ thống thông tin địa lý 3D dựa
trên cơ sở dữ liệu hướng đối tượng bằng ngôn ngữ C++.
Xuất phát từ mục tiêu chính của đề tài, người sử dụng chính của thư viện này là các
lập trình viên. Do đó về mặt tương tác với người dùng cuối (end-user) còn rất nhiều
hạn chế, nhất là việc kiểm tra tính hợp lệ của dữ liệu vào đôi khi đòi hỏi người dùng
phải có sự đảm bảo sự chính xác của các dữ liệu.
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 2
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
I.2. Mô tả sơ lược đề tài
Đối tượng không gian chính được quan tâm trong đề tài là địa hình. Địa hình thực tế là
một bề mặt bất kỳ, liên tục. Do đó để lưu trữ thông tin về địa hình, trước hết ta cần
phải số hóa các bề mặt này. Hiện tại có nhiều phương pháp để số hóa các thông tin địa
hình. Trong phạm vi đề tài, chúng tôi chỉ tập trung chủ yếu vào phương pháp lưới tam
giác không đều ( Triangulated Irregular N etwork – TIN ) và một phần nhỏ đến mô
hình độ cao ( Digital Elevation Model – DEM ).
Do địa hình là một mặt liên tục bất kỳ nên ta có thể phân tích một cách gần đúng bề
mặt này thành vô số các đa giác nhỏ nối kết nhau ( Tesselation ) ( cũng như việc xem
đường tròn là một đa giác đều có số cạnh rất lớn ). Do bề mặt là bất kỳ nên các đa giác
này khó có thể là các đa giác đều mà chúng là những đa giác bất kỳ có số cạnh khác
nhau. Việc lưu trữ và xử lý các đa giác này vô cùng phức tạp, do đó người ta chia các
đa giác bất kỳ này thành nhiều tam giác nối liền nhau. Ta hoàn toàn có thể xây dựng
được giải thuật phân tích một đa giác bất kỳ thành tập các tam giác không phủ lấp lên

nhau (giải thuật Delaunay, bản đồ Voronoi ). Vì vậy, để lưu trữ các bề mặt của địa
hình, ta ghép chúng thành một tập các tam giác không phủ lắp lên nhau vào liền kề
nhau. Tập các tam giác này tạo thành một lưới các tam giác nối liên tục nhau. Đó
chính là mô hình Lưới tam giác không đều – TIN được dùng để lưu trữ các bề mặt của
địa hình.

Hình 1-1. Lưới đa giác đều.
N goài ra, người ta còn lưu trữ địa hình dưới dạng mô hình độ cao hay còn gọi là ma
trận độ cao. Ta có thể hình dung ma trận độ cao như sau : đầu tiên ta chia bề mặt địa
hình thành nhiều ô nhỏ hình chữ nhật có kích thuớc đều nhau. Sau đó tại mỗi đỉnh của
hình chữ nhật này ta xác định độ cao của của địa hình theo một cột mốc đã chọn. Ta
lưu các giá trị này thành một ma trận hai chiều, gọi là ma trận độ cao của địa hình.

Hình 1-2. Mô hình độ cao (DEM).

Tuy nhiên, như đã trình bày ở trên, vị trí của thư viện là xử lý trên các dữ liệu đã được
thu thập từ các nguồn dưới dạng mạng lưới các tam giác không đều. Do đó ta chỉ cần
lưu trữ lưới các tam giác này.
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 3
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
N hư vậy, vị trí của đề tài luận văn này được thể hiện trên hình sau:

Hình 1-3. Vị trí của đề tài.
II. MỤC TIÊU CỦA ĐỀ TÀI:
Biểu diễn bề mặt địa hình bằng lưới tam giác không đều (TIN )
Lưu trữ TIN trên cơ sở dữ liệu hướng đối tượng.
Thực hiện các phép toán cơ bản trên TIN .
Tạo thư viện GTIN hỗ trợ trực quan cho người dùng.
Tạo một ứng dụng Demo.
III. KIẾN TRÚC THƯ VIỆN

Kiến trúc của thư viện GTIN được biểu diễn bằng hình:


Hình 1-4. Kiến trúc thư viện.

Thư viện GTIN hỗ trợ việc lưu trữ các đối tượng GIS 3D dưới dạng lưới tam giác
không đều, đồng thời cung cấp các phép toán cần thiết để thao tác trên lưới tam giác
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 4
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
không đều này. Thư viện GTIN được phát triển dựa trên hệ cơ sở dữ liệu ODBMS
Versant.
Về mặt kiến trúc tổng quát, thư viện GTIN bao gồm 3 tầng độc lập nhau: tầng DML
(Database Manipulation Layer), tầng AL (Algorithm Layer) và tầng PL (Presentation
Layer).

III.1. Tầng DML
Tầng DML có nhiệm vụ quản lý cơ sở dữ liệu. Tầng DML bao gồm: các lớp lược đồ
cơ sở dữ liệu (Database Schema Classes). Các lớp lược đồ cơ sở dữ liệu là các lớp
được kế thừa từ các lớp chuNn của ODBMS Versant (PObject, PVirtual…). Do đó, để
biên dịch tầng DML thì trình biên dịch phải được Versant hỗ trợ (Visual C++, Java).
Tầng DML cung cấp giao diện ra ngoài thông qua các hàm Database Manipulation
APIs. Các tầng bên trên sẽ sử dụng các hàm Database Manipulation APIs này để truy
xuất cơ sở dữ liệu.
III.2. Tầng AL
Tầng AL có nhiệm vụ hiện thực các giải thuật, tính toán trên TIN . Các lớp ở tầng AL
này đã tách biệt độc lập với thư viện hỗ trợ lập trình của Versant. Do đó, chúng ta có
thể hiện thực tầng AL bằng các ngôn ngữ lập trình khác nhau (C++ Builder, Visual
C++, C#). N ghĩa là trong quá trình biên dịch tầng AL, các file header của Versant
không bị buộc phải có.
Tầng AL sử dụng các hàm Database Manipulation APIs do tầng DML cung cấp để

truy xuất cơ sở dữ liệu nhằm phục vụ cho hiện thực giải thuật. Tầng AL cung cấp giao
diện ra ngoài thông qua các hàm Computation APIs.
III.3. Tầng PL
Tầng PL có nhiệm vụ hiển thị TIN dùng để mô phỏng các phép toán cơ bản, cho phép
người dùng thao tác trực quan trên TIN như thao tác bằng chuột, kéo, xoay camera,
phóng đại…
III.4. Ưu điểm của cách hiện thực đa tầng:
Thể hiện tính độc lập cao giữa các tầng.
Thể hiện tính uyển chuyển trong việc chọn lựa ngôn ngữ lập trình để hiện thực.
Tăng tính thân thiện đối với người sử dụng.
Là tiền đề để xây dựng một thư viện hỗ trợ cho nhiều ngôn ngữ.
III.5. Khuyết điểm của cách hiện thực đa tầng:
Có sự trùng lắp giữa các tầng.
Do phải qua nhiều tầng nên thời gian xử lý sẽ tăng, làm chương trình thực thi chậm
hơn.
IV. LƯU TRỮ TIN
IV.1. Giới thiệu
TIN được dùng để biểu diễn một bề mặt từ một tập các điểm rời rạc. Từ tập các điểm
rời rạc này chúng ta sẽ kết hợp chúng lại thành các tam giác không trùng lắp với nhau.
Do tính chất của các tam giác không đều mà TIN có thể biểu diễn một bề mặt bất kỳ,
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 5
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
với độ phân giải bất kỳ. Điều này đặc biệt có ích để biểu diễn bề mặt của Trái đất. Bản
thân TIN có khả năng biểu diễn bề mặt bằng tam giác không đều và không theo thứ tự.


Hình 1-5. Biểu diễn Lưới tam giác không đều (TIN).
IV.2. Lưu trữ TIN
N hìn chung, có thể lưu trữ TIN theo nhiều cách khá nhau như: dựa trên cơ sở tam giác
(triangle_based), dựa trên cơ sở đỉnh (node_based), dựa trên cơ sở cạnh (side_based)

hoặc kết hợp các cách trên.
Đối với bài toán liên quan đến đường đồng mức (conturing) thì cách lưu trữ dựa trên
cơ sở cạnh thích hợp hơn.
Đối với bài toán liên quan đến tính độ dốc (slope), thể tích thì cách lưu trữ dựa trên
tam giác tỏ ra thích hợp hơn.
Thật sự rất khó để có thể có cách lưu trữ TIN nào thích hợp cho mọi ứng dụng. Trong
những trường hợp cụ thể chúng ta cần có những thủ tục để có thể chuyển đổi từ cấu
trúc lưu trữ này sang cấu trúc cách lưu trữ khác.
Có thể lưu trữ TIN theo 2 phương án sau:
1. Lưu trữ các tam giác kề nhau: một tam giác gồm 3 cạnh của nó (mỗi cạnh gồm
2 đỉnh không trùng nhau) và các tham khảo đến các tam giác kề của nó. Ưu
điểm của phương án này là có thể truy xuất nhanh được các tam giác kề, dễ
dàng lan nhanh theo các tam giác xung quanh. Khuyết điểm của phương án này
là phải lưu nhiều lần các tam giác kề. N ghĩa là một tam giác có nhiều tam giác
kề, nó tham khảo đến các tam giác xung quanh và các tam giác xung quanh
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 6
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
cũng có tham khảo đến nó. Mặt khác, mỗi tam giác có số lượng các tam giác
kề khác nhau, điều này gây khó khăn cho việc lưu trữ.
2. Lưu trữ tập đỉnh và tập tam giác: mỗi đỉnh tham khảo đến các tam giác chứa
nó. N gược lại mỗi tam giác sẽ có 3 tham khảo đến 3 đỉnh của nó. Ưu điểm của
phương án này là tính tự nhiên, dễ dàng quản lý.
Trong luận văn này, chúng ta chọn cách lưu trữ thứ hai.

Tam giác Các tham khảo đến đỉnh
A 1 7 8
B 1 5 7
C 1 2 5
… … … …
G 5 7 10

H 5 6 10
… … … …
R 10 11 15
S 12 14 15
Bảng 1-1. Các tam giác trong TIN.
Đỉnh Các tham khảo đến tam giác
1 A, B, C
2 C, D
3 D, E, F
… …
5 B, C, D, E, G, H
6 E, F, I, H, L
7 A, B, G, J, K
… …
15 Q, R, S
Bảng 1-2. Các đỉnh trong TIN.
Lược đồ quan hệ giữa các lớp:
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 7
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.

Hình 1-6. Quan hệ giữa các lớp đối tượng.
CTinObject là lớp kế thừa từ lớp PVirtual chuNn của Versant. CTinObject là lớp gốc
của các lớp thường trú (được lưu xuống cơ sở dữ liệu): CTin, CTinTriangle,
CTinVertex.
Một TIN bao gồm một tập các đỉnh và một tập các tam giác không trùng lắp lên nhau.
Một đỉnh chỉ thuộc vào 1 TIN duy nhất, tuy nhiên đỉnh đó có thể thuộc về nhiều tam
giác khác nhau.
Một tam giác chỉ thuộc về 1 TIN duy nhất, đồng thời tam giác đó cũng bao gồm 3 đỉnh
của nó.
Mặt khác, để biểu diễn bề mặt địa hình thì đỉnh và tam giác ngoài các thuộc tính tọa độ

và các mối quan hệ cũng cần có thêm các thuộc tính khác như: màu sắc, màu tô…
IV.3. Giới thiệu về một số phép toán trên TIN:
IV.3.1. Tính diện tích TIN, thể tích TIN.
Diện tích của TIN được dùng để tính diện tích bề mặt địa hình. Diện tích của TIN
được xác định bằng tổng diện tích của các tam giác của TIN .
Thể tích của TIN là thể tích của khối được xác định bởi: bề mặt TIN và mặt phẳng
ngang đi qua điểm thấp nhất của TIN .
IV.3.2. Tính độ dốc của bề mặt.
Độ dốc của một mặt tam giác là góc tạo bởi tam giác đó và mặt phẳng ngang.
Độ dốc của một vùng là độ dốc trung bình của các tam giác trong vùng đó.
Bài toán tính độ dốc chỉ có ý nghĩa khi bề mặt địa hình được tạo bởi các tam giác có
cùng tính chất: pháp vector cùng hướng về một phía.
IV.3.3. Xác định độ cao của một điểm khi biết tọa độ x và y của điểm đó.
Khi đã biết được vị trí 2D của một vị trí trên TIN , chúng ta cần xác định vị trí đó ở độ
cao bao nhiêu. Đồng thời xác định điểm đó thuộc tam giác nào của TIN . Bài toán này
có nghĩa khi chúng ta cần chuyển TIN sang ma trận độ cao.
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 8
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
Từ ma trận độ cao đã có chúng ta có thể chuyển ngược lại thành một TIN . Do ma trận
độ cao đã rời rạc hóa TIN ban đầu nên TIN kết quả có thể không giống như TIN ban
đầu mà nó chỉ gần giống như TIN ban đầu.
IV.3.4. Xác định M(x
M
, y
M
, z
M
) có thuộc bề mặt TIN hay không?
Bài toán này có nghĩa để kiểm tra tính chính xác của dữ liệu. N ếu M không thuộc bề
mặt TIN thì có thể dùng bài toán xác định độ cao của một điểm để hiệu chỉnh lại tọa

độ của M nhằm thỏa mãn yêu cầu.
IV.3.5. Từ một điểm C(x
C,
y
C,
z
C
) cho trước, hãy xác định phần bề mặt của TIN
xung quanh điểm C trong vòng bán kính R>0 theo phương ngang.
Phương trình hình trụ tròn bán kính R có trục đi qua điểm C là:

()()
2
22
Ryyxx
CC
=−+−
N hững điểm trên TIN thỏa mãn bài toán là những điểm nằm bên trong hình trụ tròn
này.
IV.3.6. Tính khoảng cách địa hình.
Cho 2 điểm bất kỳ A và B trên TIN , tính quãng đường đi từ A đến B. N ghĩa là, đi từ A
đến B theo bề mặt địa hình được biểu diễn bằng TIN .
IV.3.7. Cắt TIN bằng mặt phẳng bất kỳ.
Một mặt phẳng Alpha bất kỳ có phương trình Ax + By + Cz +D = 0 cắt TIN .
IV.3.8. Tính diện tích của mặt cắt.
Khi cắt TIN bằng mặt phẳng Alpha bất kỳ chúng ta thu được một danh sách các cạnh
giao tuyến.
N ếu các cạnh giao tuyến này tạo thành một đa giác (polygon) thì tính diện tích của đa
giác này.


Hình 1-7. Giao tuyến đa giác.
N ếu các cạnh giao tuyến này là một chuỗi các cạnh liên tục thì tạo một đa giác bằng
cách nối hai đầu mút của chuỗi bởi cạnh ngang thấp nhất của TIN .

Hình 1-8. Giao tuyến là polyline.
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 9
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
IV.3.9. Tính khả kiến trên TIN.
Cho 2 điểm bất kỳ A và B trong không gian, cần xác định A và B có nhìn thấy nhau
(khả kiến) theo đường thẳng hay không?
Cho 2 điểm bất kỳ A và B trong không gian, cần xác định A và B có nhìn thấy nhau
(khả kiến) theo đường cong bất kỳ hay không?
Cho một điểm S(x
S,
y
S,
z
S
) bất kỳ trong không gian, hãy tìm những đỉnh trên TIN trong
một region cho trước mà S có thể nhìn thấy.
IV.3.10. Chuyển đổi sang ma trận độ cao.
Ma trận độ cao là một cách biểu diễn khác cho bề mặt địa hình. Trên thực tế, có rất
nhiều ứng dụng sử dụng ma trận độ cao để biểu diễn địa hình. Do đó, để những ứng
dụng này có thể xử lý được các dữ liệu trên TIN thì chúng ta cần một phép chuyển đổi
phù hợp.

Hình 1-9. Mô hình ma trận độ cao.
IV.3.11. Truy vấn dữ liệu trên TIN.
Truy vấn tập điểm, tam giác trong một vùng hộp cho trước.
Truy vấn tập tam giác từ tập điểm cho trước.

Truy vấn điểm, tam giác theo một điều kiện biết trước.
Tạo chỉ mục cho dữ liệu không gian 3 chiều.
V. CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG – CHUẨN ODMG.
V.1. Chuẩn ODMG
V.1.1. Giới thiệu
Mô hình dữ liệu là một tổ chức luận lý của các thực thể (entity) của một hệ thống, các
ràng buộc (contraint) lẫn nhau giữa các thực thể này và các mối quan hệ giữa chúng.
Mô hình dữ liệu cung cấp một nền tảng lý thuyết để biểu diễn và xử lý dữ liệu. Cơ sở
dữ liệu là một tập các dữ liệu kết dính và có tổ chức chặt chẽ. Cơ sở dữ liệu được xây
dựng dựa trên một mô hình dữ liệu luận lý.
Các mô hình cơ sở dữ liệu cổ điển như mô hình mạng, mô hình phân cấp, mô hình
quan hệ đã được đầu tư và phát triển lâu đời bởi vì mối quan tâm hàng đầu của các nhà
thiết kế ứng dụng là nhằm vào các ứng dụng xử lý dữ liệu trong kinh doanh như: kiểm
kê hàng hóa, bảng tính lương, kế toán, thuế… N hu cầu cần thiết để biểu diễn các loại
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 10
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
dữ liệu phức tạp như: CAD, CAE, CASE, CAM, hệ tri thức cơ bản và hệ đa phương
tiện (multimedia) cho thấy sự hạn chế, không tương xứng của các mô hình dữ liệu cổ
điển này. Một số điểm hạn chế thể hiện ở chỗ các mô hình cổ điển không cho phép các
cấu trúc lồng nhau của các thiết kế phức hợp, tính nhất quán ngữ nghĩa không được
ràng buộc chặt chẽ, không biểu diễn được các phiên bản (version) khác nhau của cơ sở
dữ liệu, không đóng gói được việc khai báo dữ liệu và thủ tục xử lý làm một thành
phần đơn vị mà dữ liệu và các thủ tục xử lý là hai phần tách rời nhau.
Mô hình cơ sở dữ liệu hướng đối tượng được xây dựng để giải quyết các hạn chế của
các mô hình cơ sở dữ liệu cổ điển. Sự kết hợp giữa công nghệ cơ sở dữ liệu có sẵn
cùng với các khái niệm hướng đối tượng mở ra khả năng mô hình hóa dữ liệu và ràng
buộc chặt chẽ tính nhất quán ngữ nghĩa đối với các dữ liệu hỗn hợp phức tạp. Hơn
nữa, với sự phát triển mạnh mẽ của các ngôn ngữ lập trình hướng đối tượng đã tạo môi
trường tốt để nhiều hệ cơ sở dữ liệu hướng đối tượng đã được nghiên cứu và xuất hiện
trên thị trường như: Itasca (Orion), Gemstone, Iris, O2, Encore… Bên cạnh đó, nhóm

quản trị cơ sở dữ liệu đối tượng (Object Database Management Group) đề nghị một
chuNn cơ sở dữ liệu đối tượng ODMG-93 đặc tả các giao diện chung của cơ sở dữ liệu
hướng đối tượng và nhanh chóng trở thành chuNn của công nghiệp cơ sở dữ liệu hướng
đối tượng. ODMG là một hệ quản trị cơ sở dữ liệu chuNn được nhiều nhà sản xuất sử
dụng để hỗ trợ cho người dùng. Do đó, các hệ quản trị cơ sở dữ liệu xây dựng dựa trên
chuNn ODMG có thể dễ dàng tương tác với nhau thông qua OMG Object Request
Broker (ORB) – là một giao diện cho phép xây dựng các hệ client-server hướng đối
tượng. ODMG định nghĩa các thuật ngữ, các nghi thức giao tiếp chung giữa các hệ cơ
sở dữ liệu và cung cấp các đặc tả cơ bản hỗ trợ cho các hệ quản trị cơ sở dữ liệu khả
năng chia xẻ dữ liệu, tính khả chuyển (portable) và một số phép truy vấn cơ bản.
Bản luận văn này sẽ giới thiệu sơ lược về hệ quản trị cơ sở dữ liệu hướng đối tượng
ODMG 2.0 và hệ quản trị cơ sở dữ liệu hướng đối tượng Versant, một hệ quản trị cơ
sở dữ liệu hướng đối tượng phát triển dựa trên chuNn ODMG.
V.1.2. Kiến trúc của ODBMS theo chuẩn ODMG
a. Mô hình đối tượng (Object Model)
Trong cơ sở dữ liệu hướng đối tượng, thành phần cơ bản nhất là đối tượng (Object) và
hằng ký tự (Literal). Trong đó, mỗi đối tượng có một định danh (Identifier) duy nhất.
Hằng ký tự không có định danh.
Các đối tượng và các hằng ký tự được phân loại thành các kiểu (Type) khác nhau.
N ghĩa là mỗi đối tượng hay mỗi hằng ký tự sẽ thuộc về một kiểu. Một đối tượng là
một thực thể (instance) của kiểu của nó. Mọi thực thể của cùng một kiểu sẽ có cùng
một tập các đặc tính (property) và các hành vi (behavior).
Trạng thái (state) của một đối tượng được xác định bởi tập các giá trị đặc tính của nó.
Các đặc tính có thể là các thuộc tính (attribute) hoặc các mối quan hệ (relationship)
của bản thân đối tượng với các đối tuợng khác. Trạng thái của đối tuợng có thể thay
đổi trong quá trình sống của nó.
Hành vi của đối tượng được định nghĩa là các tác vụ (operation) có thể được thực hiện
trên đối tượng hoặc bởi đối tượng khi nó nhận được thông điệp (message) từ đối tượng
khác.Tùy theo trạng thái của mình mà đáp ứng của đối tượng đối với một thông điệp
có thể khác nhau ở các thời điểm khác nhau. Mỗi tác vụ được xác định bằng chữ ký

(signature) của nó. Một signature gồm danh sách thông số vào, danh sách thông số ra
và kiểu trả về.
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 11
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.

Hình 1-10. Truyền thông điệp giữa các đối tượng.
Cơ sở dữ liệu dựa trên lược đồ cơ sở dữ liệu (Database Schema) đuợc định nghĩa bằng
ODL (Object Definition Language) để lưu trữ các đối tượng của các kiểu dữ liệu và
cho phép các ứng dụng truy xuất các đối tượng này. Mô hình đối tượng của ứng dụng
chính là lược đồ cơ sở dữ liệu.
N hững người phát triển ứng dụng sử dụng các thành phần cơ bản của mô hình dữ liệu
ODMG để xây dựng mô hình đối tượng cho ứng dụng của mình.
b. Cách đặc tả trên ODMG
Dựa trên mô hình đối tượng được giới thiệu ở trên, ODMG định nghĩa các khái niệm:
kiểu, đối tượng, literal, đặc tính, thuộc tính, tác vụ, mối quan hệ.
Kiểu: Một kiểu bao gồm một đặc tả (specification) bên ngoài và một hoặc nhiều cách
hiện thực (implementation) bên trong. Phần đặc tả định nghĩa những đặc trưng chung
bên ngoài của kiểu, định nghĩa giao diện (interface) cho kiểu. N gười dùng có thể thấy
được những đặc tả này. Phần hiện thực bao gồm một số dữ liệu biểu diễn và tập các
phương thức cho phép đọc, hiệu chỉnh các giá trị của tập dữ liệu biểu diễn. Một kiểu
có thể có nhiều phần hiện thực.
Quy mô (extent) của một kiểu là tập các đối tượng của kiểu đó trong một cơ sở dữ liệu
riêng biệt nào đó. N ếu một đối tượng là một thực thể của kiểu A thì nó là một thành
viên của extent A. N ếu kiểu A là con của kiểu B thì extent A là con của extent B.
Extent có nhiệm vụ quản lý việc thêm hay xóa đối tượng của một kiểu.
Khóa là các đặc tính của đối tượng xác định duy nhất đối tượng. Khóa dùng để phân
biệt giữa các đối tượng.
Đối tượng là một thực thể của một kiểu. Mỗi đối tượng có một định danh (identifier)
duy nhất, giá trị của identifier không bao giờ thay đổi. Mỗi đối tượng có một hoặc
nhiều tên và có một thời gian sống xác định. Thời gian sống của đối tượng xác định bộ

nhớ sử dụng của đối tượng là thường trú (persistent) hay tạm trú (transient).
c. Mô hình trạng thái và đặc tính.
Một kiểu định nghĩa một tập các thuộc tính mà người dùng có thể truy xuất. Có hai
loại đặc tính được định nghĩa trong mô hình đối tượng ODMG là: thuộc tính và mối
quan hệ giữa các đối tượng.
d. Mô hình hành vi và tác vụ.
Hành vi của một kiểu đối tượng được đặc tả bằng các tác vụ mà đối tượng thuộc kiểu
đó thực hiện khi nhận một thông điệp từ một đối tượng khác.
Mỗi tác vụ được phân biệt bằng chữ ký của nó. Chữ ký của một tác vụ bao gồm: tên
tác vụ, tên và kiểu của mỗi thông số, kiểu của giá trị trả về, tên của các xử lý lỗi cho
tác vụ.
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 12
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
Giống như trong các ngôn ngữ lập trình hướng đối tượng, chuNn ODMG cho phép quá
tải (Overload) các tác vụ. Các tác vụ có thể không có giá trị trả về (trả về kiểu void).
e. Mô hình xử lý lỗi
ChuNn ODMG cung cấp việc xử lý lỗi lồng nhau. Các tác vụ có thể ném (throw, raise)
các lỗi ra ngoài khi nó gặp sự cố. Bản thân các xử lý lỗi cũng là các đối tượng. Chúng
cũng có giao diện cho phép chúng ta thao tác. Cách thức xử lý lỗi như sau:
Lập trình viên khai báo một xử lý lỗi trong tầm vực S có thể xử lý cho kiểu lỗi T.
Một tác vụ trong tầm vực S có thể ném ra ngoài một lỗi kiểu T.
Lỗi đó sẽ được bắt (catch) bởi tầm vực gần nhất chứa xử lý lỗi này.
Khi xử lý lỗi đã bắt được lỗi, nó sẽ xử lý sự cố do lỗi này sinh ra nếu có thể. N gược lại
nó sẽ ném tiếp một lỗi khác ra ngoài cho một xử lý lỗi khác bắt.
Một xử lý lỗi được khai báo để xử lý cho các lỗi kiểu T thì nó cũng có thể xử lý các lỗi
có kiểu là con của kiểu T. N ếu muốn xử lý chi tiết hơn cho các kiểu con của T thì lập
trình viên phải khai báo xử lý lỗi bên trong tầm vực của kiểu con này.
f. Ngôn ngữ định nghĩa đối tượng (Object Definition Language)
OSL (Object Specification Language) dùng để định nghĩa lược đồ (schema) lớp, các
tác vụ (operation) và các trạng thái của một đối tượng cơ sở dữ liệu. Mục đích chính

của OSL là dùng để đáp ứng yêu cầu tăng tính khả chuyển (portability) của cơ sở dữ
liệu theo yêu cầu hiện thực của ODMG. Một trong những OSL phỗ biến là ODL
(Object Definition Language). ODL là một ngôn ngữ đặc tả được dùng để định nghĩa
các đặc tả của kiểu đối tượng một cách phù hợp với mô hình đối tượng của ODMG.
• ODL hỗ trợ tính khả chuyển của lược đồ cơ sở dữ liệu.
• ODL hỗ trợ mọi cấu trúc ngữ nghĩa của mô hình đối tượng ODMG.
• ODL là ngôn ngữ dùng để định nghĩa, đặc tả đối tượng dữ liệu. ODL không
phải là ngôn ngữ lập trình.
• ODL độc lập với ngôn ngữ lập trình.
• ODL có tính mở rộng, vừa mở rộng các chức năng vừa có thể tối ưu trong
tương lai.
Để hiểu rõ hơn về ODL, tham khảo ODMG 2.0
g. Ngôn ngữ truy vấn đối tượng (Object Query Language)
OQL dựa trên mô hình đối tượng của ODMG.
OQL khá gần gũi với SQL 92. Trong đó có mở rộng thêm một số khái niệm hướng đối
tượng.
OQL không hỗ trợ việc tính toán. OQL chỉ đơn giản là một ngôn ngữ truy vấn cung
cấp các tiện ích cơ bản để truy xuất đến một ODBMS.
OQL có thể được kích hoạt từ bên trong ngôn ngữ lập trình tương thích với ODMG, ví
dụ như: C++, Java, SmallTalk. N gược lại OQL cũng có thể kích hoạt các tác vụ được
lập trình bằng các ngôn ngữ lập trình này.
h. Phần liên kết với ngôn ngữ C++ (C++ Language Binding)
Phần liên kết với ngôn ngữ C++ sẽ ánh xạ mô hình đối tượng vào trong các lớp đối
tượng trong ngôn ngữ C++ bằng cách đưa ra khái niệm lớp mà các đối tượng của lớp
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 13
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải.
đó vừa có thể là đối tượng thường trú (persistent) vừa có thể là đối tượng tạm trú
(transient) được gọi là các lớp có khả năng thường trú (persistence capable classes).
Lớp các đối tuợng tạm trú là các đối tượng (instance) của nó chỉ tồn tại trong quá trình
(process) đã tạo ra nó. Các đối tượng thuộc lớp tạm trú không được lưu xuống cơ sở

dữ liệu.
Các đối tượng thường trú là các đối tượng được lưu xuống cơ sở dữ liệu. N ghĩa là
chúng tồn tại ngay cả khi quá trình tạo ra nó đã kết thúc. Giải pháp để thực hiện điều
này là cung cấp một kiểu con trỏ thông minh hoặc một tham khảo thông minh. Đó là
lý do để định nghĩa lớp phụ trợ d_Ref<T>.
Ví dụ: những đối tượng thường trú được khai báo như sau:
d_Ref<CTinVertex> vertex;
d_Ref <CTinTriangle> triangle;
vertex->Draw( );
triangle->Intersect(plane);
N hững lớp đối tượng của lớp có khả năng thường trú có thể bao gồm những đối tượng
nhúng như: đối tượng được xây dựng sẵn của C++, đối tượng do người dùng định
nghĩa, con trỏ đến các đối tượng dữ liệu thường trú.
Sự tương quan giữa mô hình đối tượng ODMG và mô hình đối tượng của ngôn
ngữ C++
Mô hình dữ liệu của ngôn ngữ C++ rất gần gũi với mô hình đối tượng ODMG.
Một kiểu đối tuợng của ODMG được ánh xạ tương ứng với một lớp của C++. Tùy
theo cách khởi tạo của các lớp C++ mà kết quả có thể là một đối tuợng ODMG hay
hằng ký tự ODMG.
Kiểu cấu trúc trong mô hình đối tượng ODMG được ánh xạ tương ứng với kiểu struct
trong ngôn ngữ C++.
N gôn ngữ C++ chia việc định nghĩa một lớp đối tượng thành hai phần: phần giao diện
(public) và phần hiện thực bên trong (private, protected).
Các lớp tập hợp trong mô hình đối tượng ODMG tương ứng với các lớp đối tượng có
template trong ngôn ngữ C++.
template<T>
class d_set: public d_Colection<T>
{

}

Mối quan hệ được định nghĩa trong mô hình đối tượng ODMG nhưng không được hỗ
trợ trực tiếp trong ngôn ngữ C++. Trong ngôn ngữ C++ mối quan hệ được định nghĩa
là những tham khảo giữa các đối tượng. N ếu A có quan hệ 1-1 với B thì trong một đối
tượng kiểu A chứa một tham khảo đến một đối tượng kiểu B. N ếu A có mối quan hệ 1-
N với B thì trong một đối tượng kiểu A có chứa N tham khảo đến N đối tượng kiểu B.
Ví dụ: trong một đỉnh có một tham khảo đến một TIN . Trong một đỉnh có N tham
khảo đến N tam giác.
N gôn ngữ C++ không hỗ trợ việc khai báo khóa (key) cho kiếu đối tượng.
Một đối tượng có thể có nhiều tên khác nhau.
C++ ODL là một thư viện cung cấp các khái niệm hiện thực tác vụ, lớp đối tượng theo
mô hình đối tượng ODMG. C++ ODL dùng để mô tả lược đồ cơ sở dữ liệu cho các lớp
đối tượng: mô tả thuộc tính, mối quan hệ, tác vụ…
Thư viện Tính toán và Trình diễn Lưới tam giác không đều Trang 14

×