TR(cid:1132)(cid:1248)NG (cid:264)(cid:1188)I H(cid:1232)C KHOA H(cid:1232)C T(cid:1268) NHIÊN
KHOA CÔNG NGH(cid:1226) THÔNG TIN
(cid:37)(cid:1244) MÔN CÔNG NGH(cid:1226) PH(cid:1194)N M(cid:1220)M
e&f
NGUY(cid:1224)N TH(cid:1230) LÝ - NGUY(cid:1224)N SAO K(cid:483)
(cid:1260)NG D(cid:1256)NG PH(cid:1194)N M(cid:1220)M MÃ NGU(cid:1238)N M(cid:1250) H(cid:1226) QU(cid:1190)N
TR(cid:1230) C(cid:1130) S(cid:1250) D(cid:1266) LI(cid:1226)U H(cid:1132)(cid:1246)NG (cid:264)(cid:1236)I T(cid:1132)(cid:1254)NG PERST
XÂY D(cid:1268)NG (cid:1260)NG D(cid:1256)NG QU(cid:1190)N LÝ H(cid:1226) TH(cid:1236)NG
THÔNG TIN (cid:264)(cid:1230)A LÝ THÀNH PH(cid:1236) HCM
KHÓA LU(cid:1200)N C(cid:1264) NHÂN TIN H(cid:1232)C
TpHCM, 2005
TR(cid:1132)(cid:1248)NG (cid:264)(cid:1188)I H(cid:1232)C KHOA H(cid:1232)C T(cid:1268) NHIÊN KHOA CÔNG NGH(cid:1226) THÔNG TIN (cid:37)(cid:1244) MÔN CÔNG NGH(cid:1226) PH(cid:1194)N M(cid:1220)M e&f
NGUY(cid:1224)N TH(cid:1230) LÝ - 0112187
NGUY(cid:1224)N SAO K(cid:483)- 0112186
(cid:1260)NG D(cid:1256)NG PH(cid:1194)N M(cid:1220)M MÃ NGU(cid:1238)N M(cid:1250) H(cid:1226) QU(cid:1190)N
TR(cid:1230) C(cid:1130) S(cid:1250) D(cid:1266) LI(cid:1226)U H(cid:1132)(cid:1246)NG (cid:264)(cid:1236)I T(cid:1132)(cid:1254)NG PERST
XÂY D(cid:1268)NG (cid:1260)NG D(cid:1256)NG QU(cid:1190)N LÝ H(cid:1226) TH(cid:1236)NG
THÔNG TIN (cid:264)(cid:1230)A LÝ THÀNH PH(cid:1236) HCM
KHÓA LU(cid:1200)N C(cid:1264) NHÂN TIN H(cid:1232)C
GIÁO VIÊN H(cid:1132)(cid:1246)NG D(cid:1198)N Th.s NGUY(cid:1224)N MINH NAM
NIÊN KHOÁ 2001-2005
- 2 -
(cid:47)(cid:1248)I C(cid:1190)M (cid:1130)N Chúng em chân thành cám (cid:1131)n Khoa Công ngh(cid:1227) Thông tin, tr(cid:1133)(cid:1249)ng (cid:264)(cid:1189)i h(cid:1233)c
Khoa h(cid:1233)c T(cid:1269) nhiên t(cid:1189)o (cid:255)(cid:76)(cid:1221)u ki(cid:1227)n cho chúng em th(cid:1269)c hi(cid:1227)n (cid:255)(cid:1221) tài lu(cid:1201)n v(cid:259)n t(cid:1237)t
nghi(cid:1227)p này.
Chúng em chân thành cám (cid:1131)n th(cid:1195)y Nguy(cid:1225)n Minh Nam (cid:255)ã t(cid:1201)n tình h(cid:1133)(cid:1247)ng
(cid:71)(cid:1199)n, ch(cid:1229) b(cid:1191)o chúng em trong su(cid:1237)t th(cid:1249)i gian th(cid:1269)c hi(cid:1227)n (cid:255)(cid:1221) tài.
Chúng em chân thành cám (cid:1131)n quý th(cid:1195)y cô trong khoa (cid:255)ã t(cid:1201)n tình gi(cid:1191)ng
(cid:71)(cid:1189)y, trang b(cid:1231) cho chúng em nh(cid:1267)ng ki(cid:1219)n th(cid:1261)c quý báu trong nh(cid:1267)ng n(cid:259)m h(cid:1233)c
(cid:89)(cid:1263)a qua.
Chúng con xin nói lên lòng bi(cid:1219)t (cid:1131)n sâu s(cid:1203)c (cid:255)(cid:1237)i v(cid:1247)i cha m(cid:1213), nh(cid:1267)ng ng(cid:1133)(cid:1249)i
(cid:255)ã ch(cid:259)m sóc, nuôi d(cid:1189)y chúng con thành ng(cid:1133)(cid:1249)i và luôn (cid:255)(cid:1245)ng viên tinh th(cid:1195)n
cho chúng con.
Và c(cid:458)ng chân thành cám (cid:1131)n các anh ch(cid:1231) và b(cid:1189)n bè (cid:255)ã (cid:1259)ng h(cid:1245), giúp (cid:255)(cid:1253), trao
(cid:255)(cid:1241)i ki(cid:1219)n th(cid:1261)c, kinh nghi(cid:1227)m và (cid:255)(cid:1245)ng viên chúng em trong th(cid:1249)i gian h(cid:1233)c t(cid:1201)p và
nghiên c(cid:1261)u.
(cid:48)(cid:1211)c dù chúng em (cid:255)ã c(cid:1237) g(cid:1203)ng hoàn thành lu(cid:1201)n v(cid:259)n trong ph(cid:1189)m vi và kh(cid:1191)
(cid:81)(cid:259)ng cho phép nh(cid:1133)ng ch(cid:1203)c ch(cid:1203)n s(cid:1217) không tránh kh(cid:1235)i nh(cid:1267)ng sai sót. Chúng
em kính mong nh(cid:1201)n (cid:255)(cid:1133)(cid:1255)c s(cid:1269) c(cid:1191)m thông và t(cid:1201)n tình ch(cid:1229) b(cid:1191)o c(cid:1259)a quý th(cid:1195)y cô
và các b(cid:1189)n.
- 3 -
Tp.H(cid:1239) Chí Minh, tháng 7 n(cid:259)m 2005 Nguy(cid:1225)n Th(cid:1231) Lý – 0112187 Nguy(cid:1225)n Sao K(cid:484) - 0112186
TÓM T(cid:1202)T LU(cid:1200)N V(cid:258)N
Lu(cid:1201)n v(cid:259)n (cid:255)(cid:1133)(cid:1255)c t(cid:1241) ch(cid:1261)c thành các ph(cid:1195)n chính nh(cid:1133) sau:
Ch(cid:1133)(cid:1131)ng 1: Gi(cid:1247)i thi(cid:1227)u t(cid:1195)m quan tr(cid:1233)ng, m(cid:1257)c tiêu, ph(cid:1189)m vi c(cid:1259)a (cid:255)(cid:1221) tài, các c(cid:1131) s(cid:1251) lý
thuy(cid:1219)t và h(cid:1133)(cid:1247)ng ti(cid:1219)p c(cid:1201)n.
Ch(cid:1133)(cid:1131)ng 2: Cách t(cid:1241) ch(cid:1261)c c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng PERST và nh(cid:1267)ng so
sánh v(cid:1247)i các cách t(cid:1241) ch(cid:1261)c c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u quan h(cid:1227) và các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác.
Ch(cid:1133)(cid:1131)ng 3: Gi(cid:1247)i thi(cid:1227)u v(cid:1221) mô hình Topology: nêu lên nh(cid:1267)ng khái ni(cid:1227)m c(cid:1131) b(cid:1191)n,
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong Topology và các c(cid:1193)p Topology.
Ch(cid:1133)(cid:1131)ng 4: Gi(cid:1247)i thi(cid:1227)u v(cid:1221) GIS: gi(cid:1247)i thi(cid:1227)u t(cid:1241)ng quan v(cid:1221) GIS, các gi(cid:1191)i pháp và (cid:1261)ng
(cid:71)(cid:1257)ng v(cid:1221) GIS và (cid:1261)ng d(cid:1257)ng GIS trên PocketPC
Ch(cid:1133)(cid:1131)ng 5: Gi(cid:1247)i thi(cid:1227)u v(cid:1221) chu(cid:1197)n OpenGIS
Ch(cid:1133)(cid:1131)ng 6: T(cid:1241)ng quan v(cid:1221) PocketPC: Các v(cid:1193)n (cid:255)(cid:1221) và gi(cid:1191)i pháp trên thi(cid:1219)t b(cid:1231). Tình
tr(cid:1189)ng b(cid:1245) nh(cid:1247), t(cid:1189)o c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u và (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239) trên PocketPC.
Ch(cid:1133)(cid:1131)ng 7: (cid:1260)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239): mô hình phân tích thi(cid:1219)t k(cid:1219).
Ch(cid:1133)(cid:1131)ng 8: K(cid:1219)t lu(cid:1201)n, (cid:255)ánh giá và h(cid:1133)(cid:1247)ng phát tri(cid:1223)n
Ch(cid:1133)(cid:1131)ng 9: Nh(cid:1267)ng tài li(cid:1227)u tham kh(cid:1191)o khi th(cid:1269)c hi(cid:1227)n (cid:255)(cid:1221) tài
- 4 -
Ch(cid:1133)(cid:1131)ng 10:Nêu nh(cid:1267)ng thu(cid:1201)t toán chính trong ch(cid:1133)(cid:1131)ng trình
(cid:47)(cid:1248)I C(cid:1190)M (cid:1130)N ........................................................................................................................ 3
TÓM T(cid:1202)T LU(cid:1200)N V(cid:258)N......................................................................................................... 4
DANH SÁCH CÁC HÌNH..................................................................................................... 8
DANH SÁCH CÁC B(cid:1190)NG...................................................................................................10
(cid:48)(cid:1244)T S(cid:1236) KHÁI NI(cid:1226)M, THU(cid:1200)T NG(cid:1266) VÀ T(cid:1262) VI(cid:1218)T T(cid:1202)T ..................................................11
CH(cid:1132)(cid:1130)NG 1 : Hi(cid:1227)n tr(cid:1189)ng và yêu c(cid:1195)u .................................................................................15 1.1 Hi(cid:1227)n tr(cid:1189)ng: .................................................................................................................15 1.2 Gi(cid:1191)i quy(cid:1219)t bài toán: ....................................................................................................16 CH(cid:1132)(cid:1130)NG 2 : T(cid:1241)ng quan v(cid:1221) Perst .....................................................................................17 2.1 Gi(cid:1247)i thi(cid:1227)u: ..................................................................................................................17 2.2 (cid:264)(cid:1211)c tính:.....................................................................................................................18 Persistency by reachability:....................................................................................18 2.2.1 Semi transparent object loading: ............................................................................21 2.2.2 Automatic scheme evaluation.................................................................................23 2.2.3 Relation: ................................................................................................................24 2.2.4 Index: ....................................................................................................................25 2.2.5 Giao tác (Transaction):...........................................................................................29 2.2.6 Transparent API: ........................................................................................................31 2.3 Dùng.NET Remoting API: .....................................................................................31 2.3.1 Dùng các thu(cid:1245)c tính (cid:1191)o (virtual properties):............................................................32 2.3.2 2.4 C(cid:1131) ch(cid:1219) th(cid:1269)c hi(cid:1227)n giao tác (Transaction):.....................................................................33 2.5 Nh(cid:1267)ng tr(cid:1133)(cid:1249)ng h(cid:1255)p nên dùng PERST: .........................................................................37 2.6 Các thông s(cid:1237) c(cid:1259)a PERST:...........................................................................................38 S(cid:1131) l(cid:1133)(cid:1255)c v(cid:1221) RTree:.......................................................................................................44 2.7 Gi(cid:1247)i thi(cid:1227)u:..............................................................................................................44 2.7.1 S(cid:1131) l(cid:1133)(cid:1255)c v(cid:1221) d(cid:1267) li(cid:1227)u không gian (spatial data) và các gi(cid:1191)i pháp: ................................44 2.7.2 2.8 So sánh v(cid:1247)i các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác: ................................45 CH(cid:1132)(cid:1130)NG 3 : Gi(cid:1247)i thi(cid:1227)u v(cid:1221) mô hình Topology .................................................................50 3.1 Gi(cid:1247)i thi(cid:1227)u: ..................................................................................................................50 3.2 Các khái ni(cid:1227)m c(cid:1131) b(cid:1191)n trong Topology: .......................................................................50 3.3 Các lo(cid:1189)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong Topology: ............................................................................51 3.4 Các c(cid:1193)p c(cid:1259)a Topology: ...............................................................................................53
- 5 -
(cid:48)(cid:1256)C L(cid:1256)C
3.5 MBR – Minimum Bounding Rectangle: .....................................................................59 CH(cid:1132)(cid:1130)NG 4 : Gi(cid:1247)i thi(cid:1227)u v(cid:1221) GIS .......................................................................................60 4.1 Gi(cid:1247)i thi(cid:1227)u v(cid:1221) các (cid:1261)ng d(cid:1257)ng và gi(cid:1191)i pháp v(cid:1221) GIS: ........................................................60 4.2 Mô hình d(cid:1267) li(cid:1227)u c(cid:1259)a thông tin (cid:255)(cid:1231)a lý: ..........................................................................61 4.3 Thu th(cid:1201)p d(cid:1267) li(cid:1227)u: ........................................................................................................64 4.4 Các gi(cid:1191)i thu(cid:1201)t nghiên c(cid:1261)u v(cid:1221) GIS: ..............................................................................66 4.5 Các c(cid:1193)u trúc d(cid:1267) li(cid:1227)u không gian trong GIS: ................................................................67 Cây t(cid:1261) phân (Quad Tree):.......................................................................................67 4.5.1 k-d Tree: ................................................................................................................68 4.5.2 R-Tree: ..................................................................................................................69 4.5.3 R*-Tree: ................................................................................................................70 4.5.4 R+-Tree:.................................................................................................................71 4.5.5 4.6 (cid:1260)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239):.......................................................................................................72 Các ki(cid:1223)u b(cid:1191)n (cid:255)(cid:1239): ....................................................................................................72 4.6.1 Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239):......................................................................................72 4.6.2 4.7 (cid:1260)ng d(cid:1257)ng GIS trên PocketPC:....................................................................................73 CH(cid:1132)(cid:1130)NG 5 : Gi(cid:1247)i thi(cid:1227)u v(cid:1221) chu(cid:1197)n OpenGIS .....................................................................75 5.1 Các ki(cid:1223)u d(cid:1267) li(cid:1227)u hình h(cid:1233)c c(cid:1259)a OpenGIS: ....................................................................75 5.2 OpenGIS Specification ((cid:255)(cid:1211)c t(cid:1191) OpenGIS):..................................................................76 Các khái ni(cid:1227)m: .......................................................................................................76 5.2.1 Nh(cid:1267)ng d(cid:1231)ch v(cid:1257) OpenGIS (OpenGIS Services ):......................................................78 5.2.2 5.2.3 M(cid:1245)t mô hình nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng thông tin (Information Communities Model ): .......79 (cid:264)(cid:1211)c (cid:255)(cid:76)(cid:1223)m: ..............................................................................................................79 5.2.4 Phân lo(cid:1189)i: ...............................................................................................................81 5.2.5 5.3 OpenGIS Abstract Specification: ................................................................................82 Essential Model (mô hình b(cid:1191)n ch(cid:1193)t ): .....................................................................83 5.3.1 Abstract Model: .....................................................................................................85 5.3.2 CH(cid:1132)(cid:1130)NG 6 : T(cid:1241)ng quan v(cid:1221) PocketPC .............................................................................89 6.1 T(cid:1241)ng quan v(cid:1221) PocketPC: ............................................................................................89 6.2 Kh(cid:1191) n(cid:259)ng l(cid:1201)p trình trên PocketPC:..............................................................................89 6.3 M(cid:1245)t s(cid:1237) v(cid:1193)n (cid:255)(cid:1221) khi l(cid:1201)p trình (cid:1261)ng d(cid:1257)ng trên PocketPC: .................................................89 T(cid:1237)c (cid:255)(cid:1245) và các h(cid:1243) tr(cid:1255) kh(cid:1191) n(cid:259)ng hi(cid:1223)n th(cid:1231): ..................................................................89 6.3.1 Kh(cid:1191) n(cid:259)ng và hình th(cid:1261)c l(cid:1133)u tr(cid:1267):...............................................................................90 6.3.2 6.3.3 T(cid:1133)(cid:1131)ng tác gi(cid:1267)a ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng và thi(cid:1219)t b(cid:1231): ..............................................................91 6.4 Các gi(cid:1191)i pháp cho (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239) trên PocketPC: ....................................................92 Yêu c(cid:1195)u chung: ......................................................................................................92 6.4.1
- 6 -
V(cid:1193)n (cid:255)(cid:1221) t(cid:1237)i (cid:1133)u t(cid:1237)c (cid:255)(cid:1245) hi(cid:1223)n th(cid:1231): .................................................................................93 6.4.2 6.5 T(cid:1241) ch(cid:1261)c d(cid:1267) li(cid:1227)u b(cid:1191)n (cid:255)(cid:1239) trên PocketPC:.......................................................................93 CH(cid:1132)(cid:1130)NG 7 : (cid:1260)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239):.......................................................................................95 Phân tích và xác (cid:255)(cid:1231)nh yêu c(cid:1195)u:....................................................................................95 7.1 Phân tích - thi(cid:1219)t k(cid:1219):.....................................................................................................96 7.2 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1265) d(cid:1257)ng: .......................................................................................................96 7.2.1 7.2.2 (cid:264)(cid:1211)c t(cid:1191) Use-Case chính: ..........................................................................................97 7.2.2.1 Tìm ki(cid:1219)m (cid:255)(cid:1133)(cid:1249)ng (cid:255)i: ...............................................................................................97 7.2.2.2 Tìm ki(cid:1219)m Region: ..................................................................................................98 7.2.2.3 Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t: ........................................................................................99 7.2.2.4 Tìm chu trình t(cid:1237)i (cid:1133)u: ............................................................................................101 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p Class Diagram:.....................................................................................102 7.2.3 7.2.3.1 S(cid:1131)(cid:3)(cid:255)(cid:1239) t(cid:1241)ng quát:...................................................................................................102 7.2.3.2 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p d(cid:1267) li(cid:1227)u:.................................................................................................103 7.2.3.3 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p v(cid:1217):........................................................................................................103 7.2.3.4 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1269) ki(cid:1227)n: ......................................................................................................104 7.2.4 Mô t(cid:1191) các l(cid:1247)p: ......................................................................................................104 Các l(cid:1133)u (cid:255)(cid:1239) ho(cid:1189)t (cid:255)(cid:1245)ng: ..........................................................................................111 7.2.5 Thi(cid:1219)t k(cid:1219) giao di(cid:1227)n: ....................................................................................................124 7.3 Giao di(cid:1227)n trên Desktop: .......................................................................................124 7.3.1 Giao di(cid:1227)n trên PocketPC: .....................................................................................131 7.3.2 7.4 Cài (cid:255)(cid:1211)t:.....................................................................................................................131 CH(cid:1132)(cid:1130)NG 8 : K(cid:1219)t Lu(cid:1201)n, (cid:264)ánh giá và h(cid:1133)(cid:1247)ng phát tri(cid:1223)n ...................................................132 8.1 K(cid:1219)t lu(cid:1201)n, (cid:255)ánh giá:....................................................................................................132 8.2 H(cid:1133)(cid:1247)ng phát tri(cid:1223)n: .....................................................................................................132 CH(cid:1132)(cid:1130)NG 9 : Tài li(cid:1227)u tham kh(cid:1191)o ....................................................................................133 Ph(cid:1257) l(cid:1257)c .................................................................................................134 CH(cid:1132)(cid:1130)NG 10 : 10.1 Bài toán tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t gi(cid:1267)a hai (cid:255)(cid:76)(cid:1223)m: ........................................................134 10.1.1 Phát bi(cid:1223)u bài toán:................................................................................................134 10.1.2 Gi(cid:1191)i quy(cid:1219)t bài toán:..............................................................................................134 10.2 Bài toán tìm chu trình t(cid:1237)i (cid:1133)u .....................................................................................136 10.2.1 Phát bi(cid:1223)u bài toán.................................................................................................136 10.2.2 Gi(cid:1191)i quy(cid:1219)t bài toán:..............................................................................................137
- 7 -
DANH SÁCH CÁC HÌNH Hình 3.2-1 Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong mô hình Topology...............................................................51 Hình 3.4-1 Quan h(cid:1227) Topology c(cid:1193)p 0 .....................................................................................56 Hình 3.4-2 Quan h(cid:1227) Topology c(cid:1193)p 1 và 2..............................................................................57 Hình 3.4-3 Quan h(cid:1227) Topology c(cid:1193)p 3 .....................................................................................58 Hình 4.2-1 Thông tin c(cid:1195)n l(cid:1133)u tr(cid:1267) ..........................................................................................61 Hình 4.2-2 So sánh Raster và Vector ....................................................................................64 Hình 4.3-1 Ph(cid:1133)(cid:1131)ng pháp Scanning .......................................................................................65 Hình 4.5.1-1 Cây t(cid:1261) phân .....................................................................................................67 Hình 4.5.2-1 K-D Tree .........................................................................................................68 Hình 4.5.3-1 R-Tree .............................................................................................................69 Hình 4.5.5-1 R+-Tree ...........................................................................................................71 Hình 4.6.2-1 Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng chính trong b(cid:1191)n (cid:255)(cid:1239) ....................................................................73 Hình 5.1-1 H(cid:1227) phân c(cid:1193)p các ki(cid:1223)u d(cid:1267) li(cid:1227)u hình h(cid:1233)c c(cid:1259)a OpenGIS. .........................................76 Hình 5.3.1-1 L(cid:1247)p khái ni(cid:1227)m..................................................................................................85 Hình 7.2.1-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1265) d(cid:1257)ng t(cid:1241)ng quát...................................................................................96 Hình 7.2.2.1-1 Use Case - Tìm ki(cid:1219)m Edge............................................................................97 Hình 7.2.2.2-1 Use Case: Tìm ki(cid:1219)m Region..........................................................................98 Hình 7.2.2.3-1 Use Case – Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t..............................................................99 Hình 7.2.2.4-1 Use-Case - Tim chu trình t(cid:1237)i (cid:1133)u ..................................................................101 Hình 7.2.3.1-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) t(cid:1241)ng quát ...........................................................................................102 Hình 7.2.3.2-1 S(cid:1131) l(cid:1247)p d(cid:1267) li(cid:1227)u .............................................................................................103 Hình 7.2.3.3-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p v(cid:1217)................................................................................................103 Hình 7.2.3.4-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1269) ki(cid:1227)n ..............................................................................................104 Hình 7.2.4-1 L(cid:1247)p CNode ....................................................................................................106 Hình 7.2.4-2 L(cid:1247)p CEdge ....................................................................................................109 Hình 7.2.5-1 Sequense Diagram: Hi(cid:1223)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239) ...............................................................112 Hình 7.2.5-2 Collabration Diagram: Hi(cid:1223)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239)...........................................................113 Hình 7.2.5-3 Sequence Diagram: Tìm (cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t......................................................113 Hình 7.2.5-4 Collabration Diagram: Tìm (cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t .................................................114 Hình 7.2.5-5 Sequence Diagram: Tìm Edge........................................................................115 Hình 7.2.5-6 Collabration Diagram: Tìm Edge ...................................................................116 Hình 7.2.5-7 Sequence Diagram: Tìm chu trình t(cid:1237)i (cid:1133)u ........................................................117 Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình t(cid:1237)i (cid:1133)u ...................................................118 Hình 7.2.5-9 Sequence Diagram: D(cid:1231)ch chuy(cid:1223)n vùng nhìn ...................................................119
- 8 -
Hình 7.2.5-10 Collabrotion Diagram: Di chuy(cid:1223)n vùng nhìn ................................................120 Hình 7.2.5-11 Sequence Diagram: T(cid:1229) l(cid:1227) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239)..............................................................120 Hình 7.2.5-12 Collaboration Diagram: T(cid:1229) l(cid:1227) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239) .......................................................121 Hình 7.2.5-13 Sequence Diagram: Tìm (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m ................................................................121 Hình 7.2.5-14 Collaboration Diagram: Tìm (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m ..........................................................122 Hình 7.2.5-15 Sequence Diagram: Tìm giao l(cid:1245) ...................................................................123 Hình 7.2.5-16 Collaboration Diagram: Tìm giao l(cid:1245).............................................................123 Hình 7.3.1-1 Khung nhìn t(cid:1241)ng quát v(cid:1221) giao di(cid:1227)n.................................................................124 Hình 7.3.1-2 Toolbar c(cid:1259)a ch(cid:1133)(cid:1131)ng trình ...............................................................................124 Hình 7.3.1-3 Các ch(cid:1261)c n(cid:259)ng chính trên thanh công c(cid:1257) ........................................................127 Hình 7.3.1-4 Thanh th(cid:1269)c (cid:255)(cid:1131)n File .......................................................................................128 Hình 7.3.1-5 Thanh th(cid:1269)c (cid:255)(cid:1131)n View.....................................................................................128 Hình 7.3.1-6 Khung nhìn b(cid:1191)n (cid:255)(cid:1239) thu nh(cid:1235) ............................................................................130 Hình 7.3.1-7 Khung Layer..................................................................................................130 Hình 7.3.1-8 Khung hi(cid:1223)n th(cid:1231) thông tin (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.................................................................131
- 9 -
DANH SÁCH CÁC B(cid:1190)NG (cid:37)(cid:1191)ng 2.2.4-1 Các m(cid:1237)i quan h(cid:1227) gi(cid:1267)a 2 l(cid:1247)p A va B .................................................................25 (cid:37)(cid:1191)ng 2.2.5-1 Các ki(cid:1223)u Index (cid:255)(cid:1133)(cid:1255)c PERST h(cid:1243) tr(cid:1255): ................................................................29 (cid:37)(cid:1191)ng 2.6-1 H(cid:1205)ng s(cid:1237)(cid:3)(cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)nh ngh(cid:429)a s(cid:1209)n trong l(cid:1247)p StorageImpl...........................................42 (cid:37)(cid:1191)ng 2.8-1 So sánh các (cid:255)(cid:1211)c tính c(cid:1259)a các h(cid:1227) qu(cid:1191)n tr(cid:1231) .............................................................47 (cid:37)(cid:1191)ng 2.8-2 B(cid:1191)ng so sánh k(cid:1219)t qu(cid:1191) c(cid:1259)a các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.............49 (cid:37)(cid:1191)ng 3.4-1 Các c(cid:1193)p Topology trong các l(cid:1247)p VPF .................................................................55 (cid:37)(cid:1191)ng 3.4-2 Các c(cid:1245)t (cid:255)(cid:1133)(cid:1255)c yêu c(cid:1195)u (cid:255)(cid:1223)(cid:3)(cid:255)(cid:1231)nh ngh(cid:429)a quan h(cid:1227) Topology trong VPF......................56 (cid:37)(cid:1191)ng 3.5-1. (cid:264)(cid:1231)nh ngh(cid:429)a khung ch(cid:1267) nh(cid:1201)t nh(cid:1235) nh(cid:1193)t MBR........................................................59 (cid:37)(cid:1191)ng 4.2-1 B(cid:1191)ng so sánh ki(cid:1223)u d(cid:1267) li(cid:1227)u Raster va Vector...........................................................64 (cid:37)(cid:1191)ng 7.1-1 Các ch(cid:1261)c n(cid:259)ng chính ..........................................................................................96 (cid:37)(cid:1191)ng 7.2.4-1 L(cid:1247)p CDatabase..............................................................................................105 (cid:37)(cid:1191)ng 7.2.4-2 L(cid:1247)p CMapView.............................................................................................105 (cid:37)(cid:1191)ng 7.2.4-3 L(cid:1247)p CMapEvent ............................................................................................106 (cid:37)(cid:1191)ng 7.2.4-4 Thu(cid:1245)c tính l(cid:1247)p CNode ...................................................................................107 (cid:37)(cid:1191)ng 7.2.4-5 Ph(cid:1133)(cid:1131)ng th(cid:1261)c l(cid:1247)p CNode ...............................................................................108 (cid:37)(cid:1191)ng 7.2.4-6 Thu(cid:1245)c tính l(cid:1247)p CEdge...................................................................................110 (cid:37)(cid:1191)ng 7.2.4-7 Ph(cid:1133)(cid:1131)ng th(cid:1261)c l(cid:1247)p CEdge................................................................................111 (cid:37)(cid:1191)ng 7.3.1-1 Các ch(cid:1261)c n(cid:259)ng chính trên thanh th(cid:1269)c (cid:255)(cid:1131)n ......................................................129
- 10 -
(cid:48)(cid:1244)T S(cid:1236) KHÁI NI(cid:1226)M, THU(cid:1200)T NG(cid:1266) VÀ T(cid:1262) VI(cid:1218)T T(cid:1202)T
Khái ni(cid:1227)m (cid:264)(cid:1231)nh ngh(cid:429)a Ghi chú
(cid:43)(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u OODBMS (Object-
(cid:75)(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Oriented Database
Management System)
PERST Là m(cid:1245)t h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
Nhúng - -Embedded Có ngh(cid:429)a là PERST (cid:255)(cid:1133)(cid:1255)c
tích h(cid:1255)p ch(cid:1211)t vào ch(cid:1133)(cid:1131)ng
trình, g(cid:1195)n nh(cid:1133) kho(cid:1191)ng
cách gi(cid:1267)a database và
ch(cid:1133)(cid:1131)ng trình r(cid:1193)t nh(cid:1235),
PERST tr(cid:1269)c ti(cid:1219)p l(cid:1133)u d(cid:1267)
li(cid:1227)u trong các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(cid:70)(cid:1259)a ch(cid:1133)(cid:1131)ng trình và
không c(cid:1195)n có nh(cid:1267)ng (cid:255)(cid:82)(cid:1189)n
mã làm công vi(cid:1227)c chuy(cid:1223)n
(cid:71)(cid:1267) li(cid:1227)u t(cid:1263) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u
thành (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng và ng(cid:1133)(cid:1255)c
(cid:79)(cid:1189)i
Topology Là c(cid:1193)u trúc cho mô hình
(cid:80)(cid:1189)ng l(cid:1133)(cid:1247)i giao thông
- 11 -
GIS ( Geography (cid:43)(cid:1227) th(cid:1237)ng thông tin (cid:255)(cid:1231)a
Information System )
lý. Là m(cid:1245)t công ngh(cid:1227)
(cid:71)(cid:1269)a trên máy tính (cid:255)(cid:1223) xây
(cid:71)(cid:1269)ng b(cid:1191)n (cid:255)(cid:1239), phân tích
và x(cid:1265) lý các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(cid:87)(cid:1239)n t(cid:1189)i và các s(cid:1269) ki(cid:1227)n
(cid:91)(cid:1191)y ra trên trái (cid:255)(cid:1193)t.
Bao g(cid:1239)m hai d(cid:1189)ng: Thông tin không gian Thông tin v(cid:1221) nh(cid:1267)ng (cid:255)(cid:1211)c
(cid:255)(cid:76)(cid:1223)m liên quan (cid:255)(cid:1219)n hình (cid:135) (cid:39)(cid:1189)ng hình h(cid:1233)c:
(cid:71)(cid:1189)ng, v(cid:1231) trí, quan h(cid:1227) c(cid:1259)a mô t(cid:1191) các (cid:255)(cid:1211)c (cid:255)(cid:76)(cid:1223)m
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1231)a lý. hình d(cid:1189)ng, v(cid:1231) trí. Ví
(cid:71)(cid:1257) nh(cid:1133) t(cid:1233)a (cid:255)(cid:1245) c(cid:1259)a
(cid:255)(cid:76)(cid:1223)m, (cid:255)(cid:1133)(cid:1249)ng…
(cid:135) D(cid:1189)ng Topology:
mô t(cid:1191) quan h(cid:1227) gi(cid:1267)a
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hình
(cid:75)(cid:1233)c. Ví d(cid:1257) nh(cid:1133)
nh(cid:1267)ng vùng nào k(cid:1221)
(cid:89)(cid:1247)i m(cid:1245)t vùng xác
(cid:255)(cid:1231)nh.
Thông tin phi không gian Thông tin v(cid:1221) nh(cid:1267)ng (cid:255)(cid:1211)c Ví d(cid:1257) nh(cid:1133) tên (cid:255)(cid:1133)(cid:1249)ng
( thông tin thu(cid:1245)c tính ) (cid:255)(cid:76)(cid:1223)m liên quan (cid:255)(cid:1219)n th(cid:1237)ng ph(cid:1237), dân s(cid:1237)…
kê, thông tin s(cid:1237), thông
tin (cid:255)(cid:1211)c tr(cid:1133)ng gán cho
- 12 -
(cid:80)(cid:1243)i thu(cid:1245)c tính c(cid:1259)a (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng
PDA ( Personal Digital Thi(cid:1219)t b(cid:1231)(cid:3) (cid:255)(cid:76)(cid:1227)n t(cid:1265) h(cid:1243) tr(cid:1255)
Assistant ) cá nhân, giúp ng(cid:1133)(cid:1249)i s(cid:1265)
(cid:71)(cid:1257)ng l(cid:1133)u tr(cid:1267) các thông
tin cá nhân, công vi(cid:1227)c
(cid:70)(cid:1195)n thi(cid:1219)t c(cid:458)ng nh(cid:1133) các
ph(cid:1195)n m(cid:1221)m t(cid:1237)i thi(cid:1223)u trên
(cid:80)(cid:1245)t thi(cid:1219)t b(cid:1231) nh(cid:1235) g(cid:1233)n
Pocket PC Khái ni(cid:1227)m này có th(cid:1223)
dùng (cid:255)(cid:1223) ch(cid:1229):
+ H(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành
nhúng Pocket PC do
Microsoft phát tri(cid:1223)n
(cid:71)(cid:1269)a trên nhân c(cid:1259)a H(cid:1227)
(cid:255)(cid:76)(cid:1221)u hành Windows
CE
+ Các thi(cid:1219)t b(cid:1231)
PDA s(cid:1265) d(cid:1257)ng h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u
Trong bài, Edge
t(cid:1133)(cid:1131)ng
hành Pocket PC
(cid:255)(cid:1133)(cid:1131)ng v(cid:1247)i (cid:255)(cid:1133)(cid:1249)ng. Khi nh(cid:1203)c
Edge (cid:264)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1189)nh trong mô
(cid:87)(cid:1247)i Edge, hay (cid:255)(cid:1133)(cid:1249)ng có th(cid:1223)
hi(cid:1223)u ngh(cid:429)a nh(cid:1133) nhau.
- 13 -
hình Topology
(cid:1251)(cid:3) (cid:255)ây không (cid:255)(cid:1221) c(cid:1201)p (cid:255)(cid:1219)n
qu(cid:1201)n huy(cid:1227)n nh(cid:1133)ng có th(cid:1223)
hi(cid:1223)u Region là qu(cid:1201)n huy(cid:1227)n.
Trong bài không nh(cid:1203)c t(cid:1247)i
Region (cid:264)(cid:1237)i t(cid:1133)(cid:1255)ng vùng
tên (cid:255)(cid:1133)(cid:1249)ng, qu(cid:1201)n huy(cid:1227)n mà
ch(cid:1229) nh(cid:1203)c t(cid:1247)i ID vì c(cid:1131) s(cid:1251) d(cid:1267)
li(cid:1227)u không (cid:255)(cid:1259) thông tin tên
(cid:255)(cid:1133)(cid:1249)ng. Và khi nh(cid:1203)c t(cid:1247)i tên
(cid:70)(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1193)t k(cid:484) thì
hi(cid:1223)u là ID.
- 14 -
ID (cid:264)(cid:1231)nh danh c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
CH(cid:1132)(cid:1130)NG 1 : Hi(cid:1227)n tr(cid:1189)ng và yêu c(cid:1195)u
1.1
Hi(cid:1227)n tr(cid:1189)ng:
Trên th(cid:1219) gi(cid:1247)i hi(cid:1227)n nay (cid:255)ã có nhi(cid:1221)u ph(cid:1195)n m(cid:1221)m gi(cid:1191)i quy(cid:1219)t các bài toán v(cid:1221)
(cid:69)(cid:1191)n (cid:255)(cid:1239) giao thông nh(cid:1133): RouteSmart, BusStops, Arclogistics, Routronic 2000,
DynaRoute…(cid:1250) Vi(cid:1227)t Nam nói riêng c(cid:458)ng có m(cid:1245)t s(cid:1237) công ty nh(cid:1133) DolSoft, Hài
Hoà, … (cid:255)ã có m(cid:1245)t s(cid:1237) s(cid:1191)n ph(cid:1197)m v(cid:1221) GIS nh(cid:1133) Street Finder, SmartMap…. Các
(cid:86)(cid:1191)n ph(cid:1197)m trên (cid:255)a ph(cid:1195)n s(cid:1265) d(cid:1257)ng c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c t(cid:1241) ch(cid:1261)c trên các h(cid:1227) qu(cid:1191)n
tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u quan h(cid:1227) ho(cid:1211)c t(cid:1269) t(cid:1189)o. Tuy nhiên v(cid:1199)n có v(cid:1193)n (cid:255)(cid:1221)(cid:3)(cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1211)t ra:
1.Chi phí c(cid:1259)a càc h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u th(cid:1133)(cid:1131)ng m(cid:1189)i n(cid:1219)u có dùng.
2.S(cid:1269) khó kh(cid:259)n và có khi là “r(cid:1203)c r(cid:1237)i” trong cách l(cid:1201)p trình giao ti(cid:1219)p v(cid:1247)i các
(cid:70)(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u ph(cid:1261)c t(cid:1189)p có nhi(cid:1221)u b(cid:1191)ng, quan h(cid:1227)…
Th(cid:1201)t ra, hai v(cid:1193)n (cid:255)(cid:1221) trên có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c gi(cid:1191)i quy(cid:1219)t t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i t(cid:1237)t b(cid:1205)ng cách s(cid:1265)
(cid:71)(cid:1257)ng h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng PERST (mã ngu(cid:1239)n m(cid:1251)).
PERST là m(cid:1245)t h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i nh(cid:1235) (so v(cid:1247)i các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u
khác) v(cid:1247)i ph(cid:1195)n lõi ch(cid:1229) g(cid:1239)m kho(cid:1191)ng 5000 dòng mã. Yêu c(cid:1195)u c(cid:1193)u hình c(cid:1259)a
PERST t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i th(cid:1193)p. H(cid:1131)n n(cid:1267)a, PERST c(cid:458)ng không c(cid:1195)n (cid:255)(cid:1219)n “s(cid:1269) qu(cid:1191)n tr(cid:1231)”
th(cid:1133)(cid:1249)ng th(cid:1193)y (cid:1251) các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u. M(cid:1211)c dù (cid:255)(cid:1131)n gi(cid:1191)n nh(cid:1133) v(cid:1201)y nh(cid:1133)ng PERST
(cid:89)(cid:1199)n h(cid:1243) tr(cid:1255)(cid:3)(cid:255)(cid:1195)y (cid:255)(cid:1259) tính ACID trong vi(cid:1227)c th(cid:1269)c hi(cid:1227)n giao tác (transaction) và h(cid:1243)
tr(cid:1255) vi(cid:1227)c ph(cid:1257)c h(cid:1239)i (recovery) t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i nhanh khi h(cid:1227) th(cid:1237)ng g(cid:1211)p s(cid:1269) c(cid:1237).
Không ch(cid:1229) d(cid:1263)ng l(cid:1189)i (cid:1251)(cid:3)(cid:255)ó mà PERST có h(cid:1243) tr(cid:1255) c(cid:1191) vi(cid:1227)c phát tri(cid:1223)n trên môi
tr(cid:1133)(cid:1249)ng compact.NET framework nên có kh(cid:1191) n(cid:259)ng phát tri(cid:1223)n (cid:1261)ng d(cid:1257)ng trên
- 15 -
các thi(cid:1219)t b(cid:1231) di (cid:255)(cid:1245)ng dùng WinCE hay PocketPC.
Vì v(cid:1201)y, ta có th(cid:1223) th(cid:1193)y vi(cid:1227)c dùng PERST (cid:255)(cid:1223) gi(cid:1191)i quy(cid:1219)t bài toán v(cid:1221) qu(cid:1191)n lý
(cid:75)(cid:1227) th(cid:1237)ng thông tin (cid:255)(cid:1231)a lý (GIS) là hoàn toàn kh(cid:1191) thi.
1.2
Gi(cid:1191)i quy(cid:1219)t bài toán:
(cid:48)(cid:1245)t trong các y(cid:1219)u t(cid:1237) quan tr(cid:1233)ng quy(cid:1219)t (cid:255)(cid:1231)nh s(cid:1269) thành công hay th(cid:1193)t b(cid:1189)i c(cid:1259)a
(cid:80)(cid:1245)t h(cid:1227) th(cid:1237)ng thông tin (cid:255)(cid:1231)a lí là vi(cid:1227)c l(cid:1269)a ch(cid:1233)n mô hình c(cid:1193)u trúc d(cid:1267) li(cid:1227)u thích
(cid:75)(cid:1255)p, cho phép l(cid:1133)u tr(cid:1267) và khai thác thông tin m(cid:1245)t cách hi(cid:1227)u qu(cid:1191). Và mô hình
Topology th(cid:1223) hi(cid:1227)n t(cid:1237)t nh(cid:1267)ng (cid:255)òi h(cid:1235)i trên (Mô hình này s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1221) c(cid:1201)p sau
trong lu(cid:1201)n v(cid:259)n). Vì d(cid:1267) li(cid:1227)u Topology trên PERST không có s(cid:1209)n nên chúng ta
(cid:70)(cid:1195)n xây d(cid:1269)ng l(cid:1189)i d(cid:1267) li(cid:1227)u theo mô hình Topology. D(cid:1267) li(cid:1227)u thô (d(cid:1267) li(cid:1227)u ngu(cid:1239)n)
(cid:255)(cid:1133)(cid:1255)c dùng trong (cid:1261)ng d(cid:1257)ng này là các t(cid:1201)p tin text.
Bài toán s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c gi(cid:1191)i quy(cid:1219)t ch(cid:1259) y(cid:1219)u b(cid:1205)ng s(cid:1269) ph(cid:1237)i h(cid:1255)p các ki(cid:1219)n th(cid:1261)c v(cid:1221)
- 16 -
GIS,PERST và (cid:255)(cid:1239) ho(cid:1189).
CH(cid:1132)(cid:1130)NG 2 : (cid:55)(cid:1241)ng quan v(cid:1221) PERST
2.1
Gi(cid:1247)i thi(cid:1227)u:
PERST là m(cid:1245)t h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u “nhúng” dành cho các (cid:1261)ng d(cid:1257)ng c(cid:1195)n tính
(cid:81)(cid:259)ng l(cid:1133)u tr(cid:1267). PERST (cid:255)(cid:1133)(cid:1255)c thi(cid:1219)t k(cid:1219) dành riêng cho l(cid:1201)p trình và không có giao
di(cid:1227)n (cid:255)(cid:1239) h(cid:1233)a (cid:255)(cid:1223) qu(cid:1191)n tr(cid:1231). Vi(cid:1227)c s(cid:1265) d(cid:1257)ng PERST khá (cid:255)(cid:1131)n gi(cid:1191)n và (cid:255)(cid:1189)t (cid:255)(cid:1133)(cid:1255)c hi(cid:1227)u
(cid:81)(cid:259)ng t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i cao. (cid:264)(cid:1211)c (cid:255)(cid:76)(cid:1223)m chính d(cid:1225) th(cid:1193)y nh(cid:1193)t c(cid:1259)a PERST là s(cid:1269) tích h(cid:1255)p
ch(cid:1211)t ch(cid:1217) c(cid:1259)a PERST v(cid:1247)i m(cid:1245)t ngôn ng(cid:1267) l(cid:1201)p trình xác (cid:255)(cid:1231)nh. Hi(cid:1227)n t(cid:1189)i PERST
ch(cid:1229) h(cid:1243) tr(cid:1255) cho 2 ngôn ng(cid:1267) l(cid:1201)p trình là Java và C#.
Không gi(cid:1237)ng v(cid:1247)i các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác
(OODBMSes), PERST không c(cid:1195)n dùng (cid:255)(cid:1219)n các b(cid:1245) biên d(cid:1231)ch hay các b(cid:1245) ti(cid:1221)n
(cid:91)(cid:1265) lý (cid:255)(cid:1211)c bi(cid:1227)t khác. Nh(cid:1133) v(cid:1201)y, PERST có kh(cid:1191) n(cid:259)ng cung c(cid:1193)p (cid:255)(cid:1133)(cid:1255)c “tính trong
su(cid:1237)t” trong l(cid:1201)p trình (cid:1251) m(cid:1261)c (cid:255)(cid:1245) cao. Các hàm API c(cid:1259)a PERST ti(cid:1227)n l(cid:1255)i, d(cid:1225) s(cid:1265)
(cid:71)(cid:1257)ng và có t(cid:1237)c (cid:255)(cid:1245) cao. Có th(cid:1223) l(cid:1193)y ví d(cid:1257) khi so sánh v(cid:1247)i Ozone (m(cid:1245)t h(cid:1227) c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác vi(cid:1219)t b(cid:1205)ng Java). V(cid:1247)i gi(cid:1247)i h(cid:1189)n (benchmark)
007, PERST t(cid:1189)o database nhanh g(cid:1193)p 100 l(cid:1195)n và th(cid:1269)c hi(cid:1227)n phép duy(cid:1227)t qua các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u nhanh g(cid:1193)p 10 l(cid:1195)n so v(cid:1247)i Ozone. Và khi so v(cid:1247)i
(cid:80)(cid:1245)t h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng th(cid:1133)(cid:1131)ng m(cid:1189)i khác là ObjectStore PSE
Pro, PERST nhanh h(cid:1131)n g(cid:1193)p 4 l(cid:1195)n.
PERST là m(cid:1245)t h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i nh(cid:1235) (so v(cid:1247)i các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u
khác) v(cid:1247)i ph(cid:1195)n lõi ch(cid:1229) g(cid:1239)m kho(cid:1191)ng 5000 dòng mã. Yêu c(cid:1195)u c(cid:1193)u hình c(cid:1259)a
PERST t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i th(cid:1193)p. H(cid:1131)n n(cid:1267)a, PERST c(cid:458)ng không c(cid:1195)n (cid:255)(cid:1219)n “s(cid:1269) qu(cid:1191)n tr(cid:1231)”
th(cid:1133)(cid:1249)ng th(cid:1193)y (cid:1251) các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u. M(cid:1211)c dù (cid:255)(cid:1131)n gi(cid:1191)n nh(cid:1133) v(cid:1201)y nh(cid:1133)ng PERST
(cid:89)(cid:1199)n h(cid:1243) tr(cid:1255)(cid:3)(cid:255)(cid:1195)y (cid:255)(cid:1259) tính ACID trong vi(cid:1227)c th(cid:1269)c hi(cid:1227)n giao tác (transaction) và h(cid:1243)
- 17 -
tr(cid:1255) vi(cid:1227)c ph(cid:1257)c h(cid:1239)i (recovery) t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i nhanh khi h(cid:1227) th(cid:1237)ng g(cid:1211)p s(cid:1269) c(cid:1237).
Có hai b(cid:1191)n cài (cid:255)(cid:1211)t c(cid:1259)a PERST, m(cid:1245)t b(cid:1205)ng ngôn ng(cid:1267) Java và m(cid:1245)t b(cid:1205)ng C#.
(cid:37)(cid:1191)n cài (cid:255)(cid:1211)t trên C# (cid:255)(cid:1133)(cid:1255)c chuy(cid:1223)n t(cid:1263) Java dùng b(cid:1245) chuy(cid:1223)n (cid:255)(cid:1241)i Java sang C#
(m(cid:1211)c dù ph(cid:1191)i có nhi(cid:1221)u thay (cid:255)(cid:1241)i c(cid:1195)n th(cid:1269)c hi(cid:1227)n m(cid:1247)i có (cid:255)(cid:1133)(cid:1255)c b(cid:1191)n hoàn ch(cid:1229)nh).
(cid:48)(cid:1211)c dù b(cid:1191)n cài (cid:255)(cid:1211)t dùng C# h(cid:1243) tr(cid:1255) nhi(cid:1221)u ki(cid:1223)u “nguyên th(cid:1259)y” h(cid:1131)n (g(cid:1239)m có
ki(cid:1223)u s(cid:1237) nguyên không d(cid:1193)u và ki(cid:1223)u li(cid:1227)t kê (enum)) nh(cid:1133)ng trong các ph(cid:1133)(cid:1131)ng
di(cid:1227)n khác, các tính n(cid:259)ng c(cid:1259)a hai b(cid:1191)n là nh(cid:1133) nhau. Riêng PERST.NET có h(cid:1243)
tr(cid:1255) c(cid:1191) vi(cid:1227)c phát tri(cid:1223)n trên môi tr(cid:1133)(cid:1249)ng compact.NET framework nên có kh(cid:1191)
(cid:81)(cid:259)ng phát tri(cid:1223)n (cid:1261)ng d(cid:1257)ng trên các thi(cid:1219)t b(cid:1231) di (cid:255)(cid:1245)ng dùng WinCE hay
PocketPC.
2.2
(cid:264)(cid:1211)c tính:
Trong ph(cid:1195)n này chúng ta s(cid:1217)(cid:3) (cid:255)i vào các tính ch(cid:1193)t quan tr(cid:1233)ng nh(cid:1193)t c(cid:1259)a
PERST. C(cid:1257) th(cid:1223) chúng ta s(cid:1217) tìm hi(cid:1223)u phiên b(cid:1191)n cài (cid:255)(cid:1211)t trên môi tr(cid:1133)(cid:1249)ng.NET
(g(cid:1233)i t(cid:1203)t là PERST.NET). (cid:1250)(cid:3)(cid:255)ây các tính ch(cid:1193)t có t(cid:1263) nguyên g(cid:1237)c ti(cid:1219)ng Anh s(cid:1217)
(cid:255)(cid:1133)(cid:1255)c gi(cid:1267) nguyên do không có t(cid:1263) ti(cid:1219)ng Vi(cid:1227)t thay th(cid:1219) ng(cid:1203)n g(cid:1233)n mà (cid:255)úng
ngh(cid:429)a..
2.2.1 Persistency by reachability:
Trong (cid:1261)ng d(cid:1257)ng dùng PERST, m(cid:1233)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a các l(cid:1247)p (cid:255)(cid:1133)(cid:1255)c d(cid:1199)n xu(cid:1193)t t(cid:1263)
(cid:79)(cid:1247)p Persistent(cid:3)(cid:255)(cid:1221)u có kh(cid:1191) n(cid:259)ng l(cid:1133)u tr(cid:1267) (persistent hay còn d(cid:1231)ch là b(cid:1221)n v(cid:1267)ng).
(cid:46)(cid:1223) t(cid:1263) bây gi(cid:1249), ta s(cid:1217) g(cid:1233)i t(cid:1203)t các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này là các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent. Các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này (cid:255)(cid:1133)(cid:1255)c t(cid:1269)(cid:3)(cid:255)(cid:1245)ng l(cid:1133)u vào database khi nó (cid:255)(cid:1133)(cid:1255)c tham chi(cid:1219)u t(cid:1263) m(cid:1245)t
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent khác và ph(cid:1133)(cid:1131)ng th(cid:1261)c store c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác (cid:255)ó (cid:255)(cid:1133)(cid:1255)c
(cid:74)(cid:1233)i. Có ngh(cid:429)a là ta không c(cid:1195)n ph(cid:1191)i g(cid:1233)i tr(cid:1269)c ti(cid:1219)p, t(cid:1133)(cid:1249)ng minh ph(cid:1133)(cid:1131)ng th(cid:1261)c
- 18 -
store c(cid:1259)a m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khi mu(cid:1237)n l(cid:1133)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó.
Database có m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1211)c bi(cid:1227)t g(cid:1233)i là root. (cid:264)(cid:1237)i t(cid:1133)(cid:1255)ng root này là (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng duy nh(cid:1193)t (cid:255)(cid:1133)(cid:1255)c truy xu(cid:1193)t m(cid:1245)t cách (cid:255)(cid:1211)c bi(cid:1227)t (dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c
Storage.getRoot). Còn các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent khác (cid:255)(cid:1133)(cid:1255)c truy xu(cid:1193)t theo
cách bình th(cid:1133)(cid:1249)ng: ho(cid:1211)c truy xu(cid:1193)t b(cid:1205)ng tham chi(cid:1219)u t(cid:1263) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent
nh(cid:1133) trên ho(cid:1211)c truy xu(cid:1193)t b(cid:1205)ng cách dùng các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng bao ch(cid:1261)a (container
class) nh(cid:1133) Index,Link hay Relation. Không gi(cid:1237)ng nh(cid:1133) các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u
(cid:75)(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác, ch(cid:1229) có th(cid:1223) có duy nh(cid:1193)t m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng root trong c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u.
PERST yêu c(cid:1195)u m(cid:1243)i l(cid:1247)p persistent(cid:3)(cid:255)(cid:1221)u ph(cid:1191)i d(cid:1199)n xu(cid:1193)t t(cid:1263) l(cid:1247)p Persistent. Có
ngh(cid:429)a là các l(cid:1247)p “ngo(cid:1189)i lai” (không d(cid:1199)n xu(cid:1193)t t(cid:1263) l(cid:1247)p Persistent) không th(cid:1223)
(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u trong database. (cid:264)ây chính là cái giá ph(cid:1191)i tr(cid:1191) c(cid:1259)a s(cid:1269)(cid:3) (cid:255)(cid:1131)n gi(cid:1191)n và
không dùng (cid:255)(cid:1219)n các b(cid:1245) biên d(cid:1231)ch hay ti(cid:1221)n x(cid:1265) lý (cid:255)(cid:1211)c bi(cid:1227)t. Và các thành ph(cid:1195)n
(cid:70)(cid:1259)a các l(cid:1247)p persistent c(cid:458)ng b(cid:1231) gi(cid:1247)i h(cid:1189)n trong các ki(cid:1223)u sau:
Ki(cid:1223)u vô h(cid:1133)(cid:1247)ng (scalar type):
Bool, int, short, double, enum …
Ki(cid:1223)u chu(cid:1243)i: Ki(cid:1223)u System.String.
Ki(cid:1223)u ngày tháng: Ki(cid:1223)u System.DateTime.
Ki(cid:1223)u tham chi(cid:1219)u (cid:255)(cid:1219)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent: các l(cid:1247)p k(cid:1219) th(cid:1263)a t(cid:1263) l(cid:1247)p
Persistent hay các giao di(cid:1227)n (interface) k(cid:1219) th(cid:1263)a t(cid:1263) giao di(cid:1227)n IPersistent.
Ki(cid:1223)u giá tr(cid:1231) (value type): Các ki(cid:1223)u giá tr(cid:1231) c(cid:1259)a C#. Các giá tr(cid:1231) này
(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1269)c ti(cid:1219)p trong (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ch(cid:1261)a chúng.
Ki(cid:1223)u d(cid:1267) li(cid:1227)u nh(cid:1231) phân thô: Các l(cid:1247)p c(cid:1259)a C# k(cid:1219) th(cid:1263)a t(cid:1263) giao di(cid:1227)n
IPersistent hay t(cid:1263) giao di(cid:1227)n IValue và (cid:255)(cid:1133)(cid:1255)c (cid:255)ánh d(cid:1193)u là Serializable. C(cid:1131)
- 19 -
ch(cid:1219) Serialization chu(cid:1197)n s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c dùng (cid:255)(cid:1223)(cid:3) (cid:255)óng gói d(cid:1267) li(cid:1227)u c(cid:1259)a các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng thành các m(cid:1191)ng byte và l(cid:1133)u chúng vào database. Các l(cid:1247)p này s(cid:1217)
(cid:255)(cid:1133)(cid:1255)c (cid:255)ánh d(cid:1193)u là Serializable và không (cid:255)(cid:1133)(cid:1255)c ch(cid:1261)a các tham chi(cid:1219)u (cid:255)(cid:1219)n các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent khác.
Ki(cid:1223)u m(cid:1191)ng: Các m(cid:1191)ng m(cid:1245)t chi(cid:1221)u v(cid:1247)i thành ph(cid:1195)n là các ki(cid:1223)u d(cid:1267) li(cid:1227)u
(cid:255)(cid:1133)(cid:1255)c nêu trên.
Ki(cid:1223)u Link: (cid:255)(cid:1189)i di(cid:1227)n cho quan h(cid:1227) m(cid:1245)t-nhi(cid:1221)u trong mô hình c(cid:1131) s(cid:1251) d(cid:1267)
li(cid:1227)u. Hay nhìn theo góc (cid:255)(cid:1245) l(cid:1201)p trình (cid:255)ây chính là ki(cid:1223)u m(cid:1191)ng (cid:255)(cid:1245)ng ch(cid:1261)a các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent.
Có m(cid:1245)t v(cid:1193)n (cid:255)(cid:1221) là PERST không t(cid:1269) bi(cid:1219)t (cid:255)(cid:1133)(cid:1255)c r(cid:1205)ng li(cid:1227)u m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
persistent nào (cid:255)ó (cid:255)ã có thay (cid:255)(cid:1241)i gì ch(cid:1133)a trong quá trình làm vi(cid:1227)c. Mu(cid:1237)n bi(cid:1219)t
(cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:76)(cid:1221)u (cid:255)ó ch(cid:1229) có cách là ta t(cid:1269) so sánh t(cid:1263)ng field c(cid:1259)a tr(cid:1189)ng thái c(cid:458) và m(cid:1247)i
(cid:89)(cid:1247)i nhau. Nh(cid:1133)ng nh(cid:1133) v(cid:1201)y chi phí r(cid:1193)t cao. Vì th(cid:1219) nên trong PERST, l(cid:1201)p trình
viên hoàn toàn ch(cid:1231)u trách nhi(cid:1227)m v(cid:1221) vi(cid:1227)c l(cid:1133)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng nào vào c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.
Có hai cách trong PERST (cid:255)(cid:1223) ta có th(cid:1223) l(cid:1133)u m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vào c(cid:1131) s(cid:1251) d(cid:1267)
li(cid:1227)u:
Cách th(cid:1261) nh(cid:1193)t là dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c Persistent.Store. Ph(cid:1133)(cid:1131)ng th(cid:1261)c này khi
(cid:255)(cid:1133)(cid:1255)c g(cid:1233)i b(cid:1251)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng nào s(cid:1217) l(cid:1133)u b(cid:1191)n thân (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó và các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(cid:255)(cid:1133)(cid:1255)c tham chi(cid:1219)u t(cid:1263) nó m(cid:1245)t cách tr(cid:1269)c ti(cid:1219)p hay không tr(cid:1269)c ti(cid:1219)p mà ch(cid:1133)a (cid:255)(cid:1133)(cid:1255)c
(cid:79)(cid:1133)u. Có ngh(cid:429)a là n(cid:1219)u ta g(cid:1233)i ph(cid:1133)(cid:1131)ng th(cid:1261)c Store này (cid:255)(cid:1237)i v(cid:1247)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c c(cid:1259)a
(cid:80)(cid:1245)t cây thì l(cid:1195)n l(cid:1133)(cid:1255)t t(cid:1193)t c(cid:1191) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a cây này s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u xu(cid:1237)ng b(cid:1245)
nh(cid:1247) ph(cid:1257).
Cách th(cid:1261) hai là dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c Persistent.Modify: Ph(cid:1133)(cid:1131)ng th(cid:1261)c này ch(cid:1229)
(cid:255)ánh d(cid:1193)u các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng r(cid:1205)ng chúng (cid:255)ã b(cid:1231) thay (cid:255)(cid:1241)i ch(cid:1261) không l(cid:1133)u ngay l(cid:1201)p t(cid:1261)c
- 20 -
vào database. Cách này (cid:255)(cid:1211)c bi(cid:1227)t h(cid:1267)u d(cid:1257)ng khi (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c thay (cid:255)(cid:1241)i nhi(cid:1221)u
(cid:79)(cid:1195)n trong m(cid:1245)t giao tác. Lúc (cid:255)ó, thao tác ghi (cid:255)(cid:429)a ch(cid:1229) ph(cid:1191)i th(cid:1269)c hi(cid:1227)n m(cid:1245)t l(cid:1195)n
vào cu(cid:1237)i giao tác, t(cid:259)ng hi(cid:1227)u su(cid:1193)t lên (cid:255)áng k(cid:1223).
2.2.2
Semi transparent object loading:
Nh(cid:1133)(cid:3)(cid:255)ã (cid:255)(cid:1221) c(cid:1201)p (cid:1251) trên, PERST không dùng b(cid:1193)t c(cid:1261) b(cid:1245) biên d(cid:1231)ch hay ti(cid:1221)n x(cid:1265)
lý (cid:255)(cid:1211)c bi(cid:1227)t nào. Và vì C# không cung c(cid:1193)p thông tin v(cid:1221) các tr(cid:1189)ng thái
(behavior) hay s(cid:1269) thay (cid:255)(cid:1241)i tr(cid:1189)ng thái các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong th(cid:1249)i gian th(cid:1269)c thi
(runtime) nên không th(cid:1223) cài (cid:255)(cid:1211)t c(cid:1131) c(cid:1193)u l(cid:1133)u tr(cid:1267) c(cid:1259)a PERST hoàn toàn “trong
su(cid:1237)t” (transparent) (cid:255)(cid:1133)(cid:1255)c (ngh(cid:429)a là không th(cid:1223) truy xu(cid:1193)t các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c
(cid:79)(cid:1133)u tr(cid:1267) và không (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267) m(cid:1245)t cách hoàn toàn gi(cid:1237)ng nhau vì ta không th(cid:1223)
phân bi(cid:1227)t (cid:255)(cid:1133)(cid:1255)c khi nào ta (cid:255)ang truy xu(cid:1193)t vào (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267) hay
không (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267)). Thay cho s(cid:1269) cài (cid:255)(cid:1211)t “trong su(cid:1237)t” hoàn toàn, PERST (cid:255)ã
(cid:70)(cid:1237) g(cid:1203)ng cung c(cid:1193)p s(cid:1269) “trong su(cid:1237)t” trong (cid:255)a ph(cid:1195)n các tr(cid:1133)(cid:1249)ng h(cid:1255)p.
Giao di(cid:1227)n IPersistent cung c(cid:1193)p cho chúng ta ph(cid:1133)(cid:1131)ng th(cid:1261)c
recursiveLoading. Ph(cid:1133)(cid:1131)ng th(cid:1261)c này m(cid:1211)c (cid:255)(cid:1231)nh (cid:255)(cid:1133)(cid:1255)c cài (cid:255)(cid:1211)t b(cid:1205)ng cách tr(cid:1191) v(cid:1221)
(return) giá tr(cid:1231) true. Có ngh(cid:429)a là PERST s(cid:1217) load (vào b(cid:1245) nh(cid:1247) chính) m(cid:1245)t cách
(cid:255)(cid:1227) quy các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c tham chi(cid:1219)u t(cid:1263) m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ngu(cid:1239)n khi (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
ngu(cid:1239)n này (cid:255)(cid:1133)(cid:1255)c load. Có ngh(cid:429)a là c(cid:1131) ch(cid:1219) này s(cid:1217) gây ra vi(cid:1227)c load ng(cid:1195)m (cid:255)(cid:1231)nh
toàn b(cid:1245) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vào b(cid:1245) nh(cid:1247) chính. C(cid:1131) ch(cid:1219) này t(cid:1133)(cid:1131)ng t(cid:1269) cách làm vi(cid:1227)c
(cid:70)(cid:1259)a c(cid:1131) ch(cid:1219) “chu(cid:1243)i hóa” (serialization).
(cid:264)(cid:1223) tránh v(cid:1193)n (cid:255)(cid:1221) tràn b(cid:1245) nh(cid:1247) x(cid:1191)y ra khi load (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng lên b(cid:1245) nh(cid:1247) chính
(do c(cid:1131) ch(cid:1219) recursiveLoading gây ra), chúng ta ph(cid:1191)i quá t(cid:1191)i (overload)
ph(cid:1133)(cid:1131)ng th(cid:1261)c recursiveLoading trong m(cid:1245)t vài l(cid:1247)p b(cid:1205)ng cách tr(cid:1191) v(cid:1221) (return)
giá tr(cid:1231) false trong hàm. Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c tham chi(cid:1219)u t(cid:1263) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
- 21 -
thu(cid:1245)c các l(cid:1247)p (cid:255)ã nói trên s(cid:1217) không (cid:255)(cid:1133)(cid:1255)c load ng(cid:1195)m (cid:255)(cid:1231)nh n(cid:1267)a mà ph(cid:1191)i (cid:255)(cid:1133)(cid:1255)c
load m(cid:1245)t cách t(cid:1133)(cid:1249)ng minh b(cid:1205)ng ph(cid:1133)(cid:1131)ng th(cid:1261)c Persistent.Load. V(cid:1201)y ta th(cid:1193)y
(cid:85)(cid:1205)ng ph(cid:1133)(cid:1131)ng th(cid:1261)c recursiveLoading có th(cid:1223) dùng (cid:255)(cid:1223)(cid:3) (cid:255)(cid:76)(cid:1221)u khi(cid:1223)n cách th(cid:1261)c
load các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng t(cid:1263) b(cid:1245) nh(cid:1247) ph(cid:1257) vào b(cid:1245) nh(cid:1247) chính.
(cid:47)(cid:1133)u ý r(cid:1205)ng các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng dùng (cid:255)(cid:1223) ”ch(cid:1261)a” các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác (container
class) nh(cid:1133) Link,Relation,Index… ch(cid:1229) load các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng mà nó ch(cid:1261)a khi c(cid:1195)n
thi(cid:1219)t, không load t(cid:1193)t c(cid:1191) theo c(cid:1131) ch(cid:1219) recusiveLoading. Ngoài ra, vi(cid:1227)c truy xu(cid:1193)t
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng thành ph(cid:1195)n c(cid:1259)a m(cid:1245)t l(cid:1247)p ki(cid:1223)u container(cid:3) (cid:255)(cid:1221)u thông qua các
ph(cid:1133)(cid:1131)ng th(cid:1261)c c(cid:1259)a nó.
PERST dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o m(cid:1211)c (cid:255)(cid:1231)nh (không có tham s(cid:1237)) (cid:255)(cid:1223) kh(cid:1251)i
(cid:87)(cid:1189)o b(cid:1133)(cid:1247)c ban (cid:255)(cid:1195)u các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c load t(cid:1263) b(cid:1245) nh(cid:1247) ph(cid:1257). (cid:264)(cid:76)(cid:1221)u này có ngh(cid:429)a
là:
1.M(cid:1233)i l(cid:1247)p có kh(cid:1191) n(cid:259)ng l(cid:1133)u tr(cid:1267)(cid:3)(cid:255)(cid:1133)(cid:1255)c (persistent capable class) (cid:255)(cid:1221)u nên có
ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o m(cid:1211)c (cid:255)(cid:1231)nh (ho(cid:1211)c là không có ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o nào,
khi (cid:255)ó trình biên d(cid:1231)ch s(cid:1217) t(cid:1269) t(cid:1189)o ra cho ta). Ph(cid:1133)(cid:1131)ng th(cid:1261)c này có th(cid:1223) có m(cid:1233)i t(cid:1195)m
truy xu(cid:1193)t có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c (public, private,protected … ).
2.Ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o ch(cid:1229) kh(cid:1251)i t(cid:1189)o nh(cid:1267)ng thành ph(cid:1195)n không b(cid:1221)n v(cid:1267)ng,
không c(cid:1195)n l(cid:1133)u tr(cid:1267) (transient) c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
3.Ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o m(cid:1211)c (cid:255)(cid:1231)nh dùng (cid:255)(cid:1223) t(cid:1189)o nh(cid:1267)ng th(cid:1223) hi(cid:1227)n c(cid:1259)a các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c load t(cid:1263) b(cid:1245) nh(cid:1247) ph(cid:1257). V(cid:1201)y t(cid:1189)i th(cid:1249)i (cid:255)(cid:76)(cid:1223)m ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o m(cid:1211)c
(cid:255)(cid:1231)nh ho(cid:1189)t (cid:255)(cid:1245)ng các thành ph(cid:1195)n c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ch(cid:1133)a (cid:255)(cid:1133)(cid:1255)c gán các giá tr(cid:1231)(cid:3)(cid:255)(cid:1133)(cid:1255)c
(cid:79)(cid:1133)u tr(cid:1267) trong b(cid:1245) nh(cid:1247) ph(cid:1257). N(cid:1219)u ta mu(cid:1237)n các thành ph(cid:1195)n này c(cid:458)ng (cid:255)(cid:1133)(cid:1255)c kh(cid:1251)i
(cid:87)(cid:1189)o nh(cid:1133) các thành ph(cid:1195)n transient nói trên, ta c(cid:1195)n kh(cid:1251)i t(cid:1189)o chúng trong hàm
OnLoad, (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i ngay khi các giá tr(cid:1231) trong b(cid:1245) nh(cid:1247) ph(cid:1257)(cid:3) (cid:255)(cid:1133)(cid:1255)c load lên b(cid:1245)
- 22 -
nh(cid:1247) chính.
Tóm l(cid:1189)i, các c(cid:1131) ch(cid:1219) trên cho chúng ta s(cid:1269) thu(cid:1201)n ti(cid:1227)n, d(cid:1225) dàng và m(cid:1221)m d(cid:1215)o
trong l(cid:1201)p trình, vì nó không yêu c(cid:1195)u l(cid:1201)p trình viên ph(cid:1191)i load t(cid:1133)(cid:1249)ng minh các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong khi v(cid:1199)n cho phép vi(cid:1227)c này, nói cách khác là PERST h(cid:1243) tr(cid:1255)
(cid:79)(cid:1201)p trình viên trong vi(cid:1227)c ki(cid:1223)m soát vi(cid:1227)c load các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. Ch(cid:1229) có các l(cid:1247)p
“ch(cid:1261)a” các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác là ph(cid:1191)i load t(cid:1133)(cid:1249)ng minh các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng mà nó
ch(cid:1261)a (vì các l(cid:1247)p này (cid:255)ã m(cid:1211)c (cid:255)(cid:1231)nh (cid:255)(cid:1133)(cid:1255)c overload ph(cid:1133)(cid:1131)ng th(cid:1261)c
recursiveLoading(cid:3)(cid:255)(cid:1223) có giá tr(cid:1231) tr(cid:1191) v(cid:1221) (return) false).
2.2.3 Automatic scheme evaluation
PERST h(cid:1243) tr(cid:1255) “lazy automatic scheme evaluation”. Khi (cid:255)(cid:1231)nh ngh(cid:429)a c(cid:1259)a
(cid:80)(cid:1245)t l(cid:1247)p b(cid:1231) thay (cid:255)(cid:1241)i (thay (cid:255)(cid:1241)i v(cid:1221) s(cid:1237) l(cid:1133)(cid:1255)ng bi(cid:1219)n thành viên, thay (cid:255)(cid:1241)i v(cid:1221) ki(cid:1223)u
(cid:70)(cid:1259)a bi(cid:1219)n thành viên…), PERST s(cid:1217) chuy(cid:1223)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ã (cid:255)(cid:1133)(cid:1255)c load sang
(cid:255)(cid:1231)nh d(cid:1189)ng m(cid:1247)i. N(cid:1219)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó trong quá trình ho(cid:1189)t (cid:255)(cid:1245)ng có thay (cid:255)(cid:1241)i và
(cid:70)(cid:1195)n ph(cid:1191)i l(cid:1133)u, nó s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u d(cid:1133)(cid:1247)i d(cid:1189)ng m(cid:1247)i. PERST có kh(cid:1191) n(cid:259)ng h(cid:1243) tr(cid:1255) các
ki(cid:1223)u thay (cid:255)(cid:1241)i (cid:255)(cid:1231)nh d(cid:1189)ng sau:
1.Các thay (cid:255)(cid:1241)i “t(cid:1133)(cid:1131)ng thích” l(cid:1199)n nhau gi(cid:1267)a các ki(cid:1223)u d(cid:1267) li(cid:1227)u vô
(cid:75)(cid:1133)(cid:1247)ng (thay (cid:255)(cid:1241)i mà không c(cid:1203)t b(cid:1247)t d(cid:1267) li(cid:1227)u). Ví d(cid:1257) nh(cid:1133) thay (cid:255)(cid:1241)i t(cid:1263) ki(cid:1223)u int
sang float hay int sang long,… nh(cid:1133)ng ng(cid:1133)(cid:1255)c l(cid:1189)i thì không (cid:255)(cid:1133)(cid:1255)c.
2.Thay (cid:255)(cid:1241)i th(cid:1261) t(cid:1269) các thành ph(cid:1195)n trong l(cid:1247)p hay thêm, b(cid:1247)t các thành
ph(cid:1195)n trong l(cid:1247)p này vào l(cid:1247)p cha hay l(cid:1247)p d(cid:1199)n x(cid:1193)t c(cid:1259)a nó.
3.Thêm vào hay b(cid:1235) l(cid:1247)p kh(cid:1235)i cây th(cid:1263)a k(cid:1219) c(cid:1259)a l(cid:1247)p.
4.Thay (cid:255)(cid:1241)i (cid:255)(cid:1231)nh d(cid:1189)ng c(cid:1259)a l(cid:1247)p b(cid:1205)ng cách thay (cid:255)(cid:1241)i ý ngh(cid:429)a c(cid:1259)a các
giá tr(cid:1231).
(cid:48)(cid:1233)i thay (cid:255)(cid:1241)i khác trong c(cid:1193)u trúc l(cid:1247)p ((cid:255)(cid:1241)i tên cho thành ph(cid:1195)n, chuy(cid:1223)n ki(cid:1223)u
- 23 -
không t(cid:1133)(cid:1131)ng thích (cid:255)(cid:1237)i v(cid:1247)i các thành ph(cid:1195)n…) (cid:255)(cid:1221)u không (cid:255)(cid:1133)(cid:1255)c qu(cid:1191)n lý b(cid:1251)i c(cid:1131)
ch(cid:1219) thay (cid:255)(cid:1241)i c(cid:1193)u trúc d(cid:1267) li(cid:1227)u t(cid:1269)(cid:3)(cid:255)(cid:1245)ng c(cid:1259)a PERST. Trong các tr(cid:1133)(cid:1249)ng h(cid:1255)p này
ta có th(cid:1223) dùng c(cid:1131) ch(cid:1219) xu(cid:1193)t nh(cid:1201)p b(cid:1205)ng XML c(cid:1259)a PERST. C(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u có th(cid:1223)
(cid:255)(cid:1133)(cid:1255)c xu(cid:1193)t ra d(cid:1189)ng XML b(cid:1205)ng cách dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c Storage.exportXML,
(cid:87)(cid:1189)o l(cid:1189)i c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u theo (cid:255)(cid:1231)nh d(cid:1189)ng m(cid:1247)i r(cid:1239)i nh(cid:1201)p d(cid:1267) li(cid:1227)u vào b(cid:1205)ng ph(cid:1133)(cid:1131)ng
th(cid:1261)c Storage.importXML c(cid:1259)a PERST.
2.2.4
Relation:
(cid:48)(cid:1237)i quan h(cid:1227) m(cid:1245)t-m(cid:1245)t gi(cid:1267)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c th(cid:1223) hi(cid:1227)n
(cid:69)(cid:1205)ng tham chi(cid:1219)u (references) trong C#. Nh(cid:1133)ng trong nhi(cid:1221)u tr(cid:1133)(cid:1249)ng h(cid:1255)p chúng
ta c(cid:1195)n (cid:255)(cid:1219)n quan h(cid:1227) m(cid:1245)t-nhi(cid:1221)u hay quan h(cid:1227) nhi(cid:1221)u-nhi(cid:1221)u. PERST cung c(cid:1193)p
giao di(cid:1227)n (interface) Link dùng cho các tr(cid:1133)(cid:1249)ng h(cid:1255)p này. Giao di(cid:1227)n này (cid:255)(cid:1133)a ra
các ph(cid:1133)(cid:1131)ng th(cid:1261)c thêm, xóa, tìm ki(cid:1219)m… các thành ph(cid:1195)n c(cid:1259)a m(cid:1245)t “b(cid:1245)”
(relation) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent. Các thành ph(cid:1195)n c(cid:1259)a “b(cid:1245)” (relation) này
có th(cid:1223)(cid:3) (cid:255)(cid:1133)(cid:1255)c truy xu(cid:1193)t b(cid:1205)ng index hay ta có th(cid:1223) chuy(cid:1223)n chúng thành m(cid:1245)t
(cid:80)(cid:1191)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng r(cid:1239)i m(cid:1247)i truy xu(cid:1193)t.
T(cid:1201)p h(cid:1255)p (relation) có 2 d(cid:1189)ng:
1. D(cid:1189)ng “nhúng” (embedded relation): Các tham chi(cid:1219)u (cid:255)(cid:1219)n các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng t(cid:1263) m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c ch(cid:1261)a trong chính (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó.
2. D(cid:1189)ng (cid:255)(cid:1245)c l(cid:1201)p (standalone relation): Khi (cid:255)ó relation là m(cid:1245)t (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng riêng bi(cid:1227)t, ch(cid:1261)a các tham chi(cid:1219)u (cid:255)(cid:1219)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
C(cid:1191) hai d(cid:1189)ng trên (cid:255)(cid:1221)u cài (cid:255)(cid:1211)t giao di(cid:1227)n Link. C(cid:1257) th(cid:1223) Embedded
relation(cid:3) (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o b(cid:1205)ng cách dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c Storage.createLink, còn
Standalone relation thì dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c Storage.createRelation.
- 24 -
B(cid:1191)ng sau (cid:255)ây minh h(cid:1233)a các m(cid:1237)i quan h(cid:1227) gi(cid:1267)a 2 l(cid:1247)p A và B:
Ki(cid:1223)u quan h(cid:1227) Object A Object B
(cid:48)(cid:1245)t-m(cid:1245)t B bref; A aref;
(cid:48)(cid:1245)t-nhi(cid:1221)u Link bref; A aref;
Nhi(cid:1221)u-m(cid:1245)t B bref; Link aref;
Nhi(cid:1221)u-nhi(cid:1221)u Link bref; Link aref;
(cid:37)(cid:1191)ng 2.2.4-1 Các m(cid:1237)i quan h(cid:1227) gi(cid:1267)a 2 l(cid:1247)p A va B
2.2.5
Index:
Thông th(cid:1133)(cid:1249)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c truy xu(cid:1193)t t(cid:1263) m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác b(cid:1205)ng tham
chi(cid:1219)u hay b(cid:1205)ng Link nh(cid:1133) trên. Tuy nhiên, chúng ta c(cid:458)ng c(cid:1195)n truy xu(cid:1193)t các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng thông qua khóa. Trong môi tr(cid:1133)(cid:1249)ng.NET, l(cid:1247)p Hashtable là m(cid:1245)t ví d(cid:1257)
cho vi(cid:1227)c truy xu(cid:1193)t theo khóa này. (cid:264)(cid:1237)i v(cid:1247)i c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u, vi(cid:1227)c truy xu(cid:1193)t (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng theo khóa d(cid:429) nhiên là t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i ph(cid:1261)c t(cid:1189)p. Và vi(cid:1227)c cài (cid:255)(cid:1211)t trong PERST
(cid:75)(cid:1207)n m(cid:1245)t ch(cid:1261)c n(cid:259)ng d(cid:1231)ch các câu truy v(cid:1193)n SQL là không kh(cid:1191) thi vì nó s(cid:1217) làm
cho PERST phình to ra và ch(cid:1201)m (cid:255)i. Tuy nhiên trong ph(cid:1195)n l(cid:1247)n tr(cid:1133)(cid:1249)ng h(cid:1255)p,
các (cid:1261)ng d(cid:1257)ng ch(cid:1229) th(cid:1269)c hi(cid:1227)n các l(cid:1227)nh truy v(cid:1193)n d(cid:1267) li(cid:1227)u t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i (cid:255)(cid:1131)n gi(cid:1191)n nh(cid:1133)
tìm theo m(cid:1245)t khóa chính xác hay trong m(cid:1245)t kho(cid:1191)ng giá tr(cid:1231) nào (cid:255)ó. Trong
PERST vi(cid:1227)c này (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n b(cid:1205)ng cách cài (cid:255)(cid:1211)t các giao di(cid:1227)n (interface)
Index và FieldIndex. Giao di(cid:1227)n Index dùng cho các khóa (cid:255)(cid:1245)c l(cid:1201)p và các giá
tr(cid:1231) t(cid:1133)(cid:1131)ng (cid:1261)ng c(cid:1259)a khóa (cid:255)ó. Còn giao di(cid:1227)n FieldIndex thì dùng (cid:255)(cid:1223) l(cid:1201)p index
cho các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng v(cid:1247)i khóa chính là m(cid:1245)t thành ph(cid:1195)n c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
Index (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o trong PERST b(cid:1205)ng ph(cid:1133)(cid:1131)ng th(cid:1261)c Storage.createIndex(cid:3) (cid:255)(cid:1237)i
(cid:89)(cid:1247)i Index hay Storage.createFieldIndex(cid:3) (cid:255)(cid:1237)i v(cid:1247)i FieldIndex. Có th(cid:1223) có vài
- 25 -
cách cài (cid:255)(cid:1211)t Index nh(cid:1133)ng hi(cid:1227)n t(cid:1189)i PERST ch(cid:1229) dùng B+Tree (cid:255)(cid:1223) cài (cid:255)(cid:1211)t
(B+Tree là c(cid:1193)u trúc d(cid:1267) li(cid:1227)u hi(cid:1227)u qu(cid:1191) nh(cid:1193)t cho database trên b(cid:1245) nh(cid:1247) ph(cid:1257)). Các
ph(cid:1133)(cid:1131)ng th(cid:1261)c c(cid:1259)a giao di(cid:1227)n Index và FieldIndex cho phép thêm, xóa, tìm
ki(cid:1219)m (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng theo khóa b(cid:1205)ng giá tr(cid:1231) chính xác ho(cid:1211)c trong m(cid:1245)t kho(cid:1191)ng giá
tr(cid:1231) nào (cid:255)ó. Vì v(cid:1201)y các tr(cid:1133)(cid:1249)ng h(cid:1255)p tìm ki(cid:1219)m sau (cid:255)ây là th(cid:1269)c hi(cid:1227)n (cid:255)(cid:1133)(cid:1255)c:
1. Khóa b(cid:1205)ng giá tr(cid:1231) VAL.
2. Khóa thu(cid:1245)c kho(cid:1191)ng [MIN_VAL,MAX_VAL].
3. Khóa thu(cid:1245)c kho(cid:1191)ng [MIN_VAL,MAX_VAL).
4. Khóa thu(cid:1245)c kho(cid:1191)ng (MIN_VAL,MAX_VAL].
5. Khóa thu(cid:1245)c kho(cid:1191)ng (MIN_VAL,MAX_VAL).
6. Khóa l(cid:1247)n h(cid:1131)n giá tr(cid:1231) MIN_VAL.
7. Khóa l(cid:1247)n h(cid:1131)n hay b(cid:1205)ng giá tr(cid:1231) MIN_VAL.
8. Khóa bé h(cid:1131)n giá tr(cid:1231) MAX_VAL.
9. Khóa bé h(cid:1131)n hay b(cid:1205)ng giá tr(cid:1231) MAX_VAL.
Có m(cid:1245)t s(cid:1237) cách ch(cid:1233)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng theo khóa khác nhau nh(cid:1133) sau:
a.IPersistent get(Key key): Ch(cid:1233)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1205)ng khóa chính xác v(cid:1247)i khóa
này nên là khóa duy nh(cid:1193)t c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
b.IPersistent[] get(Key from,Key till): L(cid:1193)y ra m(cid:1245)t m(cid:1191)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng có khóa
(cid:81)(cid:1205)m trong m(cid:1245)t kho(cid:1191)ng giá tr(cid:1231) cho tr(cid:1133)(cid:1247)c gi(cid:1247)i h(cid:1189)n b(cid:1251)i giá tr(cid:1231) from và till.
Trong (cid:255)ó from và till có th(cid:1223) mang giá tr(cid:1231) tùy ý k(cid:1223) c(cid:1191) null.
c.IEnumerator GetEnumerator(): L(cid:1193)y ra m(cid:1245)t IEnumerator, có th(cid:1223) dùng
câu l(cid:1227)nh foreach (cid:255)(cid:1223) duy(cid:1227)t qua toàn b(cid:1245) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong index này theo
- 26 -
chi(cid:1221)u t(cid:259)ng c(cid:1259)a khóa.
d.IEnumerator GetEnumerator(Key from, Key till, IterationOrder order):
(cid:47)(cid:1193)y ra m(cid:1245)t IEnumerator v(cid:1247)i khóa n(cid:1205)m trong kho(cid:1191)ng giá tr(cid:1231) xác (cid:255)(cid:1231)nh b(cid:1251)i
from và till. Ta có th(cid:1223) duy(cid:1227)t qua IEnumerator này v(cid:1247)i chi(cid:1221)u khóa t(cid:259)ng hay
gi(cid:1191)m (cid:255)(cid:1221)u (cid:255)(cid:1133)(cid:1255)c.
(cid:49)(cid:1219)u c(cid:1195)n m(cid:1245)t t(cid:1201)p h(cid:1255)p các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng, chúng ta có th(cid:1223) s(cid:1265) d(cid:1257)ng ph(cid:1133)(cid:1131)ng th(cid:1261)c
Storage.createSet. T(cid:1201)p h(cid:1255)p (set)(cid:3) (cid:255)(cid:1133)(cid:1255)c cài (cid:255)(cid:1211)t b(cid:1205)ng B+Tree v(cid:1247)i object ID
(OID) là khóa.
Ngoài ra, PERST còn h(cid:1243) tr(cid:1255) r(cid:1193)t m(cid:1189)nh cho d(cid:1267) li(cid:1227)u “không gian” (spatial
data) b(cid:1205)ng cách cung c(cid:1193)p c(cid:1193)u trúc SpatialIndex h(cid:1243) tr(cid:1255) vi(cid:1227)c thêm, xóa, tìm
ki(cid:1219)m các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng “không gian” d(cid:1225) dàng. SpatialIndex(cid:3) (cid:255)(cid:1133)(cid:1255)c cài (cid:255)(cid:1211)t b(cid:1205)ng
(cid:70)(cid:1193)u trúc RTree c(cid:1259)a Guttman v(cid:1247)i thu(cid:1201)t toán “quadratic split” khá hi(cid:1227)u qu(cid:1191)
trong vi(cid:1227)c tìm ki(cid:1219)m các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng R2 (tìm ki(cid:1219)m các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng không gian
(cid:89)(cid:1247)i khóa tìm ki(cid:1219)m là các giá tr(cid:1231) liên quan (cid:255)(cid:1219)n t(cid:1233)a (cid:255)(cid:1245)).
B(cid:1191)ng d(cid:1133)(cid:1247)i (cid:255)ây tóm t(cid:1203)t các ki(cid:1223)u Index (cid:255)(cid:1133)(cid:1255)c PERST h(cid:1243) tr(cid:1255):
Interface Mô t(cid:1191) Cài (cid:255)(cid:1211)t Ph(cid:1133)(cid:1131)ng th(cid:1261)c t(cid:1189)o Ki(cid:1223)u c(cid:1259)a
khóa
Index B+Tree Storage.CreateIndex Ki(cid:1223)u vô Index dùng tìm ki(cid:1219)m
(cid:75)(cid:1133)(cid:1247)ng, (cid:71)(cid:1267) li(cid:1227)u b(cid:1205)ng khóa
chu(cid:1243)i hay chính xác ho(cid:1211)c n(cid:1205)m
ki(cid:1223)u tham trong m(cid:1245)t kho(cid:1191)ng
chi(cid:1219)u. xác (cid:255)(cid:1231)nh.
Index Nh(cid:1133) trên nh(cid:1133)ng áp Ki(cid:1223)u vô B+Tree Storage.CreateThinkI
- 27 -
(cid:71)(cid:1257)ng cho tr(cid:1133)(cid:1249)ng (cid:75)(cid:1133)(cid:1247)ng, ndex
(cid:75)(cid:1255)p có khóa trùng. chu(cid:1243)i hay
ki(cid:1223)u tham
hi(cid:1219)u.
Ki(cid:1223)u vô FieldIndex Index v(cid:1247)i khóa là B+Tree Storage.CreateFieldIn
(cid:75)(cid:1133)(cid:1247)ng, (cid:80)(cid:1245)t trong các dex
chu(cid:1243)i hay tr(cid:1133)(cid:1249)ng c(cid:1259)a l(cid:1247)p (cid:255)(cid:1133)(cid:1255)c
ki(cid:1223)u tham (cid:79)(cid:1201)p Index.
chi(cid:1219)u.
BitIndex Ki(cid:1223)u (cid:255)(cid:1237)i B+Tree Storage.CreaateBitInd BitIndex dùng
(cid:87)(cid:1133)(cid:1255)ng có ex tìm (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng v(cid:1247)i
kh(cid:1191) n(cid:259)ng khóa cógiá tr(cid:1231) nh(cid:1231)
(cid:79)(cid:1133)u tr(cid:1267). phân.
ISet B+Tree Storage.CreateSet (cid:55)(cid:1201)p h(cid:1255)p các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng có kh(cid:1191) n(cid:259)ng
(cid:79)(cid:1133)u tr(cid:1267).
Link Ki(cid:1223)u (cid:255)(cid:1237)i IPersisten (cid:55)(cid:1201)p h(cid:1255)p các (cid:255)(cid:1237)i Storage.CreateScalabl
ho(cid:1211)c (cid:87)(cid:1133)(cid:1255)ng có tSet (cid:87)(cid:1133)(cid:1255)ng có kh(cid:1191) n(cid:259)ng eSet
B+Tree kh(cid:1191) n(cid:259)ng (cid:79)(cid:1133)u tr(cid:1267)(cid:3) (cid:255)(cid:1133)(cid:1255)c và t(cid:1201)p
(cid:79)(cid:1133)u tr(cid:1267). (cid:75)(cid:1255)p này có kh(cid:1191) n(cid:259)ng
co giãn, có th(cid:1223) qu(cid:1191)n
lý (cid:255)(cid:1133)(cid:1255)c c(cid:1191) s(cid:1237) l(cid:1133)(cid:1255)ng
ít l(cid:1199)n s(cid:1237) l(cid:1133)(cid:1255)ng
- 28 -
nhi(cid:1221)u.
SpatialInd Index dành cho d(cid:1267) Rectangle R-Tree Storage.CreateSpatialI
ex li(cid:1227)u không gian. ndex
Rectangle SpatialInd Index dành cho d(cid:1267) R-Tree Storage.CreateSpatialI
R2 exR2 li(cid:1227)u không gian ndexR2
nh(cid:1133)ng có t(cid:1233)a (cid:255)(cid:1245)
th(cid:1269)c.
(cid:48)(cid:1233)i ki(cid:1223)u SortedCol Index v(cid:1247)i phép Toán T-Tree Storage.CreateStorage
lection so sánh do ng(cid:1133)(cid:1249)i Collection
dùng (cid:255)(cid:1231)nh ngh(cid:429)a.
(cid:37)(cid:1191)ng 2.2.5-1 Các ki(cid:1223)u Index (cid:255)(cid:1133)(cid:1255)c PERST h(cid:1243) tr(cid:1255):
2.2.6 Giao tác (Transaction):
(cid:1250)(cid:3) (cid:255)ây ta không (cid:255)(cid:1231)nh ngh(cid:429)a l(cid:1189)i chính xác giao tác là gì mà ch(cid:1229)(cid:3) (cid:255)(cid:1131)n gi(cid:1191)n
hình dung giao tác là m(cid:1245)t t(cid:1201)p các l(cid:1227)nh ph(cid:1191)i th(cid:1269)c hi(cid:1227)n và ph(cid:1191)i ho(cid:1211)c là th(cid:1269)c
hi(cid:1227)n toàn b(cid:1245) các l(cid:1227)nh (cid:255)ó ho(cid:1211)c là không l(cid:1227)nh nào (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n c(cid:1191). PERST
cung c(cid:1193)p tính n(cid:259)ng b(cid:1191)o v(cid:1227) s(cid:1269) nh(cid:1193)t quán c(cid:1259)a d(cid:1267) li(cid:1227)u trong tr(cid:1133)(cid:1249)ng h(cid:1255)p h(cid:1227)
th(cid:1237)ng hay (cid:1261)ng d(cid:1257)ng có l(cid:1243)i hay m(cid:1193)t (cid:255)(cid:76)(cid:1227)n ph(cid:1191)i t(cid:1203)t (cid:255)(cid:1245)t ng(cid:1245)t. C(cid:1131) ch(cid:1219) cài (cid:255)(cid:1211)t giao
tác s(cid:1217) giúp ta (cid:255)(cid:1191)m b(cid:1191)o (cid:255)(cid:76)(cid:1221)u này. (cid:264)(cid:1237)i v(cid:1247)i PERST, m(cid:1245)t giao tác (cid:255)(cid:1133)(cid:1255)c ng(cid:1195)m
(cid:255)(cid:1231)nh kh(cid:1251)i t(cid:1189)o khi b(cid:1193)t c(cid:1261) m(cid:1245)t l(cid:1227)nh update c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u nào (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n và
ch(cid:1193)m d(cid:1261)t t(cid:1133)(cid:1249)ng minh b(cid:1205)ng l(cid:1227)nh commit, rollback hay close.
Vi(cid:1227)c commit m(cid:1245)t giao tác s(cid:1217) làm cho các trang (page) b(cid:1231) thay (cid:255)(cid:1241)i trong
quá trình th(cid:1269)c hi(cid:1227)n giao tác (cid:255)(cid:1133)(cid:1255)c ghi vào b(cid:1245) nh(cid:1247) ph(cid:1257)(cid:3)(cid:255)(cid:1239)ng b(cid:1245) (Asynchronous
write: ch(cid:1133)(cid:1131)ng trình s(cid:1217) ch(cid:1249) cho vi(cid:1227)c ghi vào (cid:255)(cid:429)a xong m(cid:1247)i làm ti(cid:1219)p vi(cid:1227)c
- 29 -
khác). Công vi(cid:1227)c này là công vi(cid:1227)c có chi phí r(cid:1193)t cao. Trung bình vi(cid:1227)c (cid:255)(cid:1231)nh v(cid:1231)
(cid:255)(cid:1237)i v(cid:1247)i các (cid:1241)(cid:3)(cid:255)(cid:429)a hi(cid:1227)n (cid:255)(cid:1189)i là kho(cid:1191)ng 10ms, ngh(cid:429)a là ch(cid:1229) kho(cid:1191)ng 100 thao tác
(cid:255)(cid:1231)nh v(cid:1231) trong 1 giây. Thêm vào (cid:255)ó các giao tác th(cid:1133)(cid:1249)ng ch(cid:1261)a các thao tác
update kho(cid:1191)ng vài trang c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u nên trung bình ch(cid:1229) còn kho(cid:1191)ng 10 giao
tác m(cid:1243)i giây.
(cid:48)(cid:1211)c dù v(cid:1201)y, hi(cid:1227)u su(cid:1193)t th(cid:1269)c thi s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c nâng cao (cid:255)áng k(cid:1223) khi ta h(cid:1189)n ch(cid:1219) s(cid:1237)
(cid:79)(cid:1195)n th(cid:1269)c hi(cid:1227)n l(cid:1227)nh commit, có ngh(cid:429)a là m(cid:1245)t giao tác s(cid:1217) l(cid:1247)n h(cid:1131)n, th(cid:1269)c hi(cid:1227)n
nhi(cid:1221)u l(cid:1227)nh h(cid:1131)n. PERST dùng c(cid:1131) ch(cid:1219) t(cid:1189)o bóng (shadow mechanism) trong
vi(cid:1227)c th(cid:1269)c hi(cid:1227)n giao tác. Khi m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c thay (cid:255)(cid:1241)i l(cid:1195)n (cid:255)(cid:1195)u tiên trong
(cid:80)(cid:1245)t giao tác, m(cid:1245)t b(cid:1191)n copy (shadow) c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o ra và (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng g(cid:1237)c không thay (cid:255)(cid:1241)i. Cho dù (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng có (cid:255)(cid:1133)(cid:1255)c thay (cid:255)(cid:1241)i nhi(cid:1221)u l(cid:1195)n
trong giao tác (cid:255)ó thì c(cid:458)ng ch(cid:1229) có m(cid:1245)t b(cid:1191)n copy c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o ra.
Nh(cid:1133) v(cid:1201)y c(cid:1131) ch(cid:1219) này giúp PERST hoàn toàn không c(cid:1195)n (cid:255)(cid:1219)n các t(cid:1201)p tin log
trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u thông th(cid:1133)(cid:1249)ng và các giao tác dài không th(cid:1223) gây ra vi(cid:1227)c
tràn log giao tác nh(cid:1133) các h(cid:1227) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u khác. L(cid:1133)u ý r(cid:1205)ng n(cid:1219)u ta không g(cid:1233)i
(cid:79)(cid:1227)nh commit m(cid:1245)t cách t(cid:1133)(cid:1249)ng minh thì PERST s(cid:1217) ch(cid:1229) ho(cid:1189)t (cid:255)(cid:1245)ng m(cid:1245)t cách
thông th(cid:1133)(cid:1249)ng theo c(cid:1131) ch(cid:1219) không h(cid:1243) tr(cid:1255) giao tác.
Khuy(cid:1219)t (cid:255)(cid:76)(cid:1223)m duy nh(cid:1193)t c(cid:1259)a vi(cid:1227)c giao tác dài h(cid:1131)n bình th(cid:1133)(cid:1249)ng là kh(cid:1191) n(cid:259)ng
(cid:80)(cid:1193)t (cid:255)i nhi(cid:1221)u s(cid:1269) thay (cid:255)(cid:1241)i (cid:255)ã th(cid:1269)c hi(cid:1227)n (cid:255)(cid:1133)(cid:1255)c trong giao tác n(cid:1219)u giao tác h(cid:1235)ng
hay h(cid:1227) th(cid:1237)ng g(cid:1211)p s(cid:1269) c(cid:1237). Trong các tr(cid:1133)(cid:1249)ng h(cid:1255)p nh(cid:1133) v(cid:1201)y, d(cid:1267) li(cid:1227)u v(cid:1199)n (cid:255)(cid:1191)m b(cid:1191)o
tính nh(cid:1193)t quán (consistency) nh(cid:1133)ng các thao tác thay (cid:255)(cid:1241)i c(cid:1131) s(cid:1131) d(cid:1267) li(cid:1227)u trong
- 30 -
giao tác (cid:255)ó (cid:255)(cid:1221)u m(cid:1193)t.
2.3
Transparent API:
2.3.1 Dùng.NET Remoting API:
.NET framework cung c(cid:1193)p gói System.Runtime.Remoting nh(cid:1205)m h(cid:1243) tr(cid:1255) vi(cid:1227)c
cài (cid:255)(cid:1211)t các (cid:1261)ng d(cid:1257)ng phân tán. Ng(cid:1133)(cid:1249)i l(cid:1201)p trình ch(cid:1229) c(cid:1195)n d(cid:1199)n xu(cid:1193)t các l(cid:1247)p c(cid:1259)a
(cid:75)(cid:1233) t(cid:1263) l(cid:1247)p ContextBoundObject và dùng ContextAttribute(cid:3) (cid:255)(cid:1223) t(cid:1189)o message
sink: c(cid:1131) ch(cid:1219) dùng (cid:255)(cid:1223)(cid:3)(cid:255)(cid:76)(cid:1221)u khi(cid:1223)n vi(cid:1227)c g(cid:1233)i hàm và truy xu(cid:1193)t các thành ph(cid:1195)n c(cid:1259)a
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. Dùng API này không nh(cid:1267)ng áp d(cid:1257)ng cho các h(cid:1227) th(cid:1237)ng phân tán
mà còn cho các h(cid:1227) th(cid:1237)ng d(cid:1269)a trên giao th(cid:1261)c metaobject (metaobject
protocol): giao th(cid:1261)c (cid:255)(cid:76)(cid:1221)u khi(cid:1223)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. Ví d(cid:1257) ta có th(cid:1223)(cid:3)(cid:1261)ng d(cid:1257)ng chúng (cid:255)(cid:1223)
cài (cid:255)(cid:1211)t giao di(cid:1227)n “trong su(cid:1237)t” (transparent) cho c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng này, ngh(cid:429)a là vi(cid:1227)c thao tác trên các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng persistent hoàn toàn bình
th(cid:1133)(cid:1249)ng nh(cid:1133) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác.
PERST.NET ch(cid:1261)a 2 l(cid:1247)p PersistentContext và
TransparentPersistentAttribute dùng t(cid:1189)o tính “b(cid:1221)n v(cid:1267)ng” m(cid:1245)t cách “trong
su(cid:1237)t” cho các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1205)ng cách dùng.NET Remoting API. N(cid:1219)u các l(cid:1247)p c(cid:1259)a
(cid:1261)ng d(cid:1257)ng chúng ta (cid:255)(cid:1133)(cid:1255)c d(cid:1199)n xu(cid:1193)t t(cid:1263) l(cid:1247)p PersistentContext và (cid:255)(cid:1133)(cid:1255)c (cid:255)ánh d(cid:1193)u
(cid:69)(cid:1205)ng tính ch(cid:1193)t (attribute) TransparentPersistentAttribute, các thành ph(cid:1195)n c(cid:1259)a
nó s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c load t(cid:1269)(cid:3)(cid:255)(cid:1245)ng hay l(cid:1133)u t(cid:1269)(cid:3)(cid:255)(cid:1245)ng khi c(cid:1195)n thi(cid:1219)t (tr(cid:1133)(cid:1247)c (cid:255)ây ta (cid:255)(cid:1221)u ph(cid:1191)i
(cid:87)(cid:1269) làm các thao tác này). Vì hàm recursiveLoading trong l(cid:1247)p
PersistentContext tr(cid:1191) v(cid:1221) false nên các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c load ch(cid:1229) khi nào ta
truy xu(cid:1193)t nó.
Tuy nhiên có 2 gi(cid:1247)i h(cid:1189)n khi ta dùng remoting API:
1.Remoting API ch(cid:1229) có th(cid:1223) áp d(cid:1257)ng (cid:255)(cid:1237)i v(cid:1247)i các thành ph(cid:1195)n có t(cid:1195)m truy
- 31 -
xu(cid:1193)t public c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
2.Chi phí c(cid:1259)a vi(cid:1227)c g(cid:1233)i hàm thông qua remoting API cao g(cid:1193)p kho(cid:1191)ng 100
(cid:79)(cid:1195)n so v(cid:1247)i g(cid:1233)i hàm thông th(cid:1133)(cid:1249)ng.
2.3.2 Dùng các thu(cid:1245)c tính (cid:1191)o (virtual properties):
Có m(cid:1245)t ý t(cid:1133)(cid:1251)ng khác t(cid:1189)o nên s(cid:1269) “trong su(cid:1237)t” cho PERST d(cid:1269)a trên vi(cid:1227)c
dùng các thu(cid:1245)c tính (cid:1191)o (virtual properties). Không gi(cid:1237)ng nh(cid:1133) Java, C# cung
(cid:70)(cid:1193)p c(cid:1131) ch(cid:1219) cho phép (cid:255)óng gói các thu(cid:1245)c tính, thành ph(cid:1195)n c(cid:1259)a m(cid:1245)t l(cid:1247)p. Ý
(cid:87)(cid:1133)(cid:1251)ng ban (cid:255)(cid:1195)u r(cid:1193)t (cid:255)(cid:1131)n gi(cid:1191)n: T(cid:1189)o ra l(cid:1247)p bao b(cid:1233)c (wrapper class) s(cid:1217) cài (cid:255)(cid:1211)t các
thu(cid:1245)c tính này. Nh(cid:1133) v(cid:1201)y l(cid:1201)p trình viên s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c gi(cid:1191)i phóng kh(cid:1235)i nhi(cid:1221)u vi(cid:1227)c
nh(cid:1235) nh(cid:1211)t nh(cid:1133) không ph(cid:1191)i lo (cid:255)(cid:1219)n chuy(cid:1227)n quá t(cid:1191)i hàm recursiveLoading, hay
(cid:74)(cid:1233)i t(cid:1133)(cid:1249)ng minh hàm Load(cid:3)(cid:255)(cid:1223) load (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:458)ng nh(cid:1133)(cid:3)(cid:255)ánh d(cid:1193)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231)
thay (cid:255)(cid:1241)i b(cid:1251)i hàm Modify n(cid:1267)a…. Tuy nhiên cách này v(cid:1199)n có nh(cid:1267)ng h(cid:1189)n ch(cid:1219)
(cid:70)(cid:1259)a riêng nó:
1.(cid:264)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a chúng ta không (cid:255)(cid:1133)(cid:1255)c có các tr(cid:1133)(cid:1249)ng l(cid:1133)u tr(cid:1267)(cid:3) (cid:255)(cid:1133)(cid:1255)c
(persistent fields). Thay vì th(cid:1219), ta ph(cid:1191)i (cid:255)(cid:1231)nh ngh(cid:429)a các thu(cid:1245)c tính tr(cid:1263)u
(cid:87)(cid:1133)(cid:1255)ng. C# cung c(cid:1193)p c(cid:1131) ch(cid:1219) cho phép ta d(cid:1225) dàng làm vi(cid:1227)c v(cid:1247)i các thu(cid:1245)c
tính, nên vi(cid:1227)c l(cid:1201)p trình s(cid:1217)(cid:3)(cid:255)(cid:1253) n(cid:1211)ng n(cid:1221) h(cid:1131)n.
2.Ta c(cid:458)ng không th(cid:1223) t(cid:1189)o ra các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này b(cid:1205)ng toán t(cid:1265) new nh(cid:1133)
bình th(cid:1133)(cid:1249)ng. Ta ph(cid:1191)i dùng ph(cid:1133)(cid:1131)ng th(cid:1261)c IStorage.CreateClass dùng (cid:255)(cid:1223) t(cid:1189)o
(cid:79)(cid:1247)p bao b(cid:1233)c và t(cid:1189)o ra (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a l(cid:1247)p này. L(cid:1247)p này c(cid:458)ng không có hàm
kh(cid:1251)i t(cid:1189)o nào khác ngoài hàm kh(cid:1251)i t(cid:1189)o m(cid:1211)c (cid:255)(cid:1231)nh, và hàm kh(cid:1251)i t(cid:1189)o m(cid:1211)c (cid:255)(cid:1231)nh
này c(cid:458)ng không làm gì khác ngoài vi(cid:1227)c kh(cid:1251)i t(cid:1189)o các thành ph(cid:1195)n không
(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267) (vì hàm kh(cid:1251)i t(cid:1189)o này s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i m(cid:1243)i khi (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c
- 32 -
load t(cid:1263) b(cid:1245) nh(cid:1247) ph(cid:1257)).
3.Ta c(cid:458)ng không th(cid:1223) có thành ph(cid:1195)n c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng là m(cid:1191)ng các tham
chi(cid:1219)u (cid:255)(cid:1219)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng khác. Ta ph(cid:1191)i dùng PERST.PArray(cid:3)(cid:255)(cid:1223) thay th(cid:1219).
4.S(cid:1269) phát sinh l(cid:1247)p bao b(cid:1233)c nh(cid:1133) v(cid:1201)y có chi phí cao, làm gi(cid:1191)m hi(cid:1227)u su(cid:1193)t
ch(cid:1133)(cid:1131)ng trình n(cid:1219)u có nhi(cid:1221)u l(cid:1247)p.
5.Cu(cid:1237)i cùng, c(cid:1131) ch(cid:1219) này không (cid:255)(cid:1133)(cid:1255)c h(cid:1243) tr(cid:1255) trong môi tr(cid:1133)(cid:1249)ng .NET
Compact framework do môi tr(cid:1133)(cid:1249)ng này không h(cid:1243) tr(cid:1255) vi(cid:1227)c t(cid:1189)o mã trong
th(cid:1249)i gian th(cid:1269)c thi (runtime).
2.4
(cid:38)(cid:1131) ch(cid:1219) th(cid:1269)c hi(cid:1227)n giao tác (Transaction):
(cid:48)(cid:1243)i record hay (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong PERST có duy nh(cid:1193)t m(cid:1245)t s(cid:1237)(cid:3)(cid:255)(cid:1231)nh danh g(cid:1233)i
là OID. OID(cid:3)(cid:255)(cid:1133)(cid:1255)c dùng (cid:255)(cid:1223) tham chi(cid:1219)u gi(cid:1267)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng v(cid:1247)i nhau. (cid:264)(cid:1223)(cid:3)(cid:255)(cid:1231)nh
(cid:89)(cid:1231) chính xác m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1205)ng tham chi(cid:1219)u, OID c(cid:1259)a chúng (cid:255)(cid:1133)(cid:1255)c dùng nh(cid:1133)
ch(cid:1229) s(cid:1237) trong m(cid:1191)ng các (cid:255)(cid:1231)a ch(cid:1229) (offset) c(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong database.
(cid:48)(cid:1191)ng này (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i là m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (object index) và m(cid:1243)i thành
ph(cid:1195)n c(cid:1259)a m(cid:1191)ng này (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i là m(cid:1245)t m(cid:1257)c qu(cid:1191)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (object handle), gi(cid:1267)
(cid:255)(cid:1231)a ch(cid:1229) trong database c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. Có 2 b(cid:1191)n c(cid:1259)a m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
trong PERST, m(cid:1245)t là m(cid:1191)ng “hi(cid:1227)n hành” (current) và m(cid:1191)ng còn l(cid:1189)i g(cid:1233)i là
(cid:80)(cid:1191)ng “bóng” (shadow) c(cid:1259)a m(cid:1191)ng này. Header c(cid:1259)a database gi(cid:1267) con tr(cid:1235)(cid:3)(cid:255)(cid:1219)n
(cid:70)(cid:1191) hai m(cid:1191)ng này và có m(cid:1245)t bi(cid:1219)n ch(cid:1229)(cid:3)(cid:255)(cid:1231)nh (indicator) (cid:255)âu là m(cid:1191)ng “hi(cid:1227)n hành”
vào th(cid:1249)i (cid:255)(cid:76)(cid:1223)m hi(cid:1227)n t(cid:1189)i.
Khi m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231) thay (cid:255)(cid:1241)i l(cid:1195)n (cid:255)(cid:1195)u tiên, (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c copy ra
(cid:80)(cid:1245)t b(cid:1191)n khác và m(cid:1257)c qu(cid:1191)n c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
“hi(cid:1227)n hành” s(cid:1217) chuy(cid:1223)n sang tr(cid:1235) vào b(cid:1191)n copy c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này còn m(cid:1257)c
qu(cid:1191)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng “bóng” v(cid:1199)n tr(cid:1235) vào (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
- 33 -
(cid:74)(cid:1237)c. T(cid:1193)t c(cid:1191) các thay (cid:255)(cid:1241)i (cid:255)(cid:1221)u (cid:255)(cid:1133)(cid:1255)c làm trên b(cid:1191)n copy và b(cid:1191)n g(cid:1237)c (cid:255)(cid:1133)(cid:1255)c gi(cid:1267)
nguyên tr(cid:1189)ng. PERST s(cid:1217)(cid:3)(cid:255)ánh d(cid:1193)u trong trang Bitmap c(cid:1259)a m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng ch(cid:1261)a con tr(cid:1235)(cid:3)(cid:255)(cid:1219)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231) thay (cid:255)(cid:1241)i.
Lúc giao tác (transaction) (cid:255)(cid:1133)(cid:1255)c hoàn t(cid:1193)t và l(cid:1227)nh commit (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n,
(cid:255)(cid:1195)u tiên PERST s(cid:1217) ki(cid:1223)m tra xem kích th(cid:1133)(cid:1247)c c(cid:1259)a m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng có
(cid:87)(cid:259)ng hay không. N(cid:1219)u có, PERST c(cid:458)ng s(cid:1217) t(cid:259)ng kích th(cid:1133)(cid:1247)c cho m(cid:1191)ng ch(cid:1229) m(cid:1257)c
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng “bóng”. K(cid:1219)(cid:3)(cid:255)(cid:1219)n PERST s(cid:1217) gi(cid:1191)i phóng các vùng nh(cid:1247)(cid:3)(cid:255)(cid:1133)(cid:1255)c dùng b(cid:1251)i
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c, chính là các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c mà tr(cid:1133)(cid:1247)c (cid:255)ây (cid:255)ã dùng chúng
(cid:255)(cid:1223) t(cid:1189)o ra các b(cid:1191)n copy. Các vùng nh(cid:1247) này không th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c gi(cid:1191)i phóng tr(cid:1133)(cid:1247)c
khi giao tác commit vì nh(cid:1133) v(cid:1201)y có th(cid:1223) PERST s(cid:1217) c(cid:1193)p phát cho các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(cid:80)(cid:1247)i (cid:255)úng các vùng nh(cid:1247)(cid:3)(cid:255)ó, trong khi chúng ta mu(cid:1237)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c ch(cid:1261)a
trong vùng nh(cid:1247) này không (cid:255)(cid:1241)i. (cid:264)(cid:76)(cid:1221)u này (cid:1191)nh h(cid:1133)(cid:1251)ng (cid:255)(cid:1219)n tính nh(cid:1193)t quán c(cid:1259)a
(cid:70)(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u. Vì vi(cid:1227)c gi(cid:1191)i phóng vùng nh(cid:1247) trong PERST c(cid:458)ng (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c
hi(cid:1227)n thông qua Bitmap nên khi gi(cid:1191)i phóng c(cid:1195)n ph(cid:1191)i làm tr(cid:1237)ng m(cid:1245)t s(cid:1237) bit
trong trang Bitmap t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i các vùng nh(cid:1247) c(cid:1195)n xóa. Mà các trang
Bitmap này c(cid:458)ng (cid:255)(cid:1133)(cid:1255)c copy tr(cid:1133)(cid:1247)c khi s(cid:1269) thay (cid:255)(cid:1241)i x(cid:1191)y ra. Vi(cid:1227)c copy các
trang Bitmap này c(cid:458)ng (cid:255)òi h(cid:1235)i vùng nh(cid:1247), và ta có th(cid:1223) c(cid:458)ng dùng các vùng
nh(cid:1247) c(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231) gi(cid:1191)i phóng nh(cid:1133) trên. Rõ ràng (cid:255)(cid:76)(cid:1221)u này l(cid:1189)i vi ph(cid:1189)m
tính nh(cid:1193)t quán c(cid:1259)a c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u theo nh(cid:1133) lý do v(cid:1263)a nêu. T(cid:1193)t c(cid:1191) nh(cid:1267)ng (cid:255)(cid:76)(cid:1221)u
trên chính là lý do t(cid:1189)i sao vi(cid:1227)c gi(cid:1191)i phóng vùng nh(cid:1247) trong PERST (cid:255)(cid:1133)(cid:1255)c chia
thành hai b(cid:1133)(cid:1247)c. (cid:264)(cid:1195)u tiên, khi (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c copy, t(cid:1193)t c(cid:1191) các trang Bitmap
(cid:87)(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i vùng nh(cid:1247) c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:458)ng (cid:255)(cid:1133)(cid:1255)c copy theo (n(cid:1219)u tr(cid:1133)(cid:1247)c (cid:255)ó
ch(cid:1133)a (cid:255)(cid:1133)(cid:1255)c copy). Khi giao tác commit, PERST ch(cid:1229) vi(cid:1227)c làm tr(cid:1237)ng các bit
trong các trang Bitmap t(cid:1133)(cid:1131)ng (cid:1261)ng và t(cid:1189)i th(cid:1249)i (cid:255)(cid:76)(cid:1223)m này, không có m(cid:1245)t yêu
- 34 -
(cid:70)(cid:1195)u v(cid:1221) c(cid:1193)p phát b(cid:1245) nh(cid:1247) nào (cid:255)(cid:1133)(cid:1255)c phép phát sinh.
Sau khi gi(cid:1191)i phóng các vùng nh(cid:1247) thu(cid:1245)c v(cid:1221) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c, PERST s(cid:1217)
(cid:255)(cid:1239)ng lo(cid:1189)t ghi các trang b(cid:1231) thay (cid:255)(cid:1241)i lên (cid:255)(cid:429)a (cid:255)(cid:1223)(cid:3)(cid:255)(cid:1239)ng b(cid:1245) thông tin trên b(cid:1245) nh(cid:1247)
chính và trên (cid:255)(cid:429)a. Sau (cid:255)ó PERST s(cid:1217) chuy(cid:1223)n (cid:255)(cid:1241)i giá tr(cid:1231) bi(cid:1219)n ch(cid:1229)(cid:3) (cid:255)(cid:1231)nh
(indicator) ch(cid:1229) ra m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hi(cid:1227)n t(cid:1189)i trong database thành giá
tr(cid:1231) ch(cid:1229)(cid:3)(cid:255)(cid:1219)n m(cid:1191)ng “bóng” (cid:255)(cid:1223) chuy(cid:1223)n (cid:255)(cid:1241)i vai trò gi(cid:1267)a hai m(cid:1191)ng. Bây gi(cid:1249) m(cid:1191)ng
ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hi(cid:1227)n t(cid:1189)i chuy(cid:1223)n thành “bóng” và m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
“bóng” s(cid:1217) tr(cid:1251) thành m(cid:1191)ng hi(cid:1227)n t(cid:1189)i. Ti(cid:1219)p theo m(cid:1245)t l(cid:1195)n n(cid:1267)a PERST s(cid:1217) ghi trang
ch(cid:1261)a header b(cid:1231) thay (cid:255)(cid:1241)i c(cid:1259)a database lên (cid:255)(cid:429)a, chuy(cid:1223)n database sang tr(cid:1189)ng thái
nh(cid:1193)t quán m(cid:1247)i. Cu(cid:1237)i cùng PERST s(cid:1217) copy t(cid:1193)t c(cid:1191) các m(cid:1257)c qu(cid:1191)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231)
thay (cid:255)(cid:1241)i t(cid:1263) m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng “bóng” (tr(cid:1133)(cid:1247)c (cid:255)ây là hi(cid:1227)n t(cid:1189)i) sang m(cid:1191)ng
ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hi(cid:1227)n t(cid:1189)i (tr(cid:1133)(cid:1247)c kia là m(cid:1191)ng “bóng”). Vào th(cid:1249)i (cid:255)(cid:76)(cid:1223)m này,
(cid:81)(cid:1245)i dung c(cid:1259)a c(cid:1191) hai m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ã (cid:255)(cid:1239)ng nh(cid:1193)t và PERST có th(cid:1223)
(cid:69)(cid:1203)t (cid:255)(cid:1195)u m(cid:1245)t giao tác m(cid:1247)i.
Bitmap c(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231) thay (cid:255)(cid:1241)i có tác d(cid:1257)ng gi(cid:1191)m th(cid:1249)i gian commit
giao tác. Không ph(cid:1191)i t(cid:1193)t c(cid:1191) m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1133)(cid:1255)c copy mà ch(cid:1229) có các trang b(cid:1231)
thay (cid:255)(cid:1241)i m(cid:1247)i (cid:255)(cid:1133)(cid:1255)c copy, Sau khi giao tác commit, Bitmap (cid:255)(cid:1133)(cid:1255)c làm tr(cid:1237)ng
nh(cid:1133)(cid:3)(cid:255)ã nói (cid:1251) trên.
Khi giao tác (cid:255)(cid:1133)(cid:1255)c b(cid:1235), không cho th(cid:1269)c hi(cid:1227)n n(cid:1267)a b(cid:1205)ng l(cid:1227)nh Storage.rollback
(cid:80)(cid:1245)t cách t(cid:1133)(cid:1249)ng minh, m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng “bóng” s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c copy ng(cid:1133)(cid:1255)c
(cid:79)(cid:1189)i vào m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hi(cid:1227)n t(cid:1189)i, có ngh(cid:429)a là các thay (cid:255)(cid:1241)i n(cid:1219)u có
tr(cid:1133)(cid:1247)c (cid:255)ó (cid:255)(cid:1221)u không có hi(cid:1227)u l(cid:1269)c. Sau khi copy, hai m(cid:1191)ng ch(cid:1229) m(cid:1257)c l(cid:1189)i (cid:255)(cid:1239)ng
nh(cid:1193)t và c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u l(cid:1189)i tr(cid:1251) v(cid:1221) tr(cid:1189)ng thái nh(cid:1193)t quán tr(cid:1133)(cid:1247)c khi th(cid:1269)c hi(cid:1227)n giao
tác.
(cid:54)(cid:1269) c(cid:1193)p phát vùng nh(cid:1247) cho các m(cid:1257)c qu(cid:1191)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n b(cid:1205)ng
- 35 -
freehandle list. Header c(cid:1259)a list c(cid:458)ng (cid:255)(cid:1133)(cid:1255)c copy và c(cid:1191) hai b(cid:1191)n c(cid:1259)a header này
cùng (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u trên header c(cid:1259)a database. S(cid:1269) chuy(cid:1223)n qua l(cid:1189)i gi(cid:1267)a hai b(cid:1191)n này
(cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n t(cid:1133)(cid:1131)ng t(cid:1269) nh(cid:1133) vi(cid:1227)c chuy(cid:1223)n qua l(cid:1189)i gi(cid:1267)a hai m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng. Khi không còn ch(cid:1243) tr(cid:1237)ng trong m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng, m(cid:1191)ng s(cid:1217)
(cid:255)(cid:1133)(cid:1255)c c(cid:1193)p phát thêm. M(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng là th(cid:1261) duy nh(cid:1193)t trong c(cid:1131) s(cid:1251) d(cid:1267)
li(cid:1227)u không (cid:255)(cid:1133)(cid:1255)c copy trong quá trình thay (cid:255)(cid:1241)i. Thay vì th(cid:1219), PERST luôn luôn
(cid:86)(cid:1265) d(cid:1257)ng hai b(cid:1191)n c(cid:1259)a m(cid:1191)ng này (m(cid:1245)t b(cid:1191)n hi(cid:1227)n t(cid:1189)i và m(cid:1245)t b(cid:1191)n “bóng”).
Có m(cid:1245)t vài giá tr(cid:1231) OID (cid:255)(cid:1133)(cid:1255)c dành riêng cho các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1211)c bi(cid:1227)t trong
PERST. Giá tr(cid:1231) OID 0 dùng cho các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng không h(cid:1255)p l(cid:1227) ví d(cid:1257) nh(cid:1133) các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ã b(cid:1231) xóa. Các giá tr(cid:1231) OID b(cid:1203)t (cid:255)(cid:1195)u t(cid:1263) 1 (cid:255)(cid:1133)(cid:1255)c dùng cho các trang
Bitmap. S(cid:1237) trang Bitmap l(cid:1189)i tùy thu(cid:1245)c vào l(cid:1133)(cid:1255)ng b(cid:1245) nh(cid:1247)(cid:3)(cid:1191)o t(cid:1237)i (cid:255)a c(cid:1259)a c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u. Ví d(cid:1257) v(cid:1247)i 1tetrabyte b(cid:1245) nh(cid:1247)(cid:3)(cid:1191)o thì kích th(cid:1133)(cid:1247)c trang 8Kb, kích th(cid:1133)(cid:1247)c
(cid:255)(cid:1131)n v(cid:1231) vùng nh(cid:1247) c(cid:1193)p phát (allocation quantum) 64 byte và 32K trang Bitmap
là các s(cid:1237) li(cid:1227)u t(cid:1133)(cid:1131)ng (cid:1261)ng. Có ngh(cid:429)a là 32K m(cid:1257)c qu(cid:1191)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c dành
riêng cho các trang Bitmap trong m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. Các trang Bitmap
(cid:255)(cid:1133)(cid:1255)c c(cid:1193)p phát khi c(cid:1195)n thi(cid:1219)t khi mà kích th(cid:1133)(cid:1247)c database t(cid:259)ng lên. Theo các s(cid:1237)
li(cid:1227)u trên thì rõ ràng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a ng(cid:1133)(cid:1249)i dùng (cid:255)(cid:1195)u tiên s(cid:1217) mang giá tr(cid:1231) OID
(cid:69)(cid:1205)ng 0x8002 (t(cid:1261)c là 32K + 2).
Quá trình ph(cid:1257)c h(cid:1239)i c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u trong PERST c(cid:458)ng (cid:255)(cid:1131)n gi(cid:1191)n. Khi ta m(cid:1251)
(cid:70)(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u, PERST s(cid:1217) ki(cid:1223)m tra xem c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u tr(cid:1133)(cid:1247)c (cid:255)ó có (cid:255)(cid:1133)(cid:1255)c (cid:255)óng
(cid:255)úng cách không. N(cid:1219)u không (c(cid:1249) dirty (cid:255)(cid:1133)(cid:1255)c b(cid:1201)t lên trong header c(cid:1259)a
database), PERST s(cid:1217) th(cid:1269)c hi(cid:1227)n vi(cid:1227)c ph(cid:1257)c h(cid:1239)i (t(cid:1133)(cid:1131)ng t(cid:1269) nh(cid:1133) c(cid:1131) ch(cid:1219) rollbachk
(cid:255)ã (cid:255)(cid:1221) c(cid:1201)p phía trên). PERST s(cid:1217) làm nh(cid:1133) sau:
Bi(cid:1219)n ch(cid:1229)(cid:3)(cid:255)(cid:1231)nh ch(cid:1229) ra m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hi(cid:1227)n t(cid:1189)i s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c PERST dùng
(cid:255)(cid:1223) quy(cid:1219)t (cid:255)(cid:1231)nh xem m(cid:1191)ng nào là m(cid:1191)ng t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i tr(cid:1189)ng thái nh(cid:1193)t quán.
- 36 -
Khi (cid:255)ó, PERST s(cid:1217) copy các m(cid:1257)c qu(cid:1191)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong m(cid:1191)ng này sang m(cid:1191)ng
còn l(cid:1189)i, các thay (cid:255)(cid:1241)i th(cid:1269)c hi(cid:1227)n tr(cid:1133)(cid:1247)c (cid:255)ó n(cid:1219)u có (cid:255)(cid:1221)u không cón hi(cid:1227)u l(cid:1269)c,
PERST l(cid:1189)i tr(cid:1251) v(cid:1221) v(cid:1247) tr(cid:1189)ng thái nh(cid:1193)t quán.
Th(cid:1201)t s(cid:1269) quá trình recovery ch(cid:1229) làm chuy(cid:1227)n copy trên (ch(cid:1229) nh(cid:1267)ng m(cid:1257)c qu(cid:1191)n
có giá tr(cid:1231) khác nhau trên hai m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng m(cid:1247)i (cid:255)(cid:1133)(cid:1255)c copy (cid:255)(cid:1223) gi(cid:1191)m
(cid:86)(cid:1237) trang c(cid:1195)n ghi lên (cid:255)(cid:429)a) và kích th(cid:1133)(cid:1247)c c(cid:1259)a m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:458)ng nh(cid:1235)
nên vi(cid:1227)c ph(cid:1257)c h(cid:1239)i di(cid:1225)n ra r(cid:1193)t nhanh. (cid:264)(cid:76)(cid:1221)u này giúp gi(cid:1191)m th(cid:1249)i gian “out-of-
service” c(cid:1259)a (cid:1261)ng d(cid:1257)ng.
2.5
Nh(cid:1267)ng tr(cid:1133)(cid:1249)ng h(cid:1255)p nên dùng PERST:
PERST là c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u dành cho l(cid:1201)p trình t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i (cid:255)(cid:1131)n gi(cid:1191)n và nhanh.
(cid:49)(cid:1219)u (cid:1261)ng d(cid:1257)ng c(cid:1259)a chúng ta c(cid:1195)n có c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u (cid:255)(cid:1131)n, không th(cid:1269)c hi(cid:1227)n nh(cid:1267)ng
thao tác truy xu(cid:1193)t d(cid:1267) li(cid:1227)u quá “l(cid:1203)t léo” và cái chúng ta c(cid:1195)n là kh(cid:1191) n(cid:259)ng l(cid:1133)u
tr(cid:1267), truy xu(cid:1193)t, (cid:255)(cid:1231)nh v(cid:1231) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u thông qua tham chi(cid:1219)u
hay qua khóa thì PERST r(cid:1193)t thích h(cid:1255)p. Trong các tr(cid:1133)(cid:1249)ng h(cid:1255)p này PERST s(cid:1217)
có hi(cid:1227)u n(cid:259)ng làm vi(cid:1227)c t(cid:1237)t h(cid:1131)n so v(cid:1247)i các c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u quan h(cid:1227) hay các c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ph(cid:1261)c t(cid:1189)p h(cid:1131)n khác.
Ta s(cid:1217)(cid:3)(cid:255)(cid:76)(cid:1223)m qua l(cid:1189)i các tính n(cid:259)ng n(cid:1241)i b(cid:1201)t c(cid:1259)a PERST:
1.K(cid:1219)t h(cid:1255)p ch(cid:1211)t ch(cid:1217), t(cid:1269) nhiên v(cid:1247)i m(cid:1245)t s(cid:1237) ngôn ng(cid:1267) l(cid:1201)p trình thông d(cid:1257)ng
nh(cid:1193)t (cid:255)(cid:1231)nh (Hi(cid:1227)n t(cid:1189)i ch(cid:1229) m(cid:1247)i h(cid:1243) tr(cid:1255) Java và C#).
2.Mô hình d(cid:1267) li(cid:1227)u trong (cid:1261)ng d(cid:1257)ng và database g(cid:1195)n nh(cid:1133) t(cid:1133)(cid:1131)ng t(cid:1269) nhau.
3.D(cid:1225) dàng s(cid:1265) d(cid:1257)ng.
4.Yêu c(cid:1195)u không cao (PERST package ch(cid:1229) có dung l(cid:1133)(cid:1255)ng 51Kb và PERST
có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c c(cid:1193)u hình l(cid:1189)i sao cho có th(cid:1223) dùng ít b(cid:1245) nh(cid:1247) chính và ph(cid:1257) khi
- 37 -
làm vi(cid:1227)c).
5.Hi(cid:1227)u n(cid:259)ng cao (không có các chi phí cho vi(cid:1227)c truy(cid:1221)n thông, khóa, phân
tích cú pháp các câu SQL và th(cid:1269)c hi(cid:1227)n các câu truy v(cid:1193)n).
6.Kh(cid:1191) n(cid:259)ng ch(cid:1231)u l(cid:1243)i t(cid:1237)t (c(cid:1131) ch(cid:1219) th(cid:1269)c hi(cid:1227)n giao tác).
7.Kh(cid:1191) n(cid:259)ng ph(cid:1257)c h(cid:1239)i nhanh chóng khi g(cid:1211)p s(cid:1269) c(cid:1237).
8.Không c(cid:1195)n ph(cid:1191)i qu(cid:1191)n lý database nhi(cid:1221)u vì database ch(cid:1229) bao g(cid:1239)m m(cid:1245)t file
duy nh(cid:1193)t, vi(cid:1227)c các file log c(cid:1259)a database quá l(cid:1247)n s(cid:1217) không còn n(cid:1267)a, hi(cid:1227)u
(cid:81)(cid:259)ng làm vi(cid:1227)c s(cid:1217) t(cid:259)ng cao.
(cid:39)(cid:429) nhiên, PERST c(cid:458)ng có các khuy(cid:1219)t (cid:255)(cid:76)(cid:1223)m t(cid:1133)(cid:1131)ng (cid:1261)ng:
1. Không h(cid:1243) tr(cid:1255) ngôn ng(cid:1267) truy v(cid:1193)n.
2. Không thích h(cid:1255)p cho vi(cid:1227)c h(cid:1243) tr(cid:1255)(cid:3)(cid:255)a ng(cid:1133)(cid:1249)i dùng truy c(cid:1201)p database (N(cid:1219)u
mu(cid:1237)n chúng ta ph(cid:1191)i t(cid:1269) thi(cid:1219)t k(cid:1219) m(cid:1245)t server riêng, server này s(cid:1217) nh(cid:1201)n các
yêu c(cid:1195)u t(cid:1263) client r(cid:1239)i tu(cid:1195)n t(cid:1269) truy xu(cid:1193)t database r(cid:1239)i m(cid:1247)i g(cid:1265)i k(cid:1219)t qu(cid:1191) v(cid:1221) cho
client).
3. Không h(cid:1243) tr(cid:1255) vi(cid:1227)c phân tán d(cid:1267) li(cid:1227)u.
4. Không tuân theo m(cid:1245)t chu(cid:1197)n nào c(cid:1191) (Ví d(cid:1257) không tuân theo chu(cid:1197)n
ODMG).
2.6
Các thông s(cid:1237) c(cid:1259)a PERST:
Ph(cid:1195)n này chúng ta s(cid:1217) xem xét sâu h(cid:1131)n v(cid:1221) các thông s(cid:1237) c(cid:1259)a database và các
cách s(cid:1265) d(cid:1257)ng chúng (cid:255)(cid:1223) t(cid:259)ng hi(cid:1227)u n(cid:259)ng.
(cid:55)(cid:1237)c (cid:255)(cid:1245) truy xu(cid:1193)t (cid:255)(cid:429)a là r(cid:1193)t ch(cid:1201)m so v(cid:1247)i t(cid:1237)c (cid:255)(cid:1245) truy xu(cid:1193)t b(cid:1245) nh(cid:1247) chính. Vì
(cid:89)(cid:1201)y l(cid:1133)u gi(cid:1267) các d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c truy xu(cid:1193)t th(cid:1133)(cid:1249)ng xuyên (data caching) là chìa
khóa chính (cid:255)(cid:1223) t(cid:259)ng hi(cid:1227)u n(cid:259)ng làm vi(cid:1227)c c(cid:1259)a c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u. PERST dùng “ pool
- 38 -
of pages” (cid:255)(cid:1223) t(cid:1237)i (cid:1133)u hóa vi(cid:1227)c truy c(cid:1201)p (cid:255)(cid:429)a. Kích th(cid:1133)(cid:1247)c c(cid:1259)a page pool có th(cid:1223)
(cid:255)(cid:1133)(cid:1255)c xác (cid:255)(cid:1231)nh trong ph(cid:1133)(cid:1131)ng th(cid:1261)c Storage.Open khi m(cid:1251) database (giá tr(cid:1231) m(cid:1211)c
(cid:255)(cid:1231)nh c(cid:1259)a thông s(cid:1237) này là 4Mb). Thông th(cid:1133)(cid:1249)ng t(cid:259)ng kích th(cid:1133)(cid:1247)c page pool s(cid:1217)
(cid:87)(cid:259)ng hi(cid:1227)u n(cid:259)ng làm vi(cid:1227)c c(cid:1259)a ch(cid:1133)(cid:1131)ng trình. Nh(cid:1133)ng chúng ta ph(cid:1191)i l(cid:1133)u ý nh(cid:1267)ng
(cid:255)(cid:76)(cid:1223)m sau tr(cid:1133)(cid:1247)c khi quy(cid:1219)t (cid:255)(cid:1231)nh có t(cid:259)ng kích th(cid:1133)(cid:1247)c page pool hay không.
1. Có th(cid:1223)(cid:3)(cid:1261)ng d(cid:1257)ng ch(cid:1229)(cid:3)(cid:255)(cid:1133)(cid:1255)c c(cid:1193)p m(cid:1245)t l(cid:1133)(cid:1255)ng nh(cid:1193)t (cid:255)(cid:1231)nh memory nào (cid:255)ó khi
làm vi(cid:1227)c thôi.
2. N(cid:1219)u chúng ta t(cid:1189)o ra page pool có kích th(cid:1133)(cid:1247)c quá l(cid:1247)n, không (cid:255)(cid:1223) l(cid:1189)i (cid:255)(cid:1259)
ch(cid:1243) cho h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành và các (cid:1261)ng d(cid:1257)ng khác làm vi(cid:1227)c thì toàn b(cid:1245) h(cid:1227) th(cid:1237)ng
(cid:86)(cid:1217) b(cid:1231)(cid:3)(cid:1191)nh h(cid:1133)(cid:1251)ng chung, s(cid:1217) gi(cid:1191)m hi(cid:1227)u n(cid:259)ng do h(cid:1227) th(cid:1237)ng ph(cid:1191)i swap b(cid:1245) nh(cid:1247)
liên t(cid:1257)c.
3. B(cid:1191)n thân h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành c(cid:458)ng có c(cid:1131) ch(cid:1219) cache d(cid:1267) li(cid:1227)u c(cid:1259)a riêng mình
(cid:69)(cid:1205)ng file buffer. V(cid:1201)y d(cid:1267) li(cid:1227)u th(cid:1201)t s(cid:1269)(cid:3)(cid:255)(cid:1133)(cid:1255)c cache hai l(cid:1195)n. Tuy nhiên vi(cid:1227)c
truy xu(cid:1193)t d(cid:1267) li(cid:1227)u t(cid:1263) page pool s(cid:1217) nhanh h(cid:1131)n do không ph(cid:1191)i có các l(cid:1227)nh g(cid:1233)i
hàm h(cid:1227) th(cid:1237)ng c(cid:458)ng nh(cid:1133) chuy(cid:1223)n ng(cid:1267) c(cid:1191)nh (switch context) khi g(cid:1233)i hàm.
4. Vi(cid:1227)c t(cid:1189)o page pool có kích th(cid:1133)(cid:1247)c quá nh(cid:1235) ho(cid:1211)c th(cid:1201)m chí b(cid:1205)ng 0 (giao
vi(cid:1227)c cache data toàn b(cid:1245) cho h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành) c(cid:458)ng không th(cid:1223) vì s(cid:1217) gây ra l(cid:1243)i.
Khi d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c truy c(cid:1201)p t(cid:1263) b(cid:1245) nh(cid:1247) ph(cid:1257), nó s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1133)a lên ch(cid:1261)a trong
page pool. Có ngh(cid:429)a là page pool ph(cid:1191)i (cid:255)(cid:1133)(cid:1255)c thi(cid:1219)t l(cid:1201)p cho (cid:255)(cid:1259) l(cid:1247)n (cid:255)(cid:1223) có th(cid:1223)
ch(cid:1261)a (cid:255)(cid:1133)(cid:1255)c các trang này. Vì v(cid:1201)y, không nên t(cid:1189)o page pool có kích th(cid:1133)(cid:1247)c
bé h(cid:1131)n 64kb.
(cid:49)(cid:1219)u chúng ta ngh(cid:429) r(cid:1205)ng m(cid:1233)i d(cid:1267) li(cid:1227)u nên (cid:255)(cid:1223) h(cid:1219)t trong b(cid:1245) nh(cid:1247) chính, chúng
ta có th(cid:1223) dùng h(cid:1205)ng s(cid:1237) Storage.INFINITE_PAGE_POOL trong ph(cid:1133)(cid:1131)ng th(cid:1261)c
Storage.Open c(cid:1259)a database. Trong tr(cid:1133)(cid:1249)ng h(cid:1255)p này, page pool s(cid:1217) t(cid:1269)(cid:3) (cid:255)(cid:1245)ng
- 39 -
(cid:255)(cid:1133)(cid:1255)c t(cid:259)ng kích th(cid:1133)(cid:1247)c m(cid:1243)i khi có m(cid:1245)t trang m(cid:1247)i c(cid:1195)n (cid:255)(cid:1133)a vào b(cid:1245) nh(cid:1247) chính.
Có ngh(cid:429)a là l(cid:1195)n l(cid:1133)(cid:1255)t m(cid:1233)i trang s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c cache và hi(cid:1227)n di(cid:1227)n trong b(cid:1245) nh(cid:1247)
chính, chúng ch(cid:1229)(cid:3)(cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1233)c t(cid:1263) b(cid:1245) nh(cid:1247) ph(cid:1257) l(cid:1195)n (cid:255)(cid:1195)u tiên thôi. Trong tr(cid:1133)(cid:1249)ng h(cid:1255)p
này “strong object cache” s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c dùng thay vì “weak object cache”. Có
ngh(cid:429)a là (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c l(cid:1193)y ra t(cid:1263) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u trong b(cid:1245) nh(cid:1247)
chính và (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ch(cid:1229)(cid:3)(cid:255)(cid:1133)(cid:1255)c c(cid:1195)n (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1233)c m(cid:1245)t l(cid:1195)n thôi. Chúng ta c(cid:458)ng c(cid:1195)n
(cid:79)(cid:1133)u ý r(cid:1205)ng kích th(cid:1133)(cid:1247)c database trong b(cid:1245) nh(cid:1247) chính s(cid:1217) l(cid:1247)n h(cid:1131)n trên b(cid:1245) nh(cid:1247)
ph(cid:1257) vì các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng s(cid:1217) t(cid:1239)n t(cid:1189)i trong b(cid:1245) nh(cid:1247) chính d(cid:1133)(cid:1247)i c(cid:1191) hai d(cid:1189)ng: D(cid:1189)ng
“g(cid:1237)c”(packed: trong trang ch(cid:1261)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng) và d(cid:1189)ng “(cid:255)ã có hình dáng”
(unpacked: tham chi(cid:1219)u t(cid:1263) b(cid:1245) cach (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng).
Trong m(cid:1245)t vài (cid:1261)ng d(cid:1257)ng (nh(cid:1133) các (cid:1261)ng d(cid:1257)ng trên các thi(cid:1219)t b(cid:1231) di (cid:255)(cid:1245)ng), kh(cid:1191)
(cid:81)(cid:259)ng l(cid:1133)u tr(cid:1267) là không c(cid:1195)n thi(cid:1219)t nh(cid:1133)ng các l(cid:1247)p bao ch(cid:1261)a (container class) c(cid:1259)a
PERST nh(cid:1133) Link, Index, FieldIndex, SpatialIndex… v(cid:1199)n có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c dùng.
Trong tr(cid:1133)(cid:1249)ng h(cid:1255)p này ta s(cid:1217) dùng cài (cid:255)(cid:1211)t NullFile c(cid:1259)a interface IFile cùng v(cid:1247)i
thông s(cid:1237) Storage.INFINITE_PAGE_POOL (cid:255)(cid:1223) t(cid:1189)o ra “database” trong b(cid:1245)
nh(cid:1247) chính. Data trong tr(cid:1133)(cid:1249)ng h(cid:1255)p này s(cid:1217) không ph(cid:1191)i ghi vào b(cid:1245) nh(cid:1247) ph(cid:1257).
Có m(cid:1245)t vài h(cid:1205)ng s(cid:1237)(cid:3) (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)nh ngh(cid:429)a s(cid:1209)n trong l(cid:1247)p StorageImpl có (cid:1191)nh
(cid:75)(cid:1133)(cid:1251)ng (cid:255)(cid:1219)n kích th(cid:1133)(cid:1247)c kh(cid:1251)i (cid:255)(cid:1195)u và kích th(cid:1133)(cid:1247)c t(cid:1237)i (cid:255)a c(cid:1259)a database. N(cid:1219)u ta
mu(cid:1237)n thay (cid:255)(cid:1241)i các thông s(cid:1237) này, ta s(cid:1217) ph(cid:1191)i biên d(cid:1231)ch l(cid:1189)i PERST.
Thông s(cid:1237) Giá tr(cid:1231) Mô t(cid:1191)
(cid:80)(cid:1211)c
(cid:255)(cid:1231)nh
dbDefaultInitTi 1024 Kích th(cid:1133)(cid:1247)c kh(cid:1251)i (cid:255)(cid:1195)u c(cid:1259)a m(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
ndexSize (cid:48)(cid:1191)ng này s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c t(cid:259)ng kích th(cid:1133)(cid:1247)c khi c(cid:1195)n thi(cid:1219)t.
- 40 -
Vi(cid:1227)c c(cid:1193)p phát l(cid:1189)i vùng nh(cid:1247) cho m(cid:1191)ng này có chi
phí cao nên (cid:255)(cid:1223) h(cid:1189)n ch(cid:1219) tác v(cid:1257) này, kích th(cid:1133)(cid:1247)c c(cid:1259)a
(cid:80)(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng luôn (cid:255)(cid:1133)(cid:1255)c c(cid:1193)p phát d(cid:1269)
tr(cid:1267) g(cid:1193)p (cid:255)ôi. V(cid:1201)y vi(cid:1227)c c(cid:1193)p phát vùng nh(cid:1247) cho
(cid:80)(cid:1191)ng ch(cid:1229) m(cid:1257)c (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng l(cid:1247)n h(cid:1131)n s(cid:1217) giúp t(cid:259)ng hi(cid:1227)u
(cid:81)(cid:259)ng ch(cid:1133)(cid:1131)ng trình m(cid:1245)t ít nh(cid:1133)ng bù l(cid:1189)i s(cid:1217) làm t(cid:259)ng
kích th(cid:1133)(cid:1247)c kh(cid:1251)i (cid:255)(cid:1195)u c(cid:1259)a database. V(cid:1247)i giá tr(cid:1231) m(cid:1211)c
(cid:255)(cid:1231)nh c(cid:1259)a thông s(cid:1237) này, kích th(cid:1133)(cid:1247)c ban (cid:255)(cid:1195)u c(cid:1259)a
database m(cid:1247)i t(cid:1189)o là kho(cid:1191)ng 50Kb
dbDefaultExten 4Mb (cid:264)ây chính là kích th(cid:1133)(cid:1247)c c(cid:1193)p phát vùng nh(cid:1247) thêm
sionQuantum trong PERST. B(cid:1245) nh(cid:1247)(cid:3)(cid:255)(cid:1133)(cid:1255)c c(cid:1193)p phát b(cid:1205)ng cách
quét Bitmap. N(cid:1219)u không có (cid:255)(cid:1259) ch(cid:1243) tr(cid:1237)ng liên ti(cid:1219)p
cho (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng, database s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c t(cid:259)ng kích th(cid:1133)(cid:1247)c
(cid:69)(cid:1205)ng giá tr(cid:1231) dbDefaultExtensionQuantum. T(cid:259)ng
giá tr(cid:1231) c(cid:1259)a tông s(cid:1237) này d(cid:1199)n (cid:255)(cid:1219)n vi(cid:1227)c PERST ít ph(cid:1191)i
scan l(cid:1189)i Bitmap t(cid:1263)(cid:3)(cid:255)(cid:1195)u, t(cid:1237)c (cid:255)(cid:1245) c(cid:1259)a m(cid:1243)i l(cid:1195)n c(cid:1193)p
phát b(cid:1245) nh(cid:1247) s(cid:1217) t(cid:259)ng và các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c c(cid:1193)p
phát s(cid:1217) có nhi(cid:1221)u c(cid:1131) h(cid:1245)i n(cid:1205)m liên ti(cid:1219)p nhau h(cid:1131)n.
Nh(cid:1133) v(cid:1201)y s(cid:1217) d(cid:1225) t(cid:259)ng hi(cid:1227)u n(cid:259)ng ch(cid:1133)(cid:1131)ng trình nh(cid:1133)ng
ng(cid:1133)(cid:1255)c l(cid:1189)i (cid:255)ây có th(cid:1223) là m(cid:1245)t s(cid:1269) s(cid:1265) d(cid:1257)ng b(cid:1245) nh(cid:1247)
không hi(cid:1227)u qu(cid:1191). Và vi(cid:1227)c gi(cid:1191)m giá tr(cid:1231) này s(cid:1217) gây
tác d(cid:1257)ng ng(cid:1133)(cid:1255)c l(cid:1189)i (cid:255)(cid:1237)i v(cid:1247)i nh(cid:1267)ng tác d(cid:1257)ng khi
(cid:87)(cid:259)ng nó.
dbObjectCacheI 1319 Kích th(cid:1133)(cid:1247)c c(cid:1259)a vùng cache (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. PERST
nitSize dùng vùng này (cid:255)(cid:1223) ki(cid:1223)m tra xem li(cid:1227)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng v(cid:1247)i
- 41 -
(cid:86)(cid:1237) OID nào (cid:255)ó (cid:255)ã hi(cid:1227)n di(cid:1227)n trên b(cid:1245) nh(cid:1247) chính hay
ch(cid:1133)a. Vùng cache này dùng “weak reference” (cid:255)(cid:1223)
(cid:69)(cid:1245) d(cid:1233)n rác có th(cid:1223) làm nhi(cid:1227)m v(cid:1257). M(cid:1243)i khi cache b(cid:1231)
(cid:255)(cid:1195)y, cache s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c c(cid:1193)p phát l(cid:1189)i v(cid:1247)i kích th(cid:1133)(cid:1247)c
kho(cid:1191)ng g(cid:1193)p (cid:255)ôi l(cid:1195)n tr(cid:1133)(cid:1247)c. M(cid:1245)t l(cid:1195)n n(cid:1267)a, n(cid:1219)u ta
(cid:87)(cid:259)ng thông s(cid:1237) này thì s(cid:1217) làm gi(cid:1191)m s(cid:1237) l(cid:1195)n ph(cid:1191)i c(cid:1193)p
phát l(cid:1189)i vùng nh(cid:1247) cache.
(cid:37)(cid:1191)ng 2.6-1 H(cid:1205)ng s(cid:1237)(cid:3)(cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)nh ngh(cid:429)a s(cid:1209)n trong l(cid:1247)p StorageImpl
(cid:39)(cid:1133)(cid:1247)i (cid:255)ây là các cách (cid:255)(cid:1223) t(cid:259)ng hi(cid:1227)u n(cid:259)ng và gi(cid:1191)m l(cid:1133)(cid:1255)ng b(cid:1245) nh(cid:1247) chính ph(cid:1191)i
(cid:86)(cid:1265) d(cid:1257)ng. N(cid:1219)u ch(cid:1133)(cid:1131)ng trình c(cid:1259)a chúng ta th(cid:1269)c hi(cid:1227)n nhi(cid:1221)u thao tác update các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trên c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u thì gi(cid:1247)i h(cid:1189)n chính là th(cid:1249)i gian ghi (cid:255)(cid:429)a. N(cid:1219)u
chúng ta th(cid:1269)c hi(cid:1227)n l(cid:1227)nh commit database m(cid:1243)i khi có s(cid:1269) thay (cid:255)(cid:1241)i thì trung
bình ta th(cid:1269)c hi(cid:1227)n (cid:255)(cid:1133)(cid:1255)c 10 l(cid:1195)n commit nh(cid:1133) v(cid:1201)y trong m(cid:1245)t giây (Gi(cid:1247)i h(cid:1189)n này
gi(cid:1191) thi(cid:1219)t r(cid:1205)ng m(cid:1243)i thao tác truy c(cid:1201)p (cid:255)(cid:429)a m(cid:1193)t 10ms và m(cid:1243)i giao tác khi commit
(cid:70)(cid:1195)n ghi xu(cid:1237)ng (cid:255)(cid:429)a kho(cid:1191)ng 10 trang b(cid:1193)t k(cid:484) trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u). Nh(cid:1133)ng ta có
th(cid:1223) t(cid:259)ng hi(cid:1227)u n(cid:259)ng c(cid:1259)a thao tác update m(cid:1245)t cách (cid:255)áng k(cid:1223) n(cid:1219)u ta nhóm các
thao tác update l(cid:1189)i v(cid:1247)i nhau trong cùng m(cid:1245)t giao tác. PERST t(cid:1189)o (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
copy c(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1195)n update khi l(cid:1195)n (cid:255)(cid:1195)u tiên nó b(cid:1231) thay (cid:255)(cid:1241)i trong giao
tác. N(cid:1219)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231) update trong N giao tác m(cid:1243)i giao tác m(cid:1245)t l(cid:1195)n thì N b(cid:1191)n
copy s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c t(cid:1189)o nh(cid:1133)ng n(cid:1219)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1231) update N l(cid:1195)n trong m(cid:1245)t giao tác thì
ch(cid:1229) m(cid:1245)t b(cid:1191)n copy (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o ra. (cid:264)ây chính là l(cid:1255)i ích d(cid:1225) th(cid:1193)y nh(cid:1193)t c(cid:1259)a vi(cid:1227)c th(cid:1269)c
hi(cid:1227)n các giao tác l(cid:1247)n, dài.
Nh(cid:1133)ng n(cid:1219)u ta th(cid:1269)c hi(cid:1227)n vi(cid:1227)c update cho nhi(cid:1221)u (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong cùng m(cid:1245)t
giao tác thì rõ ràng s(cid:1217) d(cid:1199)n (cid:255)(cid:1219)n vi(cid:1227)c t(cid:259)ng kích th(cid:1133)(cid:1247)c database vì các b(cid:1191)n copy
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o ra nhi(cid:1221)u mà vi(cid:1227)c gi(cid:1191)i phóng vùng nh(cid:1247) c(cid:458) ch(cid:1229)(cid:3)(cid:255)(cid:1133)(cid:1255)c
- 42 -
th(cid:1269)c hi(cid:1227)n khi commit giao tác. Vì v(cid:1201)y, cách t(cid:1237)t nh(cid:1193)t (m(cid:1245)t cách t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i) là
th(cid:1269)c hi(cid:1227)n l(cid:1227)nh commit sau kho(cid:1191)ng 100 (cid:255)(cid:1219)n 1000 l(cid:1195)n update, làm nh(cid:1133) v(cid:1201)y s(cid:1217)
gi(cid:1191)m (cid:255)(cid:1133)(cid:1255)c chi phí c(cid:1259)a m(cid:1243)i l(cid:1195)n commit mà v(cid:1199)n không làm t(cid:259)ng kích th(cid:1133)(cid:1247)c
database (cid:255)áng k(cid:1223).
(cid:49)(cid:1219)u các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a ch(cid:1133)(cid:1131)ng trình (cid:255)(cid:1133)(cid:1255)c t(cid:1241) ch(cid:1261)c d(cid:1133)(cid:1247)i d(cid:1189)ng cây hay danh
sách liên k(cid:1219)t thì m(cid:1245)t khi ta (cid:255)ã load lên b(cid:1245) nh(cid:1247) chính (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c c(cid:1259)a cây
hay danh sách liên k(cid:1219)t và (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó (cid:255)(cid:1133)(cid:1255)c tham chi(cid:1219)u t(cid:1263) m(cid:1245)t bi(cid:1219)n c(cid:1259)a
ch(cid:1133)(cid:1131)ng trình thì b(cid:1245) d(cid:1233)n rác s(cid:1217) không th(cid:1223) nào thu d(cid:1233)n (cid:255)(cid:1133)(cid:1255)c b(cid:1193)t c(cid:1261)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
nào (cid:255)(cid:1133)(cid:1255)c load lên t(cid:1263)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c (vì (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c tham chi(cid:1219)u
(cid:87)(cid:1263)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng g(cid:1237)c b(cid:1193)t c(cid:1261) lúc nào). C(cid:1261) nh(cid:1133) v(cid:1201)y khi ta truy xu(cid:1193)t l(cid:1195)n l(cid:1133)(cid:1255)t cho
(cid:255)(cid:1219)n h(cid:1219)t các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong cây hay danh sách liên k(cid:1219)t (cid:255)ó thì toàn b(cid:1245) các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng s(cid:1217) n(cid:1205)m trong b(cid:1245) nh(cid:1247) chính. (cid:264)(cid:76)(cid:1221)u này có th(cid:1223) d(cid:1199)n (cid:255)(cid:1219)n s(cid:1269) tràn b(cid:1245) nh(cid:1247). Vì
(cid:89)(cid:1201)y ta nên c(cid:1197)n th(cid:1201)n, không nên (cid:255)(cid:1223) m(cid:1245)t bi(cid:1219)n nào (cid:255)ó tham chi(cid:1219)u (cid:255)(cid:1219)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(cid:74)(cid:1237)c c(cid:1259)a cây mà không qu(cid:1191)n lý ch(cid:1211)t. Tuy nhiên, v(cid:1247)i các l(cid:1247)p bao ch(cid:1261)a c(cid:1259)a
PERST, truy xu(cid:1193)t các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng b(cid:1205)ng khóa nh(cid:1133) Index, SpatialIndex,
FieldIndex… thì lo l(cid:1203)ng này là không c(cid:1195)n thi(cid:1219)t vì các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng thành ph(cid:1195)n
(cid:70)(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này s(cid:1217) b(cid:1231) b(cid:1245) don rác thu gom bình th(cid:1133)(cid:1249)ng.
(cid:264)ôi (cid:255)(cid:76)(cid:1221)u ghi chú thêm:
Khi nào thì nên dùng c(cid:1193)u trúc nào cho vi(cid:1227)c l(cid:1133)u tr(cid:1267):
1. Link: Dùng cho các t(cid:1201)p h(cid:1255)p nh(cid:1235) (s(cid:1237)(cid:3) (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong t(cid:1201)p h(cid:1255)p kho(cid:1191)ng
100 tr(cid:1251) xu(cid:1237)ng).
2. FieldIndex: Dùng cho các t(cid:1201)p h(cid:1255)p có s(cid:1237) ph(cid:1195)n t(cid:1265) l(cid:1247)n (kho(cid:1191)ng h(cid:1131)n 100).
Ch(cid:1229) m(cid:1257)c (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o trên m(cid:1245)t tr(cid:1133)(cid:1249)ng c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hay nhi(cid:1221)u tr(cid:1133)(cid:1249)ng (trong
- 43 -
tr(cid:1133)(cid:1249)ng h(cid:1255)p này (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i là khóa ph(cid:1261)c) c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. FieldIndex (cid:255)(cid:1133)(cid:1255)c cài
(cid:255)(cid:1211)t b(cid:1205)ng B+Tree. Kích th(cid:1133)(cid:1247)c trang BTree là 4kb, vì v(cid:1201)y kích th(cid:1133)(cid:1247)c nh(cid:1235)
nh(cid:1193)t (cid:255)(cid:1133)(cid:1255)c dùng b(cid:1247)i index là 4kb.
3. Index: C(cid:458)ng dùng cho các t(cid:1201)p h(cid:1255)p có s(cid:1237) ph(cid:1195)n t(cid:1265) l(cid:1247)n. Vi(cid:1227)c (cid:255)ánh ch(cid:1229) m(cid:1257)c
cho Index (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n ngay lúc thêm (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vào Index.
4. BitIndex: dùng cho t(cid:1201)p h(cid:1255)p các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng v(cid:1247)i khóa là các tr(cid:1133)(cid:1249)ng có giá
tr(cid:1231) nh(cid:1231) phân.
5. SpatialIndex: dùng cho d(cid:1267) li(cid:1227)u không gian v(cid:1247)i khóa là t(cid:1233)a (cid:255)(cid:1245) c(cid:1259)a các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. SpatialIndex (cid:255)(cid:1133)(cid:1255)c cài (cid:255)(cid:1211)t b(cid:1205)ng cây RTree c(cid:1259)a Guttman.
2.7
(cid:54)(cid:1131) l(cid:1133)(cid:1255)c v(cid:1221) RTree:
2.7.1 Gi(cid:1247)i thi(cid:1227)u:
Hi(cid:1227)n nay, trong các l(cid:429)nh v(cid:1269)c (cid:1261)ng d(cid:1257)ng máy tính nh(cid:1133) CAD (Computer
Aided Design) hay Geo-data Application, vi(cid:1227)c x(cid:1265) lý d(cid:1267) li(cid:1227)u không gian
(spatial data – g(cid:1203)n li(cid:1221)n v(cid:1247)i t(cid:1233)a (cid:255)(cid:1245), v(cid:1231) trí c(cid:1259)a m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng) r(cid:1193)t c(cid:1195)n (cid:255)(cid:1219)n m(cid:1245)t
(cid:70)(cid:1193)u trúc d(cid:1267) li(cid:1227)u hi(cid:1227)u qu(cid:1191) trong vi(cid:1227)c thao tác trên d(cid:1267) li(cid:1227)u liên quan (cid:255)(cid:1219)n t(cid:1233)a (cid:255)(cid:1245),
(cid:89)(cid:1231) trí c(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng. Tuy nhiên, các c(cid:1193)u trúc d(cid:1267) li(cid:1227)u c(cid:1241)(cid:3)(cid:255)(cid:76)(cid:1223)n không thích
(cid:75)(cid:1255)p cho công vi(cid:1227)c này. Vì v(cid:1201)y, chúng ta s(cid:1217) tìm hi(cid:1223)u m(cid:1245)t lo(cid:1189)i c(cid:1193)u trúc d(cid:1267) li(cid:1227)u
(cid:80)(cid:1247)i: RTree, có kh(cid:1191) n(cid:259)ng (cid:255)áp (cid:1261)ng các yêu c(cid:1195)u trên.
2.7.2 (cid:54)(cid:1131) l(cid:1133)(cid:1255)c v(cid:1221) d(cid:1267) li(cid:1227)u không gian (spatial data) và
các gi(cid:1191)i pháp:
Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a d(cid:1267) li(cid:1227)u không gian (qu(cid:1201)n, huy(cid:1227)n, khu v(cid:1269)c, (cid:255)(cid:1239)i núi, sông
ngòi…) th(cid:1133)(cid:1249)ng bao ph(cid:1259) m(cid:1245)t vùng trong không gian n chi(cid:1221)u nào (cid:255)ó
- 44 -
(n=2,3…) ch(cid:1261) th(cid:1133)(cid:1249)ng không th(cid:1223) hi(cid:1227)n b(cid:1205)ng m(cid:1245)t (cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1131)n thu(cid:1195)n. (cid:264)(cid:1223) d(cid:1225) hình
dung, các ví d(cid:1257)(cid:3)(cid:255)(cid:1133)(cid:1255)c nêu s(cid:1217) t(cid:1201)p trung vào không gian m(cid:1211)t ph(cid:1207)ng 2 chi(cid:1221)u, các
không gian nhi(cid:1221)u chi(cid:1221)u khác s(cid:1217) áp d(cid:1257)ng t(cid:1133)(cid:1131)ng t(cid:1269).
Ví d(cid:1257): 1 qu(cid:1201)n s(cid:1217) bao ph(cid:1259) m(cid:1245)t vùng không gian xác (cid:255)(cid:1231)nh trong không gian
2 chi(cid:1221)u.
(cid:48)(cid:1245)t trong nh(cid:1267)ng thao tác th(cid:1133)(cid:1249)ng xuyên nh(cid:1193)t trong nh(cid:1267)ng (cid:1261)ng d(cid:1257)ng có
liên quan (cid:255)(cid:1219)n d(cid:1267) li(cid:1227)u không gian nh(cid:1133) CAD, CAM, GIS là tìm xem có t(cid:1193)t c(cid:1191)
bao nhiêu (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng n(cid:1205)m trong m(cid:1245)t vùng nào (cid:255)ó. Vì v(cid:1201)y kh(cid:1191) n(cid:259)ng xác (cid:255)(cid:1231)nh
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng d(cid:1257)a vào t(cid:1233)a (cid:255)(cid:1245), v(cid:1231) trí c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng m(cid:1245)t cách nhanh và chính xác là
(cid:89)(cid:1193)n (cid:255)(cid:1221) r(cid:1193)t quan tr(cid:1233)ng.
Rõ ràng, các c(cid:1193)u trúc c(cid:1241)(cid:3) (cid:255)(cid:76)(cid:1223)n không thích h(cid:1255)p v(cid:1247)i vi(cid:1227)c tìm ki(cid:1219)m trong
không gian nhi(cid:1221)u chi(cid:1221)u. C(cid:1257) th(cid:1223): Các c(cid:1193)u trúc d(cid:1269)a trên giá tr(cid:1231) chính xác nh(cid:1133)
HashTable không thích h(cid:1255)p vì yêu c(cid:1195)u th(cid:1133)(cid:1249)ng là tìm trong kho(cid:1191)ng còn các
(cid:70)(cid:1193)u trúc h(cid:1243) tr(cid:1255) tìm trong kho(cid:1191)ng nh(cid:1133) BTree hay ISAM index thì không thích
(cid:75)(cid:1255)p cho không gian nhi(cid:1221)u chi(cid:1221)u.
Th(cid:1269)c t(cid:1219)(cid:3)(cid:255)ã có nhi(cid:1221)u công trình nghiên c(cid:1261)u nh(cid:1205)m tìm ra gi(cid:1191)i pháp cho v(cid:1193)n
(cid:255)(cid:1221) này, trong (cid:255)ó RTree là m(cid:1245)t gi(cid:1191)i pháp t(cid:1237)t. Các gi(cid:1191)i pháp khác nh(cid:1133) Cell,
QuadTree, k-d Tree, K-D-B Tree, Corner stiching, Grid file, … (cid:255)(cid:1221)u có
nh(cid:1133)(cid:1255)c (cid:255)(cid:76)(cid:1223)m riêng.
2.8
So sánh v(cid:1247)i các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng (cid:255)(cid:1237)i (cid:87)(cid:1133)(cid:1255)ng khác:
Trên th(cid:1231) tr(cid:1133)(cid:1249)ng hi(cid:1227)n có không nhi(cid:1221)u h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u nhúng cho
Java và C# nh(cid:1133)ng b(cid:1189)n b(cid:259)n kho(cid:259)n không bi(cid:1219)t ch(cid:1233)n h(cid:1227) qu(cid:1191)n tr(cid:1231) nào cho phù
(cid:75)(cid:1255)p.B(cid:1251)i không có cái gì là hoàn h(cid:1191)o. (cid:1250)(cid:3) (cid:255)ây xin (cid:255)(cid:1133)a ra 6 h(cid:1227) qu(cid:1191)n tr(cid:1231) khác
- 45 -
nhau (cid:255)ó là ObjectStore PSE Pro c(cid:1259)a Progress Software, FastObject c(cid:1259)a
Versant, Berkelay DB JE c(cid:1259)a Sleepycat, JISP c(cid:1259)a CoyoteGulch, db4o c(cid:1259)a
db4oObjects, và PERST.c(cid:1259)a Knizhnik. Sau (cid:255)ây là b(cid:1191)ng so sánh các (cid:255)(cid:1211)c tính
OODBMS
Ngôn ng(cid:1267)
(cid:38)(cid:1193)p
phát
(cid:43)(cid:1243) tr(cid:1255)
Scheme
Ngôn
Ti(cid:1221)n
(cid:75)(cid:1243) tr(cid:1255)
vùng nh(cid:1247)
giao
ng(cid:1267) truy
Evaluation
(cid:91)(cid:1265) lý
tác
(cid:89)(cid:1193)n
(cid:37)(cid:1203)t bu(cid:1245)c
Log
Dùng c(cid:1131) ch(cid:1219)
Truy v(cid:1193)n
ObjectStore
C++
Khai
báo
file
Serialization.
PSE Pro
theo
(cid:87)(cid:1133)(cid:1249)ng minh
Java
thu(cid:1245)c
hay
ng(cid:1195)m
tính (cid:255)(cid:1223)
(cid:255)(cid:1231)nh
(nh(cid:1133)
tìm ki(cid:1219)m
Gabage
Collection)
(cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng
trong t(cid:1201)p
(cid:75)(cid:1255)p
Không
b(cid:1203)t
Không
Có th(cid:1223) thêm,
Khai
báo
Không
Db4o
Java
bu(cid:1245)c
(cid:87)(cid:1133)(cid:1249)ng minh
có ngôn
xoá, s(cid:1265)a các
(cid:75)(cid:1243)
tr(cid:1255)
C#
ng(cid:1267) truy
tr(cid:1133)(cid:1249)ng và c(cid:1201)p
ph(cid:1257)c
(Standard,
(cid:89)(cid:1193)n
nh(cid:1201)t qua
l(cid:1189)i
(cid:75)(cid:1239)i khi
Compact
nh(cid:1133)ng
gi(cid:1267)a các phiên
(cid:75)(cid:1227)
và nh(cid:1267)ng
cung c(cid:1193)p
(cid:69)(cid:1191)n. C(cid:458)ng có
th(cid:1237)ng
Framwork
API cho
th(cid:1223)
thay (cid:255)(cid:1241)i
s(cid:1269)
có
(cid:255)(cid:1131)n)
(cid:70)(cid:1237).
vi(cid:1227)c
t(cid:1189)o
tên và tr(cid:1133)(cid:1249)ng
(cid:70)(cid:1259)a các l(cid:1247)p.
(cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng
truy v(cid:1193)n.
Berkeley
Java
Khai
báo Tùy
Không
Không
Không
b(cid:1203)t
- 46 -
(cid:70)(cid:1131) b(cid:1191)n c(cid:1259)a 6 h(cid:1227) qu(cid:1191)n tr(cid:1231):
DB JE
(cid:87)(cid:1133)(cid:1249)ng minh
ch(cid:1233)n
bu(cid:1245)c
JISP
Java
Khai
báo
Không Không
Không
Không
b(cid:1203)t
bu(cid:1245)c
(cid:87)(cid:1133)(cid:1249)ng minh
Khai
báo
Có
Có
JDOQL B(cid:1203)t bu(cid:1245)c
FastObject
Java
(cid:87)(cid:1133)(cid:1249)ng minh
C#
J#
VB
Không
b(cid:1203)t
Lazy
scheme
Không
(cid:255)(cid:1237)i
Khai
báo
PERST
Java (bao
evaluation
bu(cid:1245)c, Và có
(cid:75)(cid:1243)
tr(cid:1255)
(cid:87)(cid:1133)(cid:1255)ng
(cid:87)(cid:1133)(cid:1249)ng minh
(cid:74)(cid:1239)m
c(cid:1191)
JDK 1.5),
th(cid:1223) tích h(cid:1255)p
ngôn
(cid:255)úp
hay
ng(cid:1195)m
(cid:89)(cid:1247)i ASpectJ
ng(cid:1267) truy
hay (cid:255)(cid:1237)i
(nh(cid:1133)
C#
(cid:89)(cid:1193)n
và
JAssist
(cid:87)(cid:1133)(cid:1255)ng
Background
(Standard,
bóng
(cid:255)(cid:1223) cung c(cid:1193)p
Gabage
Compact
Collection)
tính
trong
và
su(cid:1237)t
trong
Framwork
(cid:79)(cid:1201)p
trình
(cid:255)(cid:1131)n)
(tranparent
persistent)
(cid:37)(cid:1191)ng 2.8-1 So sánh các (cid:255)(cid:1211)c tính c(cid:1259)a các h(cid:1227) qu(cid:1191)n tr(cid:1231)
(cid:264)(cid:1223) so sánh t(cid:1237)c (cid:255)(cid:1245) c(cid:1259)a các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u, ta cài (cid:255)(cid:1211)t m(cid:1245)t ví d(cid:1257)
th(cid:1269)c hi(cid:1227)n các ch(cid:1261)c n(cid:259)ng (cid:255)(cid:1131)n gi(cid:1191)n nh(cid:1133) l(cid:1133)u tr(cid:1267) d(cid:1267) li(cid:1227)u (Storing), l(cid:1193)y d(cid:1267) li(cid:1227)u
(Fetching), (cid:255)(cid:1231)nh v(cid:1231)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (Locating) b(cid:1205)ng ph(cid:1133)(cid:1131)ng pháp ch(cid:1229) m(cid:1257)c trên hai
ngôn ng(cid:1267) là C# và Java v(cid:1247)i các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u t(cid:1133)(cid:1131)ng (cid:1261)ng..
Ví d(cid:1257) này (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n theo ba b(cid:1133)(cid:1247)c c(cid:1131) b(cid:1191)n nh(cid:1133) sau:
+ (cid:264)(cid:1195)u tiên là t(cid:1189)o ng(cid:1199)u nhiên (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng có khoá ki(cid:1223)u long và khoá
- 47 -
ki(cid:1223)u string, trong (cid:255)ó ch(cid:1229) m(cid:1257)c là ki(cid:1223)u string. Sau (cid:255)ó l(cid:1133)u vào c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.
+ Sau (cid:255)ó tìm ki(cid:1219)m các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng dùng khoá long và string.
+ Cu(cid:1237)i cùng là tìm và xóa t(cid:1263)ng (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng và c(cid:1201)p nh(cid:1201)t ((cid:255)ánh d(cid:1193)u)
vào c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.
(cid:264)(cid:1131)n v(cid:1231) th(cid:1249)i gian m(cid:1243)i b(cid:1133)(cid:1247)c th(cid:1269)c thi (cid:255)(cid:1133)(cid:1255)c tính b(cid:1205)ng giây. S(cid:1237) l(cid:1133)(cid:1255)ng các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng trong m(cid:1243)i tr(cid:1133)(cid:1249)ng h(cid:1255)p là gi(cid:1237)ng nhau và b(cid:1205)ng 100000. T(cid:1193)t c(cid:1191)(cid:3) (cid:255)(cid:1133)(cid:1255)c
ki(cid:1223)m tra th(cid:1265) nghi(cid:1227)m trên cùng m(cid:1245)t máy và c(cid:1193)u hình máy là AMD Athlon 64
(3200+), 1.5Gb RAM, windowsXP. Ngôn ng(cid:1267) dùng l(cid:1201)p trình (cid:1251)(cid:3)(cid:255)ây là Csharp
và Java ( Sun Java JDK 1.4.2_04).
Sau (cid:255)ây là b(cid:1191)ng k(cid:1219)t qu(cid:1191), b(cid:1191)ng s(cid:1203)p t(cid:259)ng d(cid:1195)n theo th(cid:1249)i gian th(cid:1269)c hi(cid:1227)n:
(cid:43)(cid:1227) qu(cid:1191)n tr(cid:1231) (cid:37)(cid:1133)(cid:1247)c T(cid:1189)o d(cid:1267) (cid:37)(cid:1133)(cid:1247)c tìm (cid:37)(cid:1133)(cid:1247)c xóa d(cid:1267) Ngôn
ng(cid:1267) li(cid:1227)u ki(cid:1219)m li(cid:1227)u
Java 3 775 1 683 3 275 PERST
CSharp 4 446 2 403 3975 PERST
Java ObjectStore PSE 8 272 9 413 3 104 Pro
FastObjects J2 Java 13 399 10 856 38 435
FastObjects.Net CSharp 43 012 2 714 7 461
Db4o – 4.0 Java 18 457 6 279 38 886
DB4o – 4.0 CSharp 31 725 41 099 88 517
Berkeley DB JE Java(*) 15 513 10 755 12 758
- 48 -
JISP Java 350 674 343 063 527 248
(cid:37)(cid:1191)ng 2.8-2 B(cid:1191)ng so sánh k(cid:1219)t qu(cid:1191) c(cid:1259)a các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(*) – JE dùng Xmxl128M (cid:255)(cid:1223) tránh tràn b(cid:1245) nh(cid:1247), và (cid:255)(cid:76)(cid:1221)u này làm cho th(cid:1249)i
gian ch(cid:1229) sai s(cid:1237) x(cid:1193)p x(cid:1229) 64 giây nên chúng ta không c(cid:1195)n ph(cid:1191)i quan tâm.
(cid:39)(cid:1269)a vào b(cid:1191)ng so sánh k(cid:1219)t qu(cid:1191) trên thì chúng ta nh(cid:1201)n ra r(cid:1205)ng PERST nhanh
nh(cid:1193)t, gi(cid:1249) thì không ph(cid:1191)i b(cid:259)n kho(cid:259)n ch(cid:1233)n l(cid:1269)a gi(cid:1267)a các h(cid:1227) qu(cid:1191)n tr(cid:1231) n(cid:1267)a. Chúng
- 49 -
ta hãy ch(cid:1233)n PERST (cid:255)(cid:1223) cho ra m(cid:1245)t (cid:1261)ng d(cid:1257)ng t(cid:1237)i (cid:1133)u v(cid:1221) t(cid:1237)c (cid:255)(cid:1245).
CH(cid:1132)(cid:1130)NG 3 : Gi(cid:1247)i thi(cid:1227)u v(cid:1221) mô hình Topology
3.1
Gi(cid:1247)i thi(cid:1227)u:
(cid:39)(cid:1267) li(cid:1227)u Topology (cid:255)(cid:1133)(cid:1255)c xây d(cid:1269)ng t(cid:1263) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hình h(cid:1233)c c(cid:1131) b(cid:1191)n và
chúng có quan h(cid:1227) v(cid:1247)i nhau. M(cid:1261)c (cid:255)(cid:1245) quan h(cid:1227) tu(cid:484) thu(cid:1245)c vào c(cid:1193)p Topology.
(cid:48)(cid:1245)t v(cid:1193)n (cid:255)(cid:1221) khó kh(cid:259)n khi xây d(cid:1269)ng các (cid:1261)ng d(cid:1257)ng d(cid:1269)a trên d(cid:1267) li(cid:1227)u Topology
là ngu(cid:1239)n d(cid:1267) li(cid:1227)u Topology không có s(cid:1209)n. Mu(cid:1237)n có d(cid:1267) li(cid:1227)u Topology chúng
ta ph(cid:1191)i chuy(cid:1223)n t(cid:1263) d(cid:1267) li(cid:1227)u hình h(cid:1233)c c(cid:1131) b(cid:1191)n thành d(cid:1267) li(cid:1227)u Topology. Và các
ph(cid:1133)(cid:1131)ng pháp hay công c(cid:1257) chuy(cid:1223)n (cid:255)(cid:1241)i còn ít (cid:255)(cid:1133)(cid:1255)c h(cid:1243) tr(cid:1255). Trong n(cid:1245)i dung (cid:255)(cid:1221)
tài, chúng ta s(cid:1217) xây d(cid:1269)ng công c(cid:1257)(cid:3)(cid:255)(cid:1223) chuy(cid:1223)n (cid:255)(cid:1241)i d(cid:1267) li(cid:1227)u t(cid:1263) d(cid:1189)ng Text thành
(cid:71)(cid:1267) li(cid:1227)u Topology nh(cid:1133) mong mu(cid:1237)n.
3.2
Các khái ni(cid:1227)m c(cid:1131) b(cid:1191)n trong Topology:
Start Node: Nút b(cid:1203)t (cid:255)(cid:1195)u c(cid:1259)a c(cid:1189)nh.
End Node: Nút k(cid:1219)t thúc c(cid:1259)a c(cid:1189)nh.
Right Edge: C(cid:1189)nh (cid:255)(cid:1195)u tiên g(cid:1211)p khi di chuy(cid:1223)n ng(cid:1133)(cid:1255)c chi(cid:1221)u kim (cid:255)(cid:1239)ng h(cid:1239)
quanh nút k(cid:1219)t thúc c(cid:1259)a c(cid:1189)nh hi(cid:1227)n t(cid:1189)i.
Left Edge: C(cid:1189)nh (cid:255)(cid:1195)u tiên g(cid:1211)p khi di chuy(cid:1223)n ng(cid:1133)(cid:1255)c chi(cid:1221)u kim (cid:255)(cid:1239)ng h(cid:1239)
quanh nút b(cid:1203)t (cid:255)(cid:1195)u c(cid:1259)a c(cid:1189)nh hi(cid:1227)n t(cid:1189)i.
First Edge: C(cid:1189)nh (cid:255)(cid:1133)(cid:1255)c ch(cid:1233)n ng(cid:1199)u nhiên, (cid:255)(cid:1133)(cid:1255)c xem nh(cid:1133) là c(cid:1189)nh (cid:255)(cid:1195)u tiên
- 50 -
cho vi(cid:1227)c tìm ki(cid:1219)m các c(cid:1189)nh k(cid:1221) c(cid:1259)a nút.
Hình 3.2-1 Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong mô hình Topology
(cid:48)(cid:1245)t s(cid:1237) khái ni(cid:1227)m c(cid:1131) b(cid:1191)n trong mô hình Topology.
Left Face: M(cid:1211)t (cid:1251) bên trái c(cid:1259)a c(cid:1189)nh khi di chuy(cid:1221)n t(cid:1263) nút b(cid:1203)t (cid:255)(cid:1195)u (cid:255)(cid:1219)n nút k(cid:1219)t
thúc.
Right Face: M(cid:1211)t (cid:1251) bên ph(cid:1191)i c(cid:1259)a c(cid:1189)nh khi di chuy(cid:1223)n t(cid:1263) nút b(cid:1203)t (cid:255)(cid:1195)u (cid:255)(cid:1219)n nút
(cid:78)(cid:1219)t thúc.
Minimum Bounding Rectangle (MBR): Khung ch(cid:1267) nh(cid:1201)t nh(cid:1235) nh(cid:1193)t ch(cid:1261)a
toàn b(cid:1245)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
Inner Ring: Biên trong c(cid:1259)a m(cid:1211)t. M(cid:1243)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vùng có th(cid:1223) không có, có
(cid:80)(cid:1245)t ho(cid:1211)c nhi(cid:1221)u biên trong.
Outer Ring: Biên bao ngoài c(cid:1259)a m(cid:1211)t. M(cid:1243)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vùng có duy nh(cid:1193)t m(cid:1245)t
biên ngoài.
(cid:264)(cid:831)c tr(cid:753)ng: mô hình c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1231)a lí th(cid:1219) gi(cid:1247)i th(cid:1269)c. Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này
có th(cid:1223) là (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vô h(cid:1133)(cid:1247)ng, m(cid:1245)t chi(cid:1221)u, hai chi(cid:1221)u và ba chi(cid:1221)u.
3.3
Các lo(cid:1189)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong Topology:
- 51 -
Có 4 lo(cid:1189)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hình h(cid:1233)c c(cid:1131) s(cid:1251) là:
+ Node (nút): EntityNode (nút th(cid:1269)c th(cid:1223)), Connected node (nút n(cid:1237)i
(cid:78)(cid:1219)t)
+Edge (c(cid:1189)nh)
+Face (m(cid:1211)t)
+ Text (v(cid:259)n b(cid:1191)n): ch(cid:1229) làm rõ (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ch(cid:1261) không th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c liên k(cid:1219)t
(cid:89)(cid:1247)i nhau b(cid:1251)i m(cid:1237)i quan h(cid:1227) Topology
Nodes: Là các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng vô h(cid:1133)(cid:1247)ng dùng (cid:255)(cid:1223) l(cid:1133)u tr(cid:1267) các v(cid:1231) trí có ý ngh(cid:429)a.
+ Entity node: là các node không n(cid:1205)m trên c(cid:1189)nh, nó ch(cid:1229)(cid:3)(cid:255)(cid:1133)(cid:1255)c liên
(cid:78)(cid:1219)t v(cid:1221) m(cid:1211)t Topology v(cid:1247)i m(cid:1211)t ch(cid:1261)a nó (ví d(cid:1257) nh(cid:1133) th(cid:1259)(cid:3) (cid:255)ô). Nó dùng (cid:255)(cid:1223) th(cid:1223)
hi(cid:1227)n nh(cid:1267)ng (cid:255)(cid:1211)c tr(cid:1133)ng riêng bi(cid:1227)t ho(cid:1211)c các (cid:255)(cid:76)(cid:1223)m kh(cid:1191)o sát, hay các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
th(cid:1223) hi(cid:1227)n (cid:1251) m(cid:1245)t t(cid:1229) l(cid:1227) nào (cid:255)ó.
+ Connected node: Là các node n(cid:1205)m (cid:255)(cid:1195)u mút c(cid:1259)a c(cid:1189)nh, nó có th(cid:1223) là
(cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1195)u hay di(cid:1223)m cu(cid:1237)i c(cid:1259)a c(cid:1189)nh. Và (cid:255)(cid:1133)(cid:1255)c liên k(cid:1219)t v(cid:1221) m(cid:1211)t Topology v(cid:1247)i các
(cid:70)(cid:1189)nh khác. M(cid:1243)i node còn có FirstEdge và có m(cid:1245)t khung bao nh(cid:1235) nh(cid:1193)t (MBR
– Minimum Boundary Rectangle) ch(cid:1261)a nó.Các node k(cid:1219)t n(cid:1237)i (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng
theo 2 h(cid:1133)(cid:1247)ng:
(cid:264)(cid:1231)nh ngh(cid:429)a các c(cid:1189)nh v(cid:1221) m(cid:1211)t Topology: lúc này các node (cid:255)(cid:1133)(cid:1255)c xem nh(cid:1133) là
(cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1195)u và (cid:255)(cid:76)(cid:1223)m cu(cid:1237)i
Th(cid:1223) hi(cid:1227)n các (cid:255)(cid:1211)c tr(cid:1133)ng (cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1133)(cid:1255)c tìm th(cid:1193)y t(cid:1189)i (cid:255)(cid:1195)u và cu(cid:1237)i c(cid:1189)nh c(cid:1259)a các
(cid:255)(cid:1211)c tr(cid:1133)ng tuy(cid:1219)n tính: ch(cid:1207)ng h(cid:1189)n nh(cid:1133) các cây c(cid:1195)u, các c(cid:1265)a c(cid:1237)ng c(cid:1259)a m(cid:1245)t con
kênh, các (cid:255)(cid:76)(cid:1223)m truy c(cid:1201)p ti(cid:1227)n ích trong lòng (cid:255)(cid:1193)t, v(cid:1247)i cách này thì các thu(cid:1245)c
tính s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c k(cid:1219)t h(cid:1255)p v(cid:1247)i các (cid:255)(cid:1211)c tr(cid:1133)ng (cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1133)(cid:1255)c liên h(cid:1227) v(cid:1247)i các node k(cid:1219)t
(cid:81)(cid:1237)i. T(cid:1193)t c(cid:1191) các node k(cid:1219)t n(cid:1237)i (cid:255)(cid:1133)(cid:1255)c ch(cid:1261)a trong b(cid:1191)ng node k(cid:1219)t n(cid:1237)i. N(cid:1219)u nhi(cid:1221)u
- 52 -
(cid:70)(cid:1189)nh giao nhau t(cid:1189)i m(cid:1245)t node, ch(cid:1229) m(cid:1245)t c(cid:1189)nh s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c duy trì cho m(cid:1243)i node
trong b(cid:1191)ng node k(cid:1219)t n(cid:1237)i; các c(cid:1189)nh khác (cid:255)(cid:1133)(cid:1255)c liên k(cid:1219)t b(cid:1205)ng cách s(cid:1265) d(cid:1257)ng
thu(cid:1201)t toán tìm c(cid:1189)nh k(cid:1221)(cid:3)(cid:255)(cid:1223) suy ra.
Edge: là (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1131) s(cid:1251) dùng th(cid:1223) hi(cid:1227)n các v(cid:1231) trí c(cid:1259)a các (cid:255)(cid:1211)c tr(cid:1133)ng tuy(cid:1219)n
tính nh(cid:1133) con (cid:255)(cid:1133)(cid:1249)ng và các biên c(cid:1259)a m(cid:1211)t. C(cid:1189)nh (cid:255)(cid:1133)(cid:1255)c c(cid:1193)u thành t(cid:1263) 2 hay nhi(cid:1221)u
(cid:70)(cid:1211)p to(cid:1189)(cid:3)(cid:255)(cid:1245) 2 chi(cid:1221)u (x,y) hay 3 chi(cid:1221)u (x,y,z) phân bi(cid:1227)t. H(cid:1133)(cid:1247)ng c(cid:1259)a c(cid:1189)nh có th(cid:1223)
(cid:255)(cid:1133)(cid:1255)c xác (cid:255)(cid:1231)nh b(cid:1251)i tr(cid:1201)t t(cid:1269) các c(cid:1211)p to(cid:1189)(cid:3)(cid:255)(cid:1245). C(cid:1189)nh (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)nh ngh(cid:429)a t(cid:1263) các node
(cid:255)(cid:1195)u cu(cid:1237)i. Bên c(cid:1189)nh các node (cid:255)(cid:1195)u cu(cid:1237)i thì c(cid:1189)nh còn ch(cid:1261)a các thông tin nh(cid:1133)
RightEdge, LeftEdge, RightFace, LeftFace (cid:255)(cid:1223) d(cid:1225) dàng truy tìm thông tin và
(cid:79)(cid:1193)y các (cid:255)(cid:1211)c tr(cid:1133)ng. M(cid:1243)i c(cid:1189)nh có m(cid:1245)t khung bao nh(cid:1235) nh(cid:1193)t (MBR – Minimum
Boundary Rectangle) ch(cid:1261)a nó.
Face: (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)nh ngh(cid:429)a t(cid:1263) c(cid:1189)nh dùng th(cid:1223) hi(cid:1227)n (cid:255)(cid:1211)c tr(cid:1133)ng vùng nh(cid:1133) các qu(cid:1237)c
gia, thành ph(cid:1237). T(cid:1201)p các c(cid:1189)nh có quan h(cid:1227) Topology hình thanh nên biên c(cid:1259)a
(cid:80)(cid:1211)t. M(cid:1211)t có th(cid:1223) có biên trong ho(cid:1211)c biên ngoài và có th(cid:1223) ch(cid:1261)a m(cid:1211)t nh(cid:1235) h(cid:1131)n
trong nó. Quan h(cid:1227) này g(cid:1239)m m(cid:1245)t tham chi(cid:1219)u (cid:255)(cid:1219)n (cid:255)(cid:76)(cid:1223)m kh(cid:1251)i (cid:255)(cid:1195)u c(cid:1259)a m(cid:1245)t biên
khép kín c(cid:1259)a các c(cid:1189)nh, r(cid:1239)i theo chi(cid:1221)u kim (cid:255)(cid:1239)ng h(cid:1239)(cid:3)(cid:255)(cid:1223) khép kín biên. M(cid:1211)t có
th(cid:1223) có nhi(cid:1221)u biên (rings); có th(cid:1223) có m(cid:1245)t biên ngoài và không có ho(cid:1211)c có m(cid:1245)t
ho(cid:1211)c nhi(cid:1221)u biên trong. Các m(cid:1211)t không (cid:255)(cid:1133)(cid:1255)c ch(cid:1239)ng l(cid:1193)p nhau, và các m(cid:1211)t trong
(cid:80)(cid:1245)t l(cid:1247)p s(cid:1265) d(cid:1257)ng toàn b(cid:1245) vùng m(cid:1211)t ph(cid:1207)ng. M(cid:1243)i b(cid:1191)ng m(cid:1211)t có m(cid:1245)t khung ch(cid:1267)
nh(cid:1201)t bao m(cid:1211)t k(cid:1219)t h(cid:1255)p (FBR) ch(cid:1261)a hình ch(cid:1267) nh(cid:1201)t nh(cid:1235) nh(cid:1193)t bao m(cid:1243)i m(cid:1211)t.
3.4
Các c(cid:1193)p c(cid:1259)a Topology:
Có 4 c(cid:1193)p (cid:255)(cid:1245) Topology: 0, 1, 2, 3.
- 53 -
(cid:1250) c(cid:1193)p 3, các k(cid:1219)t n(cid:1237)i v(cid:1221) m(cid:1211)t Topology hi(cid:1227)n di(cid:1227)n m(cid:1245)t cách t(cid:1133)(cid:1249)ng minh.
(cid:1250) c(cid:1193)p 0, không có thông tin Topology (cid:255)(cid:1133)(cid:1255)c th(cid:1223) hi(cid:1227)n m(cid:1245)t cách t(cid:1133)(cid:1249)ng
minh. B(cid:1191)ng t(cid:1241)ng k(cid:1219)t sau t(cid:1241)ng k(cid:1219)t các (cid:255)(cid:1211)c tính c(cid:1259)a 3 c(cid:1193)p này và cho m(cid:1245)t ví d(cid:1257)
(cid:89)(cid:1221) m(cid:1243)i c(cid:1193)p.
(cid:38)(cid:1193)p Tên Mô t(cid:1191) Ví d(cid:1257) Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:70)(cid:1131) s(cid:1251)
(cid:37)(cid:1221) m(cid:1211)t (cid:255)(cid:1133)(cid:1255)c Node k(cid:1219)t n(cid:1237)i, 3 Quan h(cid:1227)
phân chia b(cid:1251)i node th(cid:1269)c th(cid:1223), Topology
(cid:87)(cid:1201)p các m(cid:1211)t (cid:70)(cid:1189)nh và m(cid:1211)t (cid:255)(cid:1195)y (cid:255)(cid:1259)
(cid:255)(cid:1133)(cid:1255)c ch(cid:1233)n (cid:78)(cid:1275)
và ph(cid:1195)n chung
duy nh(cid:1193)t. Các
(cid:70)(cid:1189)nh ch(cid:1229) g(cid:1211)p
nhau t(cid:1189)i các
node.
2 (cid:264)(cid:1239) th(cid:1231) Node th(cid:1269)c th(cid:1223), (cid:48)(cid:1245)t t(cid:1201)p các
ph(cid:1207)ng node k(cid:1219)t n(cid:1237)i (cid:70)(cid:1189)nh và các
và c(cid:1189)nh node (cid:1251)(cid:3)(cid:255)ó khi
chi(cid:1219)u vào b(cid:1221)
(cid:80)(cid:1211)t ph(cid:1207)ng, các
(cid:70)(cid:1189)nh ch(cid:1229) g(cid:1211)p
nhau t(cid:1189)i các
node
1 (cid:264)(cid:1239) th(cid:1231) Node th(cid:1269)c th(cid:1223), (cid:55)(cid:1201)p các node
- 54 -
không node k(cid:1219)t n(cid:1237)i th(cid:1269)c th(cid:1223) và các
ph(cid:1207)ng và c(cid:1189)nh c(cid:1189)nh có th(cid:1223)
(cid:74)(cid:1211)p nhau t(cid:1189)i
các node
0 Th(cid:1223) hi(cid:1227)n Node th(cid:1269)c th(cid:1223) (cid:55)(cid:1201)p các node
hình bao và c(cid:1189)nh th(cid:1269)c th(cid:1223) và các
(cid:70)(cid:1189)nh. Các c(cid:1189)nh
ch(cid:1229) ch(cid:1261)a các
(cid:87)(cid:1233)a (cid:255)(cid:1245), không
ph(cid:1191)i là node
(cid:69)(cid:1203)t (cid:255)(cid:1195)u và
node k(cid:1219)t thúc.
(cid:37)(cid:1191)ng 3.4-1 Các c(cid:1193)p Topology trong các l(cid:1247)p VPF
Các c(cid:1245)t trong các b(cid:1191)ng c(cid:1189)nh và b(cid:1191)ng node xác (cid:255)(cid:1231)nh tính k(cid:1219)t n(cid:1237)i và tính k(cid:1221)
cho quan h(cid:1227) Topology, tùy thu(cid:1245)c vào c(cid:1193)p (cid:255)(cid:1245) Topology.
(cid:37)(cid:1191)ng sau ch(cid:1229) ra các c(cid:1245)t b(cid:1203)t bu(cid:1245)c trong m(cid:1243)i b(cid:1191)ng c(cid:1131) s(cid:1251) cho c(cid:1193)p Topology
(cid:255)(cid:1133)(cid:1255)c yêu c(cid:1195)u. Các (cid:255)(cid:1211)c tính c(cid:1259)a các c(cid:1245)t này (cid:255)(cid:1133)(cid:1255)c ch(cid:1229)(cid:3) (cid:255)(cid:1231)nh trong các (cid:255)(cid:1231)nh
ngh(cid:429)a.
(cid:38)(cid:1193)p
Topolog (cid:37)(cid:1191)ng c(cid:1131) s(cid:1251) Các c(cid:1245)t b(cid:1203)t bu(cid:1245)c
y
M(cid:1211)t 3 RING_PTR
3 B(cid:1191)ng vòng (Ring table) FACE_ID, START_EDGE,
- 55 -
START_NODE, END_NODE,
RIGHT_FACE, LEFT_FACE,
RIGHT_EDGE, LEFT_EDGE
Node th(cid:1269)c th(cid:1223) CONTAINING_FACE 3
Node k(cid:1219)t n(cid:1237)i FIRST_EDGE 3-1
(cid:38)(cid:1189)nh START_NODE, END_NODE 2-1
RIGHT_EDGE, LEFT_EDGE
Node th(cid:1269)c th(cid:1223) (Không có) 2-0
C(cid:1189)nh (Không có) 0
(cid:37)(cid:1191)ng 3.4-2 Các c(cid:1245)t (cid:255)(cid:1133)(cid:1255)c yêu c(cid:1195)u (cid:255)(cid:1223)(cid:3)(cid:255)(cid:1231)nh ngh(cid:429)a quan h(cid:1227) Topology trong
VPF
Ba hình sau s(cid:1265) d(cid:1257)ng bi(cid:1223)u (cid:255)(cid:1239) m(cid:1237)i quan h(cid:1227) th(cid:1269)c th(cid:1223) (ER) (cid:255)(cid:1223) miêu t(cid:1191) các (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng c(cid:1131) s(cid:1251) và các m(cid:1237)i quan h(cid:1227) c(cid:1259)a chúng (cid:1251) m(cid:1243)i c(cid:1193)p Topology.
- 56 -
Hình 3.4-1 Quan h(cid:1227) Topology c(cid:1193)p 0
- 57 -
Hình 3.4-2 Quan h(cid:1227) Topology c(cid:1193)p 1 và 2
- 58 -
Hình 3.4-3 Quan h(cid:1227) Topology c(cid:1193)p 3
3.5 MBR – Minimum Bounding Rectangle:
(cid:48)(cid:1245)t khung bao nh(cid:1235) nh(cid:1193)t (cid:255)(cid:1133)(cid:1255)c yêu c(cid:1195)u trong b(cid:1191)ng c(cid:1189)nh ho(cid:1211)c b(cid:1191)ng m(cid:1211)t. Vì
vòng bên ngoài c(cid:1259)a m(cid:1211)t t(cid:1241)ng th(cid:1223) không có th(cid:1223) hi(cid:1227)n hình h(cid:1233)c nào nên b(cid:1191)ng
ghi FBR cho m(cid:1211)t 1 luôn có giá tr(cid:1231) null cho các XMIN, YMIN, XMAX,
YMAX.
Op/Man Tên c(cid:1245)t Mô t(cid:1191) Lo(cid:1189)i (cid:70)(cid:1245)t Lo(cid:1189)i khóa
ID Id I P M
XMIN (cid:55)(cid:1233)a (cid:255)(cid:1245) X nh(cid:1235) nh(cid:1193)t F/R N M
YMIN (cid:55)(cid:1233)a (cid:255)(cid:1245) Y nh(cid:1235) nh(cid:1193)t F/R N M
XMAX To(cid:1189)(cid:3)(cid:255)(cid:1245) X l(cid:1247)n nh(cid:1193)t F/R N M
YMAX (cid:55)(cid:1233)a (cid:255)(cid:1245) Y l(cid:1247)n nh(cid:1193)t F/R N M
- 59 -
(cid:37)(cid:1191)ng 3.5-1. (cid:264)(cid:1231)nh ngh(cid:429)a khung ch(cid:1267) nh(cid:1201)t nh(cid:1235) nh(cid:1193)t MBR
CH(cid:1132)(cid:1130)NG 4 : Gi(cid:1247)i thi(cid:1227)u v(cid:1221) GIS
4.1
Gi(cid:1247)i thi(cid:1227)u v(cid:1221) các (cid:1261)ng d(cid:1257)ng và gi(cid:1191)i pháp v(cid:1221) GIS:
GIS (Geography Information System ) là công ngh(cid:1227) ra (cid:255)(cid:1249)i vào nh(cid:1267)ng
(cid:81)(cid:259)m 60 c(cid:1259)a th(cid:1219) k(cid:1229) 20. Công ngh(cid:1227) GIS cho phép (cid:255)áp (cid:1261)ng các nhu c(cid:1195)u liên
quan t(cid:1247)i qu(cid:1191)n lý c(cid:458)ng nh(cid:1133) khai thác và s(cid:1265) d(cid:1257)ng các thông tin, d(cid:1267) li(cid:1227)u (cid:255)(cid:1231)a
lý. T(cid:1263) giai (cid:255)(cid:82)(cid:1189)n (cid:255)(cid:1195)u (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng trên các h(cid:1227) th(cid:1237)ng máy tính l(cid:1247)n (cid:1251) M(cid:1275) và
Canada, (cid:255)(cid:1219)n nay, công ngh(cid:1227) GIS (cid:255)ã (cid:255)(cid:1133)(cid:1255)c áp d(cid:1257)ng và tri(cid:1223)n khai h(cid:1219)t s(cid:1261)c r(cid:1245)ng
rãi trên ph(cid:1189)m vi toàn th(cid:1219) gi(cid:1247)i, trên nh(cid:1267)ng h(cid:1227) th(cid:1237)ng máy PC và th(cid:1249)i gian g(cid:1195)n
(cid:255)ây là trên c(cid:1191) các thi(cid:1219)t b(cid:1231) PDA.
(cid:48)(cid:1245)t s(cid:1237)(cid:3) (cid:1261)ng d(cid:1257)ng GIS n(cid:1241)i ti(cid:1219)ng trên th(cid:1219) gi(cid:1247)i hi(cid:1227)n nay (cid:255)ang (cid:255)(cid:1133)(cid:1255)c (cid:1261)ng
(cid:71)(cid:1257)ng r(cid:1245)ng rãi nh(cid:1133) MapInfo, Arc/Info, Spatial Database Engine (SDE),
ArcView GIS...: (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng v(cid:1247)i m(cid:1257)c (cid:255)ích qu(cid:1191)n lý, tích h(cid:1255)p, quy ho(cid:1189)ch
và khai thác các d(cid:1267) li(cid:1227)u b(cid:1191)n (cid:255)(cid:1239).
(cid:55)(cid:1189)i Vi(cid:1227)t Nam, công ngh(cid:1227) GIS c(cid:458)ng (cid:255)ã (cid:255)(cid:1133)(cid:1255)c nghiên c(cid:1261)u và có (cid:255)(cid:1133)(cid:1255)c m(cid:1245)t
(cid:86)(cid:1237) s(cid:1191)n ph(cid:1197)m có k(cid:1219)t qu(cid:1191)(cid:3) (cid:255)áng khích l(cid:1227). Th(cid:1249)i gian g(cid:1195)n (cid:255)ây, vi(cid:1227)c nghiên c(cid:1261)u
công ngh(cid:1227) GIS (cid:255)ã cho ra hàng lo(cid:1189)t (cid:1261)ng d(cid:1257)ng áp d(cid:1257)ng trong th(cid:1269)c t(cid:1219) t(cid:1189)i
Tp.H(cid:1239) Chí Minh, nh(cid:1133) StreetFinder c(cid:1259)a DolSoft, h(cid:1227) th(cid:1237)ng GIS trên website
Ngân hàng b(cid:1191)n (cid:255)(cid:1239) tr(cid:1269)c tuy(cid:1219)n c(cid:1259)a VDC, DMC, Dolsoft
(www.basao.com.vn), h(cid:1227) th(cid:1237)ng ch(cid:1229) d(cid:1199)n giao thông c(cid:1259)a nhóm AMI Group -
(cid:264)(cid:1189)i h(cid:1233)c Khoa h(cid:1233)c T(cid:1269) nhiên Tp.H(cid:1239) Chí Minh.
Các gi(cid:1191)i pháp v(cid:1221) GIS th(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c chia làm hai nhóm chính:
• Gi(cid:1191)i quy(cid:1219)t các bài toán ph(cid:1261)c t(cid:1189)p liên quan (cid:255)(cid:1219)n m(cid:1189)ng giao thông nh(cid:1133):
- 60 -
Các bài toán nh(cid:1133) tìm ki(cid:1219)m (cid:255)(cid:1133)(cid:1249)ng (cid:255)i t(cid:1237)i (cid:1133)u, (cid:255)(cid:76)(cid:1221)u ph(cid:1237)i l(cid:1245) trình giao
thông… th(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c áp d(cid:1257)ng trên các h(cid:1227) th(cid:1237)ng máy tính l(cid:1247)n, có c(cid:1193)u hình
(cid:80)(cid:1189)nh.
• Hi(cid:1223)n th(cid:1231) và tìm ki(cid:1219)m các thông tin b(cid:1191)n (cid:255)(cid:1239). (cid:264)ây là d(cid:1189)ng (cid:1261)ng d(cid:1257)ng b(cid:1191)n
(cid:255)(cid:1239)(cid:3) (cid:255)(cid:76)(cid:1227)n t(cid:1265), cung c(cid:1193)p các kh(cid:1191) n(cid:259)ng cho phép ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng xem b(cid:1191)n (cid:255)(cid:1239) và
tìm ki(cid:1219)m m(cid:1245)t s(cid:1237) thông tin c(cid:1195)n thi(cid:1219)t, th(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c áp d(cid:1257)ng trên các máy tính
thông th(cid:1133)(cid:1249)ng và nh(cid:1235).
4.2 Mô hình d(cid:1267) li(cid:1227)u c(cid:1259)a thông tin (cid:255)(cid:1231)a lý:
Câu h(cid:1235)i (cid:255)(cid:1211)t ra là làm sao (cid:255)(cid:1223) chuy(cid:1223)n (cid:255)(cid:1241)i thông tin b(cid:1191)n (cid:255)(cid:1239) vào máy tính và
ng(cid:1133)(cid:1255)c l(cid:1189)i? (cid:264)(cid:1223) làm (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:76)(cid:1221)u (cid:255)ó thì GIS ph(cid:1191)i l(cid:1133)u tr(cid:1267) thông tin v(cid:1221) Geometry
(hình d(cid:1189)ng và v(cid:1231) trí (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ) và Attribute (các thu(cid:1245)c tính c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng)
Hình 4.2-1 Thông tin c(cid:1195)n l(cid:1133)u tr(cid:1267)
(cid:43)(cid:1227) th(cid:1237)ng thông tin (cid:255)(cid:1231)a lý là m(cid:1245)t h(cid:1227) th(cid:1237)ng thu th(cid:1201)p, l(cid:1133)u tr(cid:1267) và x(cid:1265) lý các
thông tin d(cid:1133)(cid:1247)i d(cid:1189)ng gi(cid:1193)y, (cid:1191)nh, s(cid:1237) v(cid:1221) các hi(cid:1227)n t(cid:1133)(cid:1255)ng t(cid:1269) nhiên trong th(cid:1219) gi(cid:1247)i
th(cid:1269)c. Trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c c(cid:1193)u thành t(cid:1263) thông tin, các thông tin th(cid:1133)(cid:1249)ng
không s(cid:1265) d(cid:1257)ng (cid:255)(cid:1133)(cid:1255)c tr(cid:1269)c ti(cid:1219)p mà ph(cid:1191)i thông qua m(cid:1245)t h(cid:1227) th(cid:1237)ng các công c(cid:1257)
truy xu(cid:1193)t, tái t(cid:1189)o l(cid:1189)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng th(cid:1219) gi(cid:1247)i th(cid:1269)c mà ng(cid:1133)(cid:1249)i dùng quan tâm. M(cid:1245)t
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267) trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u d(cid:1133)(cid:1247)i d(cid:1189)ng các th(cid:1269)c th(cid:1223) hình h(cid:1233)c,
- 61 -
ng(cid:1133)(cid:1249)i dùng s(cid:1217) dùng ph(cid:1191)i tái t(cid:1189)o l(cid:1189)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:1193)y thông qua các d(cid:1267) li(cid:1227)u hình
(cid:75)(cid:1233)c này. Nh(cid:1133) v(cid:1201)y d(cid:1267) li(cid:1227)u là r(cid:1193)t (cid:255)a d(cid:1189)ng, chúng có mang tính không gian, th(cid:1249)i
gian, (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i là d(cid:1267) li(cid:1227)u (cid:255)(cid:1231)a lý. Tóm l(cid:1189)i d(cid:1267) li(cid:1227)u (cid:255)(cid:1231)a lý là các d(cid:1267) li(cid:1227)u s(cid:1237) mô t(cid:1191)
các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong th(cid:1219) gi(cid:1247)i th(cid:1269)c.
(cid:39)(cid:1267) li(cid:1227)u (cid:255)(cid:76)(cid:1189) lý (cid:255)(cid:1133)(cid:1255)c t(cid:1241) ch(cid:1261)c thành hai nhóm thông tin chính, (cid:255)ó là:
1/ Nhóm thông tin v(cid:1221) phân b(cid:1237) không gian.
2/ Nhóm thông tin v(cid:1221) thu(cid:1245)c tính c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
Không gi(cid:1237)ng nh(cid:1133) các d(cid:1189)ng d(cid:1267) li(cid:1227)u thông d(cid:1257)ng khác, d(cid:1267) li(cid:1227)u (cid:255)(cid:76)(cid:1189) lý ph(cid:1261)c
(cid:87)(cid:1189)p h(cid:1131)n, nó bao g(cid:1239)m các thông tin v(cid:1221)(cid:3)(cid:255)(cid:76)(cid:1189) lý, các quan h(cid:1227) Topology và các
thu(cid:1245)c tính phi không gian. M(cid:1233)i d(cid:1267) li(cid:1227)u (cid:255)(cid:76)(cid:1189) lý có th(cid:1223)(cid:3) (cid:255)(cid:1133)(cid:1255)c mô hình v(cid:1247)i ba
thành ph(cid:1195)n khác nhau theo quan ni(cid:1227)m topology – (cid:255)(cid:76)(cid:1223)m, (cid:255)(cid:1133)(cid:1249)ng, vùng.B(cid:1193)t kì
(cid:80)(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng t(cid:1269) nhiên nào (cid:255)(cid:1221)u có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c bi(cid:1223)u di(cid:1225)n b(cid:1205)ng m(cid:1245)t trong bao
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng này kèm theo chúng là nh(cid:1267)ng thông tin (cid:255)(cid:1211)c thù riêng.
Mô hình d(cid:1267) li(cid:1227)u (cid:255)(cid:76)(cid:1189) lý bao g(cid:1239)m b(cid:1237)n thành ph(cid:1195)n sau:
+ Thành ph(cid:1195)n khoá: là mã s(cid:1237) duy nh(cid:1193)t cho th(cid:1269)c th(cid:1223)(cid:3)(cid:255)(cid:1223) phân bi(cid:1227)t th(cid:1269)c th(cid:1223)
này v(cid:1247)i th(cid:1269)c th(cid:1223) khác.
+ (cid:264)(cid:1231)nh v(cid:1231): Ch(cid:1229) ra v(cid:1231) trí c(cid:1259)a th(cid:1269)c th(cid:1223).
+ Thành ph(cid:1195)n phi không gian: Là nh(cid:1267)ng thu(cid:1245)c tính riêng cho t(cid:1263)ng th(cid:1269)c
th(cid:1223) nh(cid:1133) t(cid:1273) l(cid:1227), kho(cid:1191)ng, (cid:255)(cid:1231)nh danh ….
+ Thành ph(cid:1195)n không gian: Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng t(cid:1133) nhiên bên ngoài (cid:255)(cid:1133)(cid:1255)c chuy(cid:1223)n
vào máy tính (cid:255)(cid:1223) qu(cid:1191)n lý theo hai cách sau: Raster và Vector
Mô hình vect(cid:1131): t(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c bi(cid:1223)u di(cid:1225)n du(cid:1247)i d(cid:1189)ng (cid:255)(cid:76)(cid:1223)m, (cid:255)(cid:1133)(cid:1249)ng và vùng. V(cid:1231)
trí không gian c(cid:1259)a m(cid:1245)t th(cid:1269)c th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c xác (cid:255)(cid:1231)nh b(cid:1251)i m(cid:1245)t h(cid:1227) to(cid:1189)(cid:3)(cid:255)(cid:1245) th(cid:1237)ng nh(cid:1193)t
toàn c(cid:1195)u. M(cid:1245)t th(cid:1269)c th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c xác (cid:255)(cid:1231)nh b(cid:1251)i c(cid:1211)p to(cid:1189)(cid:3)(cid:255)(cid:1245) (X,Y) và các thu(cid:1245)c tính
- 62 -
khác nh(cid:1133): ki(cid:1223)u (cid:255)(cid:76)(cid:1223)m, màu, hình d(cid:1189)ng.
Hình 4.2-2 D(cid:1267) li(cid:1227)u Vector
Hình 4.2-3 Các th(cid:1269)c th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c th(cid:1223) hi(cid:1227)n trên b(cid:1191)n (cid:255)(cid:1239)
Mô hình Raster: D(cid:1267) li(cid:1227)u Raster (cid:255)(cid:1133)(cid:1255)c phân bi(cid:1227)t b(cid:1205)ng (cid:255)(cid:1131)n v(cid:1231) pixel, (cid:255)ó là
hình (cid:1191)nh (cid:255)(cid:1131)n v(cid:1231) nh(cid:1235) nh(cid:1193)t ph(cid:1191)n ánh (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trong không gian.
(cid:38)(cid:1193)u trúc d(cid:1267) li(cid:1227)u ratser 2-D (cid:255)(cid:1133)(cid:1255)c xem nh(cid:1133) là m(cid:1245)t ma tr(cid:1201)n các ô l(cid:1133)(cid:1247)i (cid:255)(cid:1211)c
tr(cid:1133)ng cho m(cid:1245)t ô vuông b(cid:1221) m(cid:1211)t (cid:255)(cid:1193)t. (cid:264)(cid:1245) phân gi(cid:1191)i c(cid:1259)a d(cid:1267) li(cid:1227)u raster ph(cid:1257) thu(cid:1245)c
vào kích th(cid:1133)(cid:1247)c c(cid:1259)a nh(cid:1267)ng ô l(cid:1133)(cid:1247)i này.
- 63 -
Hình 4.2-4 D(cid:1267) li(cid:1227)u raster
(cid:54)(cid:889) khác bi(cid:847)t gi(cid:887)a hai ki(cid:843)u d(cid:887) li(cid:847)u: C(cid:1191) hai ki(cid:1223)u d(cid:1267) li(cid:1227)u này (cid:255)(cid:1221)u r(cid:1193)t h(cid:1267)u ích
nh(cid:1133) nhau, nh(cid:1133)ng chúng c(cid:458)ng có s(cid:1269) khác bi(cid:1227)t quan tr(cid:1233)ng. Sau (cid:255)ây là b(cid:1191)ng so
sánh gi(cid:1267)a hai ki(cid:1223)u d(cid:1267) li(cid:1227)u này.
Vector Raster
(cid:39)(cid:1267) li(cid:1227)u nhi(cid:1221)u h(cid:1131)n, hi(cid:1223)n th(cid:1231) ch(cid:1201)m h(cid:1131)n, (cid:39)(cid:1267) li(cid:1227)u hi(cid:1223)n th(cid:1231) ít h(cid:1131)n, nhanh h(cid:1131)n, ch(cid:1229)
không nh(cid:1267)ng hi(cid:1223)n th(cid:1231)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng mà ch(cid:1259) y(cid:1219)u hi(cid:1223)n th(cid:1231) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng mà
còn hi(cid:1223)n th(cid:1231) c(cid:1191)(cid:3)(cid:255)(cid:1211)c tính c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng không hi(cid:1223)n th(cid:1231)(cid:3)(cid:255)(cid:1211)c tính c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
(cid:37)(cid:1191)ng 4.2-1 B(cid:1191)ng so sánh ki(cid:1223)u d(cid:1267) li(cid:1227)u Raster va Vector
Hình 4.2-5 So sánh Raster và Vector
4.3
Thu th(cid:1201)p d(cid:1267) li(cid:1227)u:
Có nhi(cid:1221)u k(cid:1275) thu(cid:1201)t (cid:255)(cid:1223) thu th(cid:1201)p thông tin t(cid:1263) các ngu(cid:1239)n d(cid:1267) li(cid:1227)u. Nó th(cid:1133)(cid:1249)ng
(cid:255)(cid:1133)(cid:1255)c thu th(cid:1201)p t(cid:1263) vi(cid:1227)c (cid:255)o (cid:255)(cid:1189)c tr(cid:1269)c ti(cid:1219)p trên th(cid:1219) g i(cid:1247) i t h(cid:1269)c . Tuy nhiên, m(cid:1245)t
(cid:86)(cid:1237) l(cid:1247)n d(cid:1267) li(cid:1227)u li(cid:1227)u có th(cid:1223)(cid:3) (cid:255)(cid:1133)(cid:1255)c chuy(cid:1223)n (cid:255)(cid:1241)i t(cid:1263) b(cid:1191)n (cid:255)(cid:1239) gi(cid:1193)y sang hình th(cid:1261)c
(cid:79)(cid:1133)u tr(cid:1267) c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239)(cid:3) (cid:255)(cid:76)(cid:1227)n t(cid:1265). Có ba ph(cid:1133)(cid:1131)ng pháp th(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng (cid:255)ó là
Scanning(ph(cid:1133)(cid:1131)ng pháp quét), Digistsing (ph(cid:1133)(cid:1131)ng pháp s(cid:1237) hoá), Vectorisation
- 64 -
(ph(cid:1133)(cid:1131)ng pháp vecto hoá).
Ph(cid:1133)(cid:1131)ng pháp quét: (cid:264)ây là k(cid:1275) thu(cid:1201)t thông d(cid:1257)ng mà l(cid:1189)i ít t(cid:1237)n kém, có th(cid:1223)
(cid:255)(cid:1133)(cid:1255)c th(cid:1269)c hi(cid:1227)n trên các máy tính cá nhân hay c(cid:1259)a công ty. Máy quét s(cid:1217) l(cid:1133)u
tr(cid:1267) l(cid:1189)i các hình (cid:1191)nh c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239) gi(cid:1193)y d(cid:1133)(cid:1247)i hình th(cid:1261)c s(cid:1237) và hi(cid:1223)n th(cid:1231) chúng tr(cid:1251)
(cid:79)(cid:1189)i màn hình. Vi(cid:1227)c quét hình (cid:1191)nh t(cid:1263) b(cid:1191)n (cid:255)(cid:1239) gi(cid:1193)y t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i (cid:255)(cid:1131)n gi(cid:1191)n và nhanh
chóng, tuy nhiên ph(cid:1133)(cid:1131)ng pháp này l(cid:1189)i không th(cid:1223) cung c(cid:1193)p thu(cid:1245)c tính c(cid:1259)a các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng t(cid:1269) nhiên nh(cid:1133)(cid:3)(cid:255)(cid:76)(cid:1189) ch(cid:1229) c(cid:1259)a m(cid:1245)t toà nhà hay ngày thành l(cid:1201)p cu(cid:1191) m(cid:1245)t
sân v(cid:1201)n (cid:255)(cid:1245)ng nào (cid:255)ó. D(cid:1267) li(cid:1227)u có (cid:255)(cid:1133)(cid:1255)c t(cid:1263) nh(cid:1267)ng ph(cid:1133)(cid:1131)ng pháp này th(cid:1133)(cid:1249)ng
(cid:71)(cid:1133)(cid:1247)i d(cid:1189)ng raster cho kích th(cid:1133)(cid:1247)c r(cid:1193)t l(cid:1247)n.
Hình 4.3-1 Ph(cid:1133)(cid:1131)ng pháp Scanning
Ph(cid:1133)(cid:1131)ng pháp s(cid:1237) hoá: K(cid:1275) thu(cid:1201)t này (cid:255)òi h(cid:1235)i ph(cid:1191)i cung c(cid:1193)p các thi(cid:1219)t b(cid:1231)
chuyên ngành. B(cid:1191)n (cid:255)(cid:1239) ngu(cid:1239)n s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c trãi b(cid:1221) m(cid:1211)t ngang, m(cid:1245)t con tr(cid:1235) s(cid:1217) xác
(cid:255)(cid:1231)nh t(cid:1233)a (cid:255)(cid:1245) các (cid:255)(cid:76)(cid:1223)m t(cid:1189)o nên hình d(cid:1189)ng b(cid:1191)n (cid:255)(cid:1239), sau quá trình s(cid:1237) hoá, thu(cid:1245)c
tính c(cid:1259)a các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng m(cid:1247)i (cid:255)(cid:1133)(cid:1255)c thêm vào. Ph(cid:1133)(cid:1131)ng pháp này (cid:255)òi h(cid:1235)i nhi(cid:1221)u
- 65 -
th(cid:1249)i gian và ngu(cid:1239)n d(cid:1267) li(cid:1227)u có (cid:255)(cid:1133)(cid:1255)c t(cid:1263) k(cid:1275) thu(cid:1201)t này d(cid:1133)(cid:1247)i hình th(cid:1261)c Vect(cid:1131).
Hình 4.3-2 Ph(cid:1133)(cid:1131)ng pháp s(cid:1237) hoá
Ph(cid:1133)(cid:1131)ng pháp Vector hoá: M(cid:1245)t vài h(cid:1227) th(cid:1237)ng máy tính chuyên nghi(cid:1227)p có th(cid:1223)
chuy(cid:1223)n (cid:255)(cid:1241)i d(cid:1267) li(cid:1227)u Raster sang d(cid:1189)ng d(cid:1267) li(cid:1227)u Vect(cid:1131). Ph(cid:1133)(cid:1131)ng pháp này cho t(cid:1237)c
(cid:255)(cid:1245) nhanh do tính t(cid:1269)(cid:3)(cid:255)(cid:1245)ng nh(cid:1133)ng l(cid:1189)i kém chính xác h(cid:1131)n so v(cid:1247)i vi(cid:1227)c s(cid:1237) hoá th(cid:1259)
công.
Các k(cid:1275) thu(cid:1201)t trên (cid:255)(cid:1221)u d(cid:1269)a vào ngu(cid:1239)n d(cid:1267) li(cid:1227)u b(cid:1191)n (cid:255)(cid:1239) gi(cid:1193)y có s(cid:1209)n. Trên
th(cid:1269)c t(cid:1219), ng(cid:1133)(cid:1249)i ta còn d(cid:1269)a vào các ngành l(cid:429)nh v(cid:1269)c khác nh(cid:1133): vi(cid:1225)n thám, GPS,
phân tích (cid:1191)nh… (cid:255)(cid:1223) thu th(cid:1201)p ngu(cid:1239)n d(cid:1267) li(cid:1227)u cho GIS.
4.4
Các gi(cid:1191)i thu(cid:1201)t nghiên c(cid:1261)u v(cid:1221) GIS:
Công ngh(cid:1227) GIS liên quan tr(cid:1269)c ti(cid:1219)p t(cid:1247)i lý thuy(cid:1219)t (cid:255)(cid:1239) th(cid:1231) c(cid:458)ng nh(cid:1133) trí tu(cid:1227)
nhân t(cid:1189)o trong vi(cid:1227)c (cid:255)(cid:1133)a ra các gi(cid:1191)i thu(cid:1201)t (cid:255)(cid:1223) gi(cid:1191)i quy(cid:1219)t các bài toán liên
quan. (cid:264)ây là nh(cid:1267)ng l(cid:429)nh v(cid:1269)c nghiên c(cid:1261)u (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1195)u t(cid:1133) r(cid:1193)t nhi(cid:1221)u v(cid:1247)i các c(cid:1191)i
ti(cid:1219)n c(cid:458)ng nh(cid:1133)(cid:3)(cid:255)ã (cid:255)(cid:1133)a ra (cid:255)(cid:1133)(cid:1255)c nhi(cid:1221)u gi(cid:1191)i thu(cid:1201)t t(cid:1237)t ho(cid:1211)c t(cid:1237)i (cid:1133)u (ch(cid:1207)ng h(cid:1189)n nh(cid:1133)
các gi(cid:1191)i thu(cid:1201)t clipping, ki(cid:1223)m tra (cid:255)(cid:76)(cid:1223)m trong/ngoài (cid:255)a giác hay các gi(cid:1191)i thu(cid:1201)t
tìm ki(cid:1219)m trên c(cid:1193)u trúc d(cid:1267) li(cid:1227)u ho(cid:1211)c tìm ki(cid:1219)m l(cid:1245) trình t(cid:1237)i (cid:1133)u...)
Các bài toán v(cid:1221) GIS hi(cid:1227)n nay v(cid:1199)n (cid:255)ang (cid:255)(cid:1133)(cid:1255)c nghiên c(cid:1261)u và có nh(cid:1267)ng c(cid:1191)i
ti(cid:1219)n r(cid:1193)t t(cid:1237)t, k(cid:1223) c(cid:1191) trong các bài toán ph(cid:1261)c t(cid:1189)p.Công ngh(cid:1227) GIS v(cid:1247)i nh(cid:1267)ng l(cid:1255)i
- 66 -
th(cid:1219) c(cid:1259)a nó (cid:255)ã mang l(cid:1189)i ph(cid:1133)(cid:1131)ng pháp qu(cid:1191)n lý hi(cid:1227)u qu(cid:1191) h(cid:1131)n, m(cid:1233)i s(cid:1269) v(cid:1201)t, (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng, t(cid:1263) nh(cid:1267)ng thông tin không gian (cid:255)(cid:1219)n nh(cid:1267)ng thông tin phi không gian t(cid:1193)t
(cid:70)(cid:1191)(cid:3)(cid:255)(cid:1221)u (cid:255)(cid:1133)(cid:1255)c qu(cid:1191)n lý m(cid:1245)t cách th(cid:1237)ng nh(cid:1193)t trên cùng h(cid:1227) th(cid:1237)ng. M(cid:1233)i truy xu(cid:1193)t
(cid:255)(cid:1221)u th(cid:1223) hi(cid:1227)n tr(cid:1269)c quan h(cid:1131)n trên b(cid:1191)n (cid:255)(cid:1239) s(cid:1237) thay cho nh(cid:1267)ng dòng v(cid:259)n b(cid:1191)n (cid:255)(cid:1131)n
thu(cid:1195)n. Chính vì th(cid:1219) GIS ngày m(cid:1245)t tr(cid:1251) nên quen thu(cid:1245)c h(cid:1131)n cho ng(cid:1133)(cid:1249)i dùng,
nó (cid:255)(cid:1133)(cid:1255)c (cid:1261)ng d(cid:1257)ng trong nhi(cid:1221)u l(cid:429)nh vi(cid:1227)c t(cid:1263)(cid:3)(cid:255)(cid:1131)n gi(cid:1191)n (cid:255)(cid:1219)n ph(cid:1261)c t(cid:1189)p và chi phí
(cid:255)òi h(cid:1235)i (cid:255)(cid:1195)u t(cid:1133) ngày m(cid:1245)t th(cid:1193)p h(cid:1131)n. Có th(cid:1221) nói r(cid:1205)ng GIS ngày m(cid:1245)t t(cid:1269) kh(cid:1191)(cid:3)(cid:255)(cid:1231)nh
(cid:87)(cid:1195)m quan tr(cid:1233)ng, (cid:255)(cid:1133)(cid:1255)c các n(cid:1133)(cid:1247)c phát tri(cid:1223)n xem nh(cid:1133) m(cid:1245)t m(cid:458)i nh(cid:1233)n trong l(cid:429)nh
công ngh(cid:1227) thông tin.
4.5
Các c(cid:1193)u trúc d(cid:1267) li(cid:1227)u không gian trong GIS:
4.5.1 Cây t(cid:1261) phân (Quad Tree):
Quad Tree (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng (cid:255)(cid:1223) l(cid:1201)p ch(cid:1229) s(cid:1237) không gian 2D. M(cid:1243)i nút trong c(cid:1259)a
cây chia không gian thành 4 vùng không gian con tách bi(cid:1227)t ((cid:255)(cid:1133)(cid:1255)c g(cid:1233)i là NW,
NE, SW, SE) t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i các tr(cid:1257)c t(cid:1233)a (cid:255)(cid:1245). M(cid:1243)i vùng không gian con này
(cid:255)(cid:1133)(cid:1255)c tách m(cid:1245)t cách (cid:255)(cid:1227) quy cho (cid:255)(cid:1219)n khi có nhi(cid:1221)u nh(cid:1193)t m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng bên
trong m(cid:1243)i vùng.
- 67 -
Hình 4.5.1-1 Cây t(cid:1261) phân
Quad Tree không (cid:255)(cid:1133)(cid:1255)c cân b(cid:1205)ng và s(cid:1269) cân b(cid:1205)ng c(cid:1259)a nó ph(cid:1257) thu(cid:1245)c vào s(cid:1269)
phân b(cid:1237) c(cid:1259)a d(cid:1267) li(cid:1227)u và tr(cid:1201)t t(cid:1269) chèn d(cid:1267) li(cid:1227)u vào cây.
4.5.2 K-d Tree:
Ph(cid:1133)(cid:1131)ng pháp này s(cid:1265) d(cid:1257)ng m(cid:1245)t cây nh(cid:1231) phân (cid:255)(cid:1223) chia không gian k chi(cid:1221)u.
Cây này tách không gian thành hai không gian con t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i m(cid:1245)t trong
các t(cid:1233)a (cid:255)(cid:1245) c(cid:1259)a (cid:255)(cid:76)(cid:1223)m (cid:255)ang tách.
Hình 4.5.2-1 K-D Tree
(cid:42)(cid:1233)i level(nod) là chi(cid:1221)u dài c(cid:1259)a (cid:255)(cid:1133)(cid:1249)ng (cid:255)i t(cid:1263) nút g(cid:1237)c (cid:255)(cid:1219)n nút nod và gi(cid:1191) s(cid:1265)
các tr(cid:1257)c t(cid:1233)a (cid:255)(cid:1245)(cid:3) (cid:255)(cid:1133)(cid:1255)c (cid:255)ánh s(cid:1237) t(cid:1263) 0 (cid:255)(cid:1219)n k – 1. T(cid:1189)i b(cid:1201)c level(nod)(cid:3) (cid:1251) m(cid:1243)i nút
không gian (cid:255)(cid:1133)(cid:1255)c tách t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i s(cid:1237) t(cid:1233)a (cid:255)(cid:1245) (level(nod) mod k).
Thao tác thêm và tìm ki(cid:1219)m t(cid:1133)(cid:1131)ng t(cid:1269) nh(cid:1133)(cid:3)(cid:255)(cid:1237)i v(cid:1247)i cây nh(cid:1231) phân. Chúng ta
ch(cid:1229) ph(cid:1191)i so sánh các nút t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i s(cid:1237) t(cid:1233)a (cid:255)(cid:1245) (level(nod) mode k). C(cid:1193)u
trúc này có m(cid:1245)t b(cid:1193)t l(cid:1255)i là nh(cid:1189)y c(cid:1191)m v(cid:1247)i tr(cid:1201)t t(cid:1269) mà các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c thêm
- 68 -
vào.
4.5.3 R-Tree:
R-Tree là s(cid:1269) bi(cid:1219)n c(cid:1191)i c(cid:1259)a B-Tree cho d(cid:1267) li(cid:1227)u không gian. R-Tree là cây
cân b(cid:1205)ng và chia không gian thành các khung ch(cid:1267) nh(cid:1201)t có th(cid:1223) ch(cid:1239)ng l(cid:1193)p(ph(cid:1259))
2
Mm £
2/
£ nhau. M(cid:1243)i nút ngo(cid:1189)i tr(cid:1263) nút g(cid:1237)c ch(cid:1261)a t(cid:1263) m(cid:3)(cid:255)(cid:1219)n M con ( ). Nút g(cid:1237)c
có t(cid:1237)i thi(cid:1223)u 2 con ngo(cid:1189)i tr(cid:1263) nút lá.
Hình 4.5.3-1 R-Tree
Nút (cid:255)(cid:1133)(cid:1255)c th(cid:1223) hi(cid:1227)n b(cid:1251)i m(cid:1245)t khung bao nh(cid:1235) nh(cid:1193)t - MBR(minimum
bounding rectangle) ch(cid:1261)a t(cid:1193)t c(cid:1191) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a cây con c(cid:1259)a nó. M(cid:1243)i con
(cid:70)(cid:1259)a nút (cid:255)(cid:1133)(cid:1255)c tách (cid:255)(cid:1227) quy. Các con tr(cid:1235) tr(cid:1235)(cid:3)(cid:255)(cid:1219)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u
(cid:1251) các nút lá.
Vì các MBR có th(cid:1223) ch(cid:1239)ng l(cid:1193)p nên có th(cid:1223) c(cid:1195)n ph(cid:1191)i tìm ki(cid:1219)m trên nhi(cid:1221)u
nhánh c(cid:1259)a cây. Do (cid:255)ó, các khung ch(cid:1267) nh(cid:1201)t càng tách bi(cid:1227)t càng t(cid:1237)t. V(cid:1193)n (cid:255)(cid:1221)
- 69 -
này ph(cid:1191)i (cid:255)(cid:1133)(cid:1255)c gi(cid:1191)i quy(cid:1219)t (cid:1251) thao tác INSERT (chèn) có s(cid:1265) d(cid:1257)ng m(cid:1245)t s(cid:1237)
heuristic. Thao tác này tìm m(cid:1245)t nút lá sao cho khi chèn (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng m(cid:1247)i vào nó
(cid:86)(cid:1217) gây nh(cid:1267)ng thay (cid:255)(cid:1241)i nh(cid:1235) nh(cid:1133) có th(cid:1223).
Thao tác tách c(cid:458)ng quan tr(cid:1233)ng. M(cid:1257)c tiêu là làm gi(cid:1191)m xác su(cid:1193)t s(cid:1217) ph(cid:1191)i tìm
(cid:70)(cid:1191) hai nút m(cid:1247)i. Vi(cid:1227)c ki(cid:1223)m tra t(cid:1193)t c(cid:1191) các kh(cid:1191) n(cid:259)ng có (cid:255)(cid:1245) ph(cid:1261)c t(cid:1189)p s(cid:1237) m(cid:458), vì
th(cid:1219) nh(cid:1267)ng thu(cid:1201)t toán cho l(cid:1249)i gi(cid:1191)i x(cid:1193)p x(cid:1229) th(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng.
R-Tree là m(cid:1245)t trong nh(cid:1267)ng c(cid:1193)u trúc d(cid:1267) li(cid:1227)u không gian (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1221) c(cid:1201)p (cid:255)(cid:1219)n
nhi(cid:1221)u nh(cid:1193)t và nó r(cid:1193)t th(cid:1133)(cid:1249)ng (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng (cid:255)(cid:1223) so sánh v(cid:1247)i nh(cid:1267)ng c(cid:1193)u trúc m(cid:1247)i.
Trong các (cid:1261)ng d(cid:1257)ng GIS, R-Tree (cid:255)óng vai trò quan tr(cid:1233)ng trong vi(cid:1227)c ch(cid:1233)n
(cid:79)(cid:1269)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng hi(cid:1223)n th(cid:1231) c(cid:458)ng nh(cid:1133) kích ho(cid:1189)t nhanh các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1239) h(cid:1233)a.
4.5.4 R*-Tree:
R*-Tree là m(cid:1245)t bi(cid:1219)n c(cid:1191)i c(cid:1259)a R-Tree s(cid:1265) d(cid:1257)ng heuristic khác cho thao tác
INSERT. R-Tree c(cid:1237) g(cid:1203)ng t(cid:1237)i thi(cid:1223)u vùng c(cid:1259)a t(cid:1193)t c(cid:1191) các nút c(cid:1259)a cây. R*-Tree
(cid:78)(cid:1219)t h(cid:1255)p nhi(cid:1221)u tiêu chu(cid:1197)n: vùng b(cid:1231) ph(cid:1259) b(cid:1251)i khung ch(cid:1267) nh(cid:1201)t bao, biên c(cid:1259)a
khung ch(cid:1267) nh(cid:1201)t và s(cid:1269) ch(cid:1239)ng l(cid:1193)p gi(cid:1267)a các khung ch(cid:1267) nh(cid:1201)t.
(cid:48)(cid:1257)c tiêu làm gi(cid:1191)m vùng b(cid:1231) ph(cid:1259) b(cid:1251)i khung ch(cid:1267) nh(cid:1201)t bao là làm gi(cid:1191)m
không gian ch(cid:1219)t, có ngh(cid:429)a là không gian b(cid:1231) ph(cid:1259) b(cid:1251)i khung ch(cid:1267) nh(cid:1201)t bao ch(cid:1261)
không ph(cid:1191)i b(cid:1251)i các khung ch(cid:1267) nh(cid:1201)t b(cid:1231) ch(cid:1261)a. (cid:264)(cid:76)(cid:1221)u (cid:255)ó làm gi(cid:1191)m s(cid:1237) nhánh tìm
ki(cid:1219)m vô ích. T(cid:1237)i thi(cid:1223)u hóa biên (t(cid:1241)ng chi(cid:1221)u dài các c(cid:1189)nh) c(cid:1259)a khung ch(cid:1267) nh(cid:1201)t
bao t(cid:1237)t h(cid:1131)n là dùng nh(cid:1267)ng khung vuông. T(cid:1237)i thi(cid:1223)u hóa s(cid:1269) ch(cid:1239)ng l(cid:1193)p gi(cid:1267)a các
khung ch(cid:1267) nh(cid:1201)t làm gi(cid:1191)m s(cid:1237)(cid:3)(cid:255)(cid:1133)(cid:1249)ng ph(cid:1191)i tìm ki(cid:1219)m.
Cài (cid:255)(cid:1211)t ph(cid:1133)(cid:1131)ng pháp này thì khó h(cid:1131)n, nh(cid:1133)ng R*-Tree hi(cid:1227)u qu(cid:1191) h(cid:1131)n R-
- 70 -
Tree nhi(cid:1221)u.
4.5.5 R+-Tree:
R+-Tree là s(cid:1269) m(cid:1251) r(cid:1245)ng c(cid:1259)a R-Tree. Khác v(cid:1247)i R-Tree, các khung bao c(cid:1259)a
các nút t(cid:1189)i m(cid:1245)t m(cid:1261)c không ch(cid:1239)ng l(cid:1193)p trong c(cid:1193)u trúc này. (cid:264)(cid:1211)c tính này làm
gi(cid:1191)m s(cid:1237) l(cid:1133)(cid:1255)ng nhánh ph(cid:1191)i tìm ki(cid:1219)m c(cid:1259)a cây và làm gi(cid:1191)m phí t(cid:1241)n th(cid:1249)i gian.
Hình 4.5.5-1 R+-Tree
R+-Tree (cid:255)(cid:1133)(cid:1255)c phép tách các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng d(cid:1267) li(cid:1227)u (cid:255)(cid:1223) cho nh(cid:1267)ng ph(cid:1195)n khác
nhau c(cid:1259)a m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u (cid:1251) nhi(cid:1221)u nút c(cid:1259)a m(cid:1245)t m(cid:1261)c. N(cid:1219)u m(cid:1245)t
khung ch(cid:1267) nh(cid:1201)t ch(cid:1239)ng l(cid:1193)p m(cid:1245)t khung ch(cid:1267) nh(cid:1201)t khác, nó s(cid:1217) b(cid:1231) phân rã thành
(cid:80)(cid:1245)t nhóm các khung ch(cid:1267) nh(cid:1201)t không ch(cid:1239)ng l(cid:1193)p nhau. (cid:264)(cid:76)(cid:1221)u này làm gia t(cid:259)ng
không gian l(cid:1133)u tr(cid:1267) nh(cid:1133)ng cho phép lo(cid:1189)i b(cid:1235) s(cid:1269) ch(cid:1239)ng l(cid:1193)p gi(cid:1267)a các nút và do
- 71 -
(cid:255)ó làm gi(cid:1191)m phí t(cid:1241)n th(cid:1249)i gian tìm ki(cid:1219)m.
4.6
(cid:1260)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239):
4.6.1 Các ki(cid:1223)u b(cid:1191)n (cid:255)(cid:1239):
Hình 4.6.1-1 Các ki(cid:1223)u b(cid:1191)n (cid:255)(cid:1239)
Toppographic là b(cid:1191)n (cid:255)(cid:1239) ch(cid:1229) bao g(cid:1239)m các (cid:255)(cid:1211)c tính v(cid:1201)t lý ví d(cid:1257) nh(cid:1133)(cid:3)(cid:255)(cid:1133)(cid:1249)ng,
sông, nhà.
Contour ((cid:255)(cid:1133)(cid:1249)ng vi(cid:1221)n): là b(cid:1191)n (cid:255)(cid:1239) bao g(cid:1239)m các (cid:255)(cid:1133)(cid:1249)ng n(cid:1237)i các v(cid:1231) trí (cid:255)(cid:76)(cid:1223)m có
cùng giá tr(cid:1231) ví d(cid:1257) nh(cid:1133): (cid:255)(cid:1245) sâu c(cid:1259)a bi(cid:1223)n, (cid:255)(cid:1133)(cid:1249)ng (cid:255)(cid:1207)ng áp.
Choropleth: là b(cid:1191)n (cid:255)(cid:1239)(cid:3)(cid:255)(cid:1231)a chí.
4.6.2 Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239):
Công ngh(cid:1227) GIS c(cid:458)ng cho phép l(cid:1133)u tr(cid:1267) thông tin b(cid:1191)n (cid:255)(cid:1239) trong máy tính
theo cách máy tính hoá, ngh(cid:429)a là l(cid:1133)u tr(cid:1267) d(cid:1133)(cid:1247)i d(cid:1189)ng t(cid:1201)p tin v(cid:1247)i các c(cid:1193)u trúc
khác nhau. Và t(cid:1263)(cid:3)(cid:255)ó b(cid:1191)n (cid:255)(cid:1239) có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267), thêm, xoá, s(cid:1265)a m(cid:1245)t cách d(cid:1225)
dàng. Nhìn vào vào m(cid:1245)t b(cid:1191)n (cid:255)(cid:1239) ta c(cid:458)ng nh(cid:1201)n th(cid:1193)y (cid:255)(cid:1133)(cid:1255)c các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng chính
(cid:70)(cid:1259)a b(cid:1191)n (cid:255)(cid:1239), nó bao g(cid:1239)m: Line((cid:255)(cid:1133)(cid:1249)ng), Area (vùng), Point ((cid:255)(cid:76)(cid:1223)m), và Text
- 72 -
(v(cid:259)n b(cid:1191)n).
Hình 4.6.2-1 Các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng chính trong b(cid:1191)n (cid:255)(cid:1239)
4.7
(cid:1260)ng d(cid:1257)ng GIS trên PocketPC:
(cid:54)(cid:1269) phát tri(cid:1223)n m(cid:1189)nh m(cid:1217) c(cid:1259)a Internet, c(cid:458)ng nh(cid:1133) kh(cid:1191) n(cid:259)ng c(cid:1259)a công ngh(cid:1227)
ph(cid:1195)n c(cid:1261)ng, (cid:255)ã d(cid:1199)n (cid:255)(cid:1219)n s(cid:1269) ra (cid:255)(cid:1249)i c(cid:1259)a các thi(cid:1219)t b(cid:1231)(cid:3)(cid:1261)ng d(cid:1257)ng Internet. Theo các
nhà nghiên c(cid:1261)u th(cid:1231) tr(cid:1133)(cid:1249)ng, m(cid:1211)c dù PC v(cid:1199)n gi(cid:1267) vai trò ch(cid:1259) y(cid:1219)u trong vi(cid:1227)c x(cid:1265)
lý và h(cid:1243) tr(cid:1255) công vi(cid:1227)c, nh(cid:1133)ng các thi(cid:1219)t b(cid:1231) Internet hay thi(cid:1219)t b(cid:1231) h(cid:1243) tr(cid:1255) cá nhân
(cid:86)(cid:1217) ngày càng kh(cid:1207)ng (cid:255)(cid:1231)nh (cid:255)(cid:1133)(cid:1255)c vai trò c(cid:1259)a nó trên th(cid:1231) tr(cid:1133)(cid:1249)ng.
Ra (cid:255)(cid:1249)i vào nh(cid:1267)ng n(cid:259)m 90 c(cid:1259)a th(cid:1219) k(cid:1229) 20, Pocket PC là m(cid:1245)t d(cid:1189)ng thi(cid:1219)t b(cid:1231)
(cid:70)(cid:1195)m tay PDA (Personal Digital Assistant) s(cid:1265) d(cid:1257)ng h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành Pocket PC,
(cid:80)(cid:1245)t bi(cid:1219)n th(cid:1223) c(cid:1259)a Windows CE, m(cid:1245)t h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành nhúng (cid:255)(cid:1133)(cid:1255)c Microsoft
phát tri(cid:1223)n cho các thi(cid:1219)t b(cid:1231) không là PC (non-PC).
Do (cid:255)(cid:1211)c tr(cid:1133)ng nh(cid:1235) g(cid:1233)n, (cid:255)(cid:1133)(cid:1255)c thi(cid:1219)t k(cid:1219) v(cid:1247)i m(cid:1257)c (cid:255)ích giúp ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng
(cid:79)(cid:1133)u tr(cid:1267) các thông tin cá nhân, công vi(cid:1227)c c(cid:1195)n thi(cid:1219)t c(cid:458)ng nh(cid:1133) các ph(cid:1195)n m(cid:1221)m t(cid:1237)i
thi(cid:1223)u trên m(cid:1245)t thi(cid:1219)t b(cid:1231) nh(cid:1235) g(cid:1233)n, và s(cid:1265) d(cid:1257)ng m(cid:1245)t h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành h(cid:1233) hàng
Windows, Pocket PC (cid:255)ã (cid:255)(cid:1133)(cid:1255)c khá nhi(cid:1221)u nhà s(cid:1191)n xu(cid:1193)t ph(cid:1195)n m(cid:1221)m quan tâm
trong l(cid:429)nh v(cid:1269)c phát tri(cid:1223)n (cid:1261)ng d(cid:1257)ng, trong (cid:255)ó có các (cid:1261)ng d(cid:1257)ng GIS.
Tuy nhiên, Pocket PC ch(cid:1189)y trên n(cid:1221)n h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành nhúng Windows CE,
- 73 -
(cid:75)(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành ch(cid:1229) cung c(cid:1193)p b(cid:1245) nh(cid:1247) m(cid:1245)t cách gi(cid:1247)i h(cid:1189)n cho các (cid:1261)ng d(cid:1257)ng phát
tri(cid:1223)n trên nó. Vì v(cid:1201)y, các (cid:1261)ng d(cid:1257)ng liên quan t(cid:1247)i h(cid:1227) th(cid:1237)ng GIS phát tri(cid:1223)n trên
Pocket PC và h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành Windows CE g(cid:1211)p ph(cid:1191)i các v(cid:1193)n (cid:255)(cid:1221) v(cid:1221) t(cid:1237)i (cid:1133)u hoá
(cid:69)(cid:1245) nh(cid:1247) c(cid:458)ng nh(cid:1133) t(cid:1237)c (cid:255)(cid:1245) và th(cid:1133)(cid:1249)ng có t(cid:1237)c (cid:255)(cid:1245) ch(cid:1201)m h(cid:1131)n nhi(cid:1221)u so v(cid:1247)i các
(cid:1261)ng d(cid:1257)ng trên PC thông th(cid:1133)(cid:1249)ng. Ngoài ra, do kh(cid:1191) n(cid:259)ng l(cid:1133)u tr(cid:1267) có gi(cid:1247)i h(cid:1189)n,
vi(cid:1227)c (cid:1261)ng d(cid:1257)ng GIS trên môi tr(cid:1133)(cid:1249)ng này c(cid:458)ng g(cid:1211)p không ít khó kh(cid:259)n.
Trên th(cid:1231) tr(cid:1133)(cid:1249)ng, m(cid:1245)t s(cid:1237) s(cid:1191)n ph(cid:1197)m GIS trên Pocket PC (cid:255)ã (cid:255)(cid:1133)(cid:1255)c ph(cid:1241) bi(cid:1219)n
(cid:85)(cid:1245)ng rãi nh(cid:1133) Pocket Street c(cid:1259)a Microsoft, MapInPocket c(cid:1259)a Information
- 74 -
Technologies India Ltd...
CH(cid:1132)(cid:1130)NG 5 : Gi(cid:1247)i thi(cid:1227)u v(cid:1221) chu(cid:1197)n OpenGIS
5.1
Các ki(cid:1223)u d(cid:1267) li(cid:1227)u hình h(cid:1233)c c(cid:1259)a OpenGIS:
Các c(cid:1193)u trúc ch(cid:1229) m(cid:1257)c không gian, ví d(cid:1257) R-Tree, (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng trong các h(cid:1227)
qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u không gian (SDBMS) (cid:255)(cid:1223) t(cid:259)ng t(cid:1237)c quá trình x(cid:1265) lý các
truy v(cid:1193)n ch(cid:1207)ng h(cid:1189)n nh(cid:1133) các truy v(cid:1193)n vùng ho(cid:1211)c các truy v(cid:1193)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
lân c(cid:1201)n g(cid:1195)n nh(cid:1193)t. Do (cid:255)ó, ph(cid:1195)n cài (cid:255)(cid:1211)t các thao tác tìm ki(cid:1219)m lân c(cid:1201)n th(cid:1133)(cid:1249)ng s(cid:1265)
(cid:71)(cid:1257)ng R-Tree. Tuy nhiên, n(cid:1219)u các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng không gian khá ph(cid:1261)c t(cid:1189)p, vi(cid:1227)c
(cid:79)(cid:1193)y các lân c(cid:1201)n c(cid:1259)a vài (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng theo cách này v(cid:1199)n tiêu t(cid:1237)n r(cid:1193)t nhi(cid:1221)u th(cid:1249)i
gian vì s(cid:1269) ph(cid:1261)c t(cid:1189)p c(cid:1259)a (cid:255)ánh giá các quan h(cid:1227) lân c(cid:1201)n trên các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)ó.
Thêm vào (cid:255)ó, khi t(cid:1189)o ra t(cid:1193)t c(cid:1191) các (cid:255)(cid:1133)(cid:1249)ng lân c(cid:1201)n v(cid:1247)i m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ngu(cid:1239)n
(cid:255)(cid:1133)(cid:1255)c cho, m(cid:1245)t s(cid:1237) l(cid:1133)(cid:1255)ng r(cid:1193)t l(cid:1247)n các thao tác tìm ki(cid:1219)m lân c(cid:1201)n ph(cid:1191)i (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c
hi(cid:1227)n. Nhi(cid:1221)u h(cid:1227) th(cid:1237)ng qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u không gian là khá t(cid:429)nh vì không
có nhi(cid:1221)u c(cid:1201)p nh(cid:1201)t trên các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ch(cid:1207)ng h(cid:1189)n nh(cid:1133) các b(cid:1191)n (cid:255)(cid:1239)(cid:3)(cid:255)(cid:1231)a lý. Cho
nên các ki(cid:1223)u d(cid:1267) li(cid:1227)u hình h(cid:1233)c cùng v(cid:1247)i nhi(cid:1221)u thao tác trên các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
- 75 -
(cid:255)(cid:1133)(cid:1255)c các h(cid:1227) qu(cid:1191)n tr(cid:1231) c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u sau này h(cid:1243) tr(cid:1255).
Hình 5.1-1 H(cid:1227) phân c(cid:1193)p các ki(cid:1223)u d(cid:1267) li(cid:1227)u hình h(cid:1233)c c(cid:1259)a OpenGIS.
5.2
OpenGIS Specification ((cid:255)(cid:1211)c t(cid:1191) OpenGIS):
5.2.1 Các khái ni(cid:1227)m:
(cid:264)(cid:1211)c t(cid:1191) OpenGIS (OpenGIS Specification), m(cid:1245)t (cid:255)(cid:1211)c t(cid:1191) toàn di(cid:1227)n c(cid:1259)a m(cid:1245)t
(cid:69)(cid:1245) khung ph(cid:1195)n m(cid:1221)m cho các truy c(cid:1201)p phân tán (cid:255)(cid:1219)n geodata và nh(cid:1267)ng tài
nguyên geoprocessing. (cid:264)(cid:1211)c t(cid:1191) này cung c(cid:1193)p cho các nhà phát tri(cid:1223)n ph(cid:1195)n m(cid:1221)m
trên th(cid:1219) gi(cid:1247)i m(cid:1245)t khuôn m(cid:1199)u giao di(cid:1227)n chung c(cid:1211)n k(cid:1217)(cid:3)(cid:255)(cid:1223) vi(cid:1219)t các ph(cid:1195)n m(cid:1221)m
ho(cid:1189)t (cid:255)(cid:1245)ng chung v(cid:1247)i các ph(cid:1195)m m(cid:1221)m d(cid:1189)ng OpenGIS khác.B(cid:1245) khung
OpenGIS (OpenGIS framework) g(cid:1239)m:
- M(cid:1245)t cách th(cid:1261)c chung d(cid:1189)ng s(cid:1237) th(cid:1223) hi(cid:1227)n Trái (cid:255)(cid:1193)t và các hi(cid:1227)n t(cid:1133)(cid:1255)ng c(cid:1259)a nó
trên c(cid:1131) s(cid:1251) toán h(cid:1233)c và khái ni(cid:1227)m.
- M(cid:1245)t mô hình chung (cid:255)(cid:1223) th(cid:1269)c hi(cid:1227)n nh(cid:1267)ng truy nh(cid:1201)p, qu(cid:1191)n lý, thao tác,
- 76 -
trình bày, và chia s(cid:1215) geodata gi(cid:1267)a nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng thông tin.
- M(cid:1245)t b(cid:1245) khung (cid:255)(cid:1223) s(cid:1265) d(cid:1257)ng mô hình Open Geodata và mô hình dich v(cid:1257)
Open GIS (cid:255)(cid:1223) gi(cid:1191)i quy(cid:1219)t v(cid:1193)n (cid:255)(cid:1221) kh(cid:1191) n(cid:259)ng không ho(cid:1189)t (cid:255)ông k(cid:1219)t h(cid:1255)p không ch(cid:1229)
(cid:89)(cid:1221) m(cid:1211)t k(cid:429) thu(cid:1201)t mà c(cid:1191) v(cid:1221) m(cid:1211)t t(cid:1241) ch(cid:1261)c.
Các nhà phát tri(cid:1223)n xây d(cid:1269)ng nh(cid:1267)ng h(cid:1227) th(cid:1237)ng có giao di(cid:1227)n thích (cid:1261)ng
OpenGIS Specification s(cid:1217) t(cid:1189)o ra nh(cid:1267)ng ph(cid:1195)n m(cid:1221)m trung (middleware), ph(cid:1195)n
(cid:80)(cid:1221)m b(cid:1245) ph(cid:1201)n (componentware) và nh(cid:1267)ng (cid:1261)ng d(cid:1257)ng có th(cid:1223) ki(cid:1223)m soát m(cid:1245)t
ph(cid:1189)m vi r(cid:1245)ng các ki(cid:1223)u geodata và các hàm geoprocessing. Ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng
các h(cid:1227) th(cid:1237)ng này có th(cid:1223) chia s(cid:1215) m(cid:1245)t không gian d(cid:1267) li(cid:1227)u ti(cid:1221)m n(cid:259)ng r(cid:1245)ng l(cid:1247)n
qua m(cid:1189)ng, dù d(cid:1267) li(cid:1227)u (cid:255)(cid:1133)(cid:1255)c s(cid:1191)n sinh vào các th(cid:1249)i (cid:255)(cid:76)(cid:1223)m khác nhau b(cid:1251)i các
nhóm không liên quan s(cid:1265) d(cid:1257)ng các h(cid:1227) th(cid:1237)ng s(cid:1191)n xu(cid:1193)t khác nhau cho nh(cid:1267)ng
(cid:80)(cid:1257)c (cid:255)ích khác nhau và th(cid:1201)t s(cid:1269) có th(cid:1223)(cid:3)(cid:255)ang hi(cid:1227)n h(cid:1267)u d(cid:1133)(cid:1247)i s(cid:1269)(cid:3)(cid:255)(cid:76)(cid:1221)u khi(cid:1223)n chính
(cid:70)(cid:1259)a h(cid:1227) th(cid:1237)ng (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng cho vi(cid:1227)c s(cid:1191)n xu(cid:1193)t c(cid:1259)a h(cid:1233). Geodata k(cid:1219) th(cid:1263)a
(Legacy geodata) (cid:255)(cid:1133)(cid:1255)c t(cid:1241) ch(cid:1261)c trong các h(cid:1227) th(cid:1237)ng có giao di(cid:1227)n thích (cid:1261)ng
OpenGIS Specification s(cid:1217) có th(cid:1223)(cid:3) (cid:255)(cid:1133)(cid:1255)c truy xu(cid:1193)t b(cid:1251)i các ph(cid:1195)n m(cid:1221)m có giao
di(cid:1227)n thích (cid:1261)ng OpenGIS Specification khác. OpenGIS Specification cung
(cid:70)(cid:1193)p m(cid:1245)t b(cid:1245) khung cho nh(cid:1267)ng ng(cid:1133)(cid:1249)i phát tri(cid:1223)n ph(cid:1195)n m(cid:1221)m (cid:255)(cid:1223) t(cid:1189)o ra ph(cid:1195)n m(cid:1221)m
cho phép nh(cid:1267)ng ng(cid:1133)(cid:1249)i dùng c(cid:1259)a h(cid:1233) truy nh(cid:1201)p và x(cid:1265) lý d(cid:1267) li(cid:1227)u (cid:255)(cid:1231)a lý t(cid:1263)
nh(cid:1267)ng ngu(cid:1239)n (cid:255)a d(cid:1189)ng qua m(cid:1245)t giao di(cid:1227)n tính toán chung bên trong m(cid:1245)t n(cid:1221)n
(cid:87)(cid:1191)ng công ngh(cid:1227) thông tin m(cid:1251).
(cid:1132)u (cid:255)(cid:76)(cid:1223)m:
(cid:264)(cid:1237)i v(cid:1247)i ng(cid:1133)(cid:1249)i phát tri(cid:1223)n (cid:1261)ng d(cid:1257)ng có th(cid:1223) d(cid:1225) dàng và linh ho(cid:1189)t h(cid:1131)n (cid:255)(cid:1223): Vi(cid:1219)t
ph(cid:1195)n m(cid:1221)m (cid:255)(cid:1223) truy c(cid:1201)p geodata.Vi(cid:1219)t ph(cid:1195)n m(cid:1221)m (cid:255)(cid:1223) truy c(cid:1201)p nh(cid:1267)ng tài nguyên
geoprocessing.S(cid:1265)a (cid:255)(cid:1241)i nh(cid:1267)ng (cid:1261)ng d(cid:1257)ng theo nhu c(cid:1195)u ng(cid:1133)(cid:1249)i dùng c(cid:1257) th(cid:1223), tích
- 77 -
(cid:75)(cid:1255)p phi không gian và không gian. Và có th(cid:1223) ch(cid:1233)n m(cid:1245)t môi tr(cid:1133)(cid:1249)ng phát tri(cid:1223)n
hay cung c(cid:1193)p nh(cid:1267)ng (cid:1261)ng d(cid:1257)ng trên nh(cid:1267)ng n(cid:1221)n t(cid:1191)ng (cid:255)a d(cid:1189)ng và c(cid:458)ng có th(cid:1223) s(cid:1265)
(cid:71)(cid:1257)ng l(cid:1189)i mã geoprocessing
(cid:264)(cid:1237)i v(cid:1247)i nhà qu(cid:1191)n lý thông tin linh ho(cid:1189)t h(cid:1131)n trong vi(cid:1227)c Truy c(cid:1201)p và / ho(cid:1211)c
phân ph(cid:1237)i geodata, cung c(cid:1193)p nh(cid:1267)ng kh(cid:1191) n(cid:259)ng geoprocessing t(cid:1247)i nh(cid:1267)ng khách
hàng, tích h(cid:1255)p D(cid:1267) li(cid:1227)u (cid:255)(cid:1231)a lý và s(cid:1269) x(cid:1265) lý vào m(cid:1245)t ki(cid:1219)n trúc tính toán liên h(cid:1255)p
và có th(cid:1223) ch(cid:1233)n nh(cid:1267)ng n(cid:1221)n thích h(cid:1255)p - ki(cid:1223)u máy tính cá nhân, ki(cid:1223)u máy ch(cid:1259),
và ki(cid:1223)u n(cid:1221)n tính toán phân tán ( CORBA, OLE / COM, DCE, ….) cho nên
(cid:85)(cid:1193)t phù h(cid:1255)p v(cid:1247)i ng(cid:1133)(cid:1249)i dùng v(cid:1247)i nh(cid:1267)ng công c(cid:1257) geoprocessing (cid:255)úng (và (cid:255)(cid:1133)(cid:1255)c
(cid:255)(cid:1231)nh c(cid:1253)(cid:3)(cid:255)úng)
(cid:264)(cid:1237)i v(cid:1247)i nh(cid:1267)ng ng(cid:1133)(cid:1249)i dùng cu(cid:1237)i là nh(cid:1267)ng ng(cid:1133)(cid:1249)i h(cid:1133)(cid:1251)ng l(cid:1255)i t(cid:1237)i (cid:1133)u, nh(cid:1201)n
(cid:255)(cid:1133)(cid:1255)c: S(cid:1269) truy nh(cid:1201)p th(cid:1249)i gian th(cid:1269)c t(cid:1247)i m(cid:1245)t h(cid:1227) th(cid:1237)ng v(cid:458) tr(cid:1257) thông tin (cid:255)(cid:1231)a lý l(cid:1247)n
(cid:85)(cid:1245)ng h(cid:1131)n so v(cid:1247)i h(cid:1227) th(cid:1237)ng v(cid:458) tr(cid:1257) thông tin (cid:255)(cid:1231)a lý có th(cid:1223) truy c(cid:1201)p ngày nay,
nhi(cid:1221)u (cid:1261)ng d(cid:1257)ng h(cid:1131)n ( v(cid:1247)i nh(cid:1267)ng middleware và tài li(cid:1227)u h(cid:1243)n h(cid:1255)p) khai thác
thông tin (cid:255)(cid:1231)a lý, nh(cid:1267)ng kh(cid:1191) n(cid:259)ng làm vi(cid:1227)c v(cid:1247)i nh(cid:1267)ng ki(cid:1223)u geodata và (cid:255)(cid:1231)nh
(cid:71)(cid:1189)ng khác nhau bên trong m(cid:1245)t môi tr(cid:1133)(cid:1249)ng (cid:1261)ng d(cid:1257)ng (cid:255)(cid:1131)n và dòng công vi(cid:1227)c (
workflow ) liên t(cid:1257)c, mà không quan tâm (cid:255)(cid:1219)n chi ti(cid:1219)t c(cid:1259)a nh(cid:1267)ng ki(cid:1223)u và
nh(cid:1267)ng (cid:255)(cid:1231)nh d(cid:1189)ng này.
5.2.2 Nh(cid:1267)ng d(cid:1231)ch v(cid:1257) OpenGIS (OpenGIS Services ):
(cid:55)(cid:1201)p h(cid:1255)p nh(cid:1267)ng d(cid:1231)ch v(cid:1257)(cid:3)(cid:255)(cid:1133)(cid:1255)c c(cid:1195)n (cid:255)(cid:1223):
- Truy nh(cid:1201)p và x(cid:1265) lý nh(cid:1267)ng ki(cid:1223)u (cid:255)(cid:1231)nh ngh(cid:429)a (cid:255)(cid:1239) h(cid:1233)a (cid:255)(cid:1231)a lý trong Mô hình
Geodata M(cid:1251).
- Cung c(cid:1193)p nh(cid:1267)ng kh(cid:1191) n(cid:259)ng (cid:255)(cid:1223) chia s(cid:1215) geodata bên trong nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng
- 78 -
ng(cid:1133)(cid:1249)i dùng mà s(cid:1265) d(cid:1257)ng m(cid:1245)t t(cid:1201)p h(cid:1255)p chung nh(cid:1267)ng (cid:255)(cid:1231)nh ngh(cid:429)a (cid:255)(cid:1211)c tính (cid:255)(cid:1231)a lý
và biên d(cid:1231)ch gi(cid:1267)a nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng khác nhau nh(cid:1267)ng ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng nh(cid:1267)ng
(cid:87)(cid:1201)p h(cid:1255)p (cid:255)(cid:1231)nh ngh(cid:429)a (cid:255)(cid:1211)c tính (cid:255)(cid:1231)a lý khác nhau.
5.2.3 (cid:48)(cid:1245)t mô hình nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng thông tin (Information Communities Model ):
- M(cid:1245)t cách th(cid:1261)c cho m(cid:1245)t c(cid:1245)ng (cid:255)(cid:1239)ng nh(cid:1267)ng nhà s(cid:1191)n xu(cid:1193)t geodata và nh(cid:1267)ng
ng(cid:1133)(cid:1249)i dùng (cid:255)ã chia s(cid:1215) m(cid:1245)t t(cid:1201)p h(cid:1255)p chung nh(cid:1267)ng (cid:255)(cid:1231)nh ngh(cid:429)a (cid:255)(cid:1211)c tính (cid:255)(cid:1231)a lý
nh(cid:1205)m b(cid:1191)o trì th(cid:1269)c s(cid:1269) có hi(cid:1227)u qu(cid:1191)nh (cid:255)(cid:1231)nh ngh(cid:429)a này và (cid:255)(cid:1223) l(cid:1201)p danh m(cid:1257)c, chia
(cid:86)(cid:1215) nh(cid:1267)ng t(cid:1201)p d(cid:1267) li(cid:1227)u thích (cid:1261)ng nh(cid:1267)ng (cid:255)(cid:1231)nh ngh(cid:429)a (cid:255)ó.
- M(cid:1245)t cách chính xác t(cid:1237)i (cid:1133)u và hi(cid:1227)u qu(cid:1191) cho nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng khác nhau
nh(cid:1267)ng ng(cid:1133)(cid:1249)i dùng và nh(cid:1267)ng nhà s(cid:1191)n xu(cid:1193)t geodata (cid:255)(cid:1223) chia s(cid:1215) geodata m(cid:1211)c
nh(cid:1267)ng t(cid:1201)p h(cid:1255)p (cid:255)(cid:1231)nh ngh(cid:429)a (cid:255)(cid:1211)c tính (cid:255)(cid:1231)a lý khác nhau c(cid:1259)a h(cid:1233). Cho ví d(cid:1257), nh(cid:1267)ng
(cid:78)(cid:429) s(cid:1133), nh(cid:1267)ng nhà (cid:255)(cid:1231)a ch(cid:1193)t, nhà nông h(cid:1233)c có th(cid:1223) tìm ki(cid:1219)m (cid:255)(cid:1223) chia s(cid:1215) d(cid:1267) li(cid:1227)u
(cid:255)(cid:1193)t dù h(cid:1233) mô t(cid:1191)(cid:3)(cid:255)(cid:1211)c (cid:255)(cid:76)(cid:1223)m các ki(cid:1223)u (cid:255)(cid:1193)t khác nhau theo nh(cid:1267)ng m(cid:1257)c tiêu ngh(cid:1221)
nghi(cid:1227)p khác nhau. Nh(cid:1267)ng mô hình c(cid:1245)ng (cid:255)(cid:1239)ng thông tin (cid:255)(cid:1231)nh ngh(cid:429)a m(cid:1245)t s(cid:1131)(cid:3)(cid:255)(cid:1239)
nh(cid:1205)m t(cid:1269)(cid:3)(cid:255)(cid:1245)ng biên d(cid:1231)ch gi(cid:1267)a nh(cid:1267)ng t(cid:1263)(cid:3)(cid:255)(cid:76)(cid:1223)n (cid:255)(cid:1211)c tính (cid:255)(cid:1231)a lý khác nhau.
5.2.4 (cid:264)(cid:1211)c (cid:255)(cid:76)(cid:1223)m:
OpenGIS Specification có nh(cid:1267)ng (cid:255)(cid:1211)c (cid:255)(cid:76)(cid:1223)m chính nh(cid:1133) sau:
Interoperable - OpenGIS Specification cung c(cid:1193)p nh(cid:1267)ng giao di(cid:1227)n chu(cid:1197)n
(cid:255)(cid:1237)i v(cid:1247)i geodata và nh(cid:1267)ng d(cid:1231)ch v(cid:1257) geoprocessing. Nh(cid:1267)ng giao di(cid:1227)n này h(cid:1243) tr(cid:1255)
trong nh(cid:1267)ng h(cid:1227) th(cid:1237)ng (cid:255)(cid:1245)c l(cid:1201)p và các m(cid:1189)ng): s(cid:1269) truy c(cid:1201)p geodata, nh(cid:1267)ng thao
tác geoprocessing khách/ch(cid:1259) phân tán, thao tác geoprocessing ngang hàng
- 79 -
phân tán.
Supportive of Information Communities - OpenGIS Specification t(cid:1237)i (cid:1133)u
hóa vi(cid:1227)c chia s(cid:1215) d(cid:1267) li(cid:1227)u bên trong m(cid:1245)t c(cid:1245)ng (cid:255)(cid:1239)ng nh(cid:1267)ng ng(cid:1133)(cid:1249)i dùng và
nh(cid:1267)ng nhà s(cid:1191)n xu(cid:1193)t chia s(cid:1215) m(cid:1245)t t(cid:1263)(cid:3)(cid:255)(cid:76)(cid:1223)n (cid:255)(cid:1211)c tính (cid:255)(cid:1231)a lý chung và gi(cid:1267)a nh(cid:1267)ng
(cid:87)(cid:1201)p h(cid:1255)p nh(cid:1267)ng ng(cid:1133)(cid:1249)i dùng và nh(cid:1267)ng nhà s(cid:1191)n xu(cid:1193)t mà nh(cid:1267)ng t(cid:1263)(cid:3)(cid:255)(cid:76)(cid:1223)n (cid:255)(cid:1211)c tính
(cid:255)(cid:1231)a lý c(cid:1259)a h(cid:1233) không trùng.
Ubiquitous - OpenGIS Specification cung c(cid:1193)p nh(cid:1267)ng ph(cid:1133)(cid:1131)ng ti(cid:1227)n cho t(cid:1193)t
(cid:70)(cid:1191) các (cid:1261)ng d(cid:1257)ng công ngh(cid:1227) thông tin (cid:255)(cid:1223) s(cid:1209)n sàng khai thác nh(cid:1267)ng d(cid:1231)ch v(cid:1257)
OpenGIS qua nh(cid:1267)ng giao di(cid:1227)n và nh(cid:1267)ng giao th(cid:1261)c chu(cid:1197)n.
Reliable - Geoprocessing phân tán yêu c(cid:1195)u (cid:1251) m(cid:1245)t m(cid:1261)c cao kh(cid:1191) n(cid:259)ng (cid:255)(cid:76)(cid:1221)u
khi(cid:1223)n và s(cid:1269) toàn v(cid:1213)n. OpenGIS Specification cung c(cid:1193)p m(cid:1245)t khung công ngh(cid:1227)
(cid:75)(cid:1243) tr(cid:1255) OpenGIS g(cid:1203)n nhãn nh(cid:1267)ng s(cid:1131)(cid:3) (cid:255)(cid:1239)(cid:3) (cid:255)(cid:1223)(cid:3) (cid:255)(cid:1133)a (cid:255)(cid:1219)n cho nh(cid:1267)ng ng(cid:1133)(cid:1249)i mua
ph(cid:1195)n m(cid:1221)m trên n(cid:1221)n OpenGIS nh(cid:1267)ng s(cid:1269) b(cid:1191)o (cid:255)(cid:1191)m nh(cid:1193)t (cid:255)(cid:1231)nh c(cid:1259)a tính ho(cid:1189)t (cid:255)(cid:1245)ng
liên h(cid:1255)p (interoperability).
Easy to use - Ph(cid:1195)n m(cid:1221)m trên n(cid:1221)n OpenGIS Specification s(cid:1217) s(cid:1265) d(cid:1257)ng
nh(cid:1267)ng quy t(cid:1203)c và nh(cid:1267)ng th(cid:1259) t(cid:1257)c ch(cid:1203)c ch(cid:1203)n và logic cho vi(cid:1227)c s(cid:1265) d(cid:1257)ng geodata
và các d(cid:1231)ch v(cid:1257) geoprocessing. Geodata không c(cid:1195)n thi(cid:1219)t và s(cid:1269) ph(cid:1261)c t(cid:1189)p
geoprocessing (cid:255)(cid:1133)(cid:1255)c d(cid:1193)u b(cid:1251)i ng(cid:1133)(cid:1249)i phát tri(cid:1223)n (cid:1261)ng d(cid:1257)ng.
Portable - OpenGIS Specification là s(cid:1269)(cid:3) (cid:255)(cid:1245)c l(cid:1201)p c(cid:1259)a môi tr(cid:1133)(cid:1249)ng ph(cid:1195)n
(cid:80)(cid:1221)m, n(cid:1221)n t(cid:1191)ng ph(cid:1195)n c(cid:1261)ng và m(cid:1189)ng.
Cooperative - OpenGIS Specification h(cid:1243) tr(cid:1255) tính toán dùng chung và
nh(cid:1267)ng tài nguyên d(cid:1267) li(cid:1227)u dùng chung. Công ngh(cid:1227) OpenGIS có th(cid:1223) d(cid:1225) dàng
(cid:255)(cid:1133)(cid:1255)c k(cid:1219)t h(cid:1255)p v(cid:1247)i công ngh(cid:1227) thông tin khác.
Scalable - Ph(cid:1195)n m(cid:1221)m trên n(cid:1221)n OpenGIS Specification th(cid:1133)(cid:1249)ng g(cid:1239)m có
- 80 -
nh(cid:1267)ng thành ph(cid:1195)n ph(cid:1195)n m(cid:1221)m geoprocessing "c(cid:1203)m và ch(cid:1189)y" mà có th(cid:1223)(cid:3)(cid:255)(cid:1133)(cid:1255)c
(cid:70)(cid:1193)u hình cho b(cid:1193)t kì (cid:1261)ng d(cid:1257)ng geoprocessing nào ho(cid:1211)c môi tr(cid:1133)(cid:1249)ng tính toán
chu(cid:1197)n, b(cid:1193)t ch(cid:1193)p kích th(cid:1133)(cid:1247)c c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.
Extensible - OpenGIS Specification có th(cid:1223)(cid:3) (cid:255)(cid:1239)ng hóa nh(cid:1267)ng ph(cid:1195)n m(cid:1221)m
geoprocessing và ki(cid:1223)u geodata m(cid:1247)i, và có th(cid:1223)(cid:3)(cid:255)(cid:76)(cid:1221)u ti(cid:1219)t nh(cid:1267)ng công ngh(cid:1227) m(cid:1247)i
mà OpenGIS Specification ph(cid:1257) thu(cid:1245)c trên (cid:255)ó, nh(cid:1133) nh(cid:1267)ng n(cid:1221)n tính toán phân
tán, khi chúng tr(cid:1251) thành s(cid:1209)n có.
Compatible - OpenGIS Specification gi(cid:1267) gìn s(cid:1269)(cid:3)(cid:255)(cid:1195)u t(cid:1133) c(cid:1259)a nh(cid:1267)ng ng(cid:1133)(cid:1249)i
dùng trong d(cid:1267) li(cid:1227)u và ph(cid:1195)n m(cid:1221)m th(cid:1263)a k(cid:1219) b(cid:1251)i vi(cid:1227)c cung c(cid:1193)p nh(cid:1267)ng ph(cid:1133)(cid:1131)ng
ti(cid:1227)n (cid:255)(cid:1223) hoà nh(cid:1201)p li(cid:1221)n kh(cid:1237)i, trong m(cid:1245)t ki(cid:1223)u cách trong su(cid:1237)t (cid:255)(cid:1237)i v(cid:1247)i ng(cid:1133)(cid:1249)i
dùng, ph(cid:1195)n m(cid:1221)m geoprocessing và geodata hi(cid:1227)n có cùng công ngh(cid:1227) thông tin
liên quan v(cid:1247)i nh(cid:1267)ng (cid:1261)ng d(cid:1257)ng geoprocessing thích (cid:1261)ng OpenGIS. (cid:264)(cid:1239)ng th(cid:1249)i,
OpenGIS Specification t(cid:1133)(cid:1131)ng thích và không g(cid:1237)i lên nhau v(cid:1247)i vi(cid:1227)c h(cid:1243) tr(cid:1255)
công ngh(cid:1227) thông tin, nh(cid:1267)ng h(cid:1227) th(cid:1237)ng qu(cid:1191)n lý c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u và h(cid:1227) tính toán
phân tán (cid:255)(cid:1211)c bi(cid:1227)t.
Implementable - M(cid:1257)c (cid:255)ích quan tr(cid:1233)ng nh(cid:1193)t là nh(cid:1267)ng công ngh(cid:1227)(cid:3)(cid:255)ó (cid:255)(cid:1133)(cid:1255)c
ch(cid:1229) rõ trong OpenGIS Specification ph(cid:1191)i có th(cid:1223) cài (cid:255)(cid:1211)t (cid:255)(cid:1133)(cid:1255)c.
5.2.5 Phân lo(cid:1189)i:
OpenGIS Specification s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c phát tri(cid:1223)n và phát hành thành nhi(cid:1221)u ph(cid:1195)n
trong vài n(cid:259)m. Nó bao g(cid:1239)m (cid:255)(cid:1211)c t(cid:1191) tr(cid:1263)u t(cid:1133)(cid:1255)ng ( Abstract Specification ) và
(cid:80)(cid:1245)t chu(cid:1243)i nh(cid:1267)ng (cid:255)(cid:1211)c t(cid:1191) cài (cid:255)(cid:1211)t ( Implementation Specification ) (cid:255)(cid:1223) th(cid:1269)c
hi(cid:1227)n trên nh(cid:1267)ng h(cid:1227) tính toán phân tán ( distributed computing platforms
(DCPs)) (cid:255)ang c(cid:1189)nh tranh hi(cid:1227)n th(cid:1249)i g(cid:1239)m có Common Object Request Broker
(CORBA c(cid:1259)a Object Management Group(OMG), Object Linking and
- 81 -
Embedding/Common Object Model (OLE/COM) c(cid:1259)a Microsoft; Distributed
Computing Environment (DCE) c(cid:1259)a Open Software Foundation (OSF); Java
(cid:70)(cid:1259)a SunSoft và nh(cid:1267)ng nhóm khác.
OpenGIS Abstract Specification: (cid:37)(cid:1245) ph(cid:1201)n c(cid:1259)a OpenGIS Specification
(cid:255)(cid:1133)(cid:1255)c t(cid:1189)o ra b(cid:1251)i (cid:1258)y ban k(cid:1275) thu(cid:1201)t OGC (cid:255)(cid:1223) cung c(cid:1193)p s(cid:1269) mô t(cid:1191)(cid:3)(cid:1251) m(cid:1261)c cao tính
(cid:81)(cid:259)ng ho(cid:1189)t (cid:255)(cid:1245)ng (cid:255)(cid:1133)(cid:1255)c cung c(cid:1193)p bên trong OpenGIS Implementation
Specification. M(cid:1257)c (cid:255)ích c(cid:1259)a Abstract Specification là t(cid:1189)o ra và l(cid:1201)p tài li(cid:1227)u
(cid:80)(cid:1245)t mô hình khái ni(cid:1227)m (cid:255)(cid:1259)(cid:3)(cid:255)(cid:1223) cho phép t(cid:1189)o ra Implementation Specification.
OpenGIS Implementation Specification: Nh(cid:1267)ng Implementation
Specification là nh(cid:1267)ng (cid:255)(cid:1211)c t(cid:1191) n(cid:1221)n t(cid:1191)ng công ngh(cid:1227) rõ ràng cho s(cid:1269) cài (cid:255)(cid:1211)t
nh(cid:1267)ng giao di(cid:1227)n l(cid:1201)p trình (cid:1261)ng d(cid:1257)ng ph(cid:1195)n m(cid:1221)m chu(cid:1197)n công nghi(cid:1227)p. (cid:264)ó là
nh(cid:1267)ng (cid:255)(cid:1211)c t(cid:1191) ph(cid:1195)n m(cid:1221)m chi ti(cid:1219)t (cid:255)(cid:1223) cài (cid:255)(cid:1211)t các b(cid:1245) ph(cid:1201)n c(cid:1259)a OpenGIS Abstract
Specification trên nh(cid:1267)ng h(cid:1227) tính toán phân tán (cid:255)(cid:1211)c bi(cid:1227)t nh(cid:1133) OLE / COM và
CORBA. (cid:1258)y ban K(cid:1275) thu(cid:1201)t OGC phát hành Nh(cid:1267)ng yêu c(cid:1195)u cho nh(cid:1267)ng (cid:255)(cid:1221)
ngh(cid:1231) ( RFPs), và (cid:255)áp l(cid:1189)i nh(cid:1267)ng (cid:255)(cid:76)(cid:1221)u (cid:255)ó, nh(cid:1267)ng thành viên h(cid:1255)p thành (cid:255)(cid:1245)i (cid:255)(cid:1223)
trình bày OpenGIS Implementation Specification cho (cid:1258)y ban k(cid:1275) thu(cid:1201)t và (cid:1258)y
ban qu(cid:1191)n lý OGC xem l(cid:1189)i. Ngoài vi(cid:1227)c cho phép Tính v(cid:1201)n hành v(cid:1247)i nhau
(Interoperability) v(cid:1247)i m(cid:1243)i DCP, nh(cid:1267)ng nhóm này c(cid:1237) g(cid:1203)ng cung c(cid:1193)p tính n(cid:259)ng
Interoperability c(cid:1269)c (cid:255)(cid:1189)i gi(cid:1267)a các DCPs.
5.3
OpenGIS Abstract Specification:
(cid:42)(cid:1239)m hai mô hình Essential Model và Abstract Specification.
Trong hai mô hình trên thì mô hình Essential Model (cid:255)(cid:1131)n gi(cid:1191)n h(cid:1131)n, còn mô
hình Abstract Model tr(cid:1263)u t(cid:1133)(cid:1255)ng h(cid:1131)n. Và c(cid:1191) hai mô hình (cid:255)(cid:1221)u b(cid:1203)t ngu(cid:1239)n t(cid:1263)
- 82 -
ph(cid:1133)(cid:1131)ng pháp phân tích thi(cid:1219)t k(cid:1219)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Syntropy.
5.3.1 Essential Model (mô hình b(cid:1191)n ch(cid:1193)t ):
(cid:48)(cid:1257)c (cid:255)ích:
+ Là thi(cid:1219)t l(cid:1201)p s(cid:1269) k(cid:1219)t n(cid:1237)i khái ni(cid:1227)m c(cid:1259)a vi(cid:1227)c thi(cid:1219)t k(cid:1219) h(cid:1227) th(cid:1237)ng ho(cid:1211)c
ph(cid:1195)n m(cid:1221)m t(cid:1247)i th(cid:1219) gi(cid:1247)i th(cid:1269)c.
+ Là s(cid:1269) mô t(cid:1191) th(cid:1219) gi(cid:1247)i th(cid:1269)c ho(cid:1189)t (cid:255)(cid:1245)ng ra sao và gi(cid:1191)i thích nh(cid:1267)ng
thu(cid:1201)t ng(cid:1267) th(cid:1219) gi(cid:1247)i th(cid:1269)c nh(cid:1133) các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng, giao di(cid:1227)n, hành vi, gi(cid:1247)i h(cid:1189)n,..Các
(cid:79)(cid:1133)(cid:1255)c (cid:255)(cid:1239), phân tích tr(cid:1133)(cid:1249)ng h(cid:1255)p s(cid:1265) d(cid:1257)ng (Use-Case analysis), các mô hình t(cid:1263)
ng(cid:1267) hay (cid:255)(cid:1239) h(cid:1233)a có c(cid:1193)u trúc (cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng (cid:255)(cid:1223) giúp cho vi(cid:1227)c hi(cid:1223)u rõ nh(cid:1267)ng
thông (cid:255)(cid:76)(cid:1227)p.
+ Nh(cid:1205)m th(cid:1193)u hi(cid:1223)u s(cid:1269) trình bày, khám phá, truy c(cid:1201)p, và x(cid:1265) lý thông
tin (cid:255)(cid:1231)a lý (cid:1251) nhi(cid:1221)u c(cid:1193)p (cid:255)(cid:1245).
Tính hoàn h(cid:811)o: Là chìa khóa (cid:255)(cid:1223) phát tri(cid:1223)n nh(cid:1267)ng OpenGIS
Implementation Specification m(cid:1189)nh m(cid:1217). Nó áp d(cid:1257)ng s(cid:1269) nghiêm ng(cid:1211)t có tính
phân tích (cid:255)(cid:1237)i v(cid:1247)i tình tr(cid:1189)ng c(cid:1131) b(cid:1191)n b(cid:1205)ng vi(cid:1227)c geoprocessing, mô t(cid:1191) chín c(cid:1193)p
(cid:255)(cid:1245) tr(cid:1263)u t(cid:1133)(cid:1255)ng hóa:
(cid:243). Real World (Th(cid:1219) gi(cid:1247)i th(cid:1269)c). Là th(cid:1219) gi(cid:1247)i th(cid:1269)c s(cid:1269) v(cid:1247)i t(cid:1193)t c(cid:1191) s(cid:1269) ph(cid:1261)c t(cid:1189)p
và h(cid:1243)n lo(cid:1189)n c(cid:1259)a nó.
(cid:243). Conceptual World (Th(cid:1219) gi(cid:1247)i khái ni(cid:1227)m). Là th(cid:1219) gi(cid:1247)i các th(cid:1261) chúng ta
bi(cid:1219)t và (cid:255)(cid:1211)t tên.
(cid:243). Geospatial World (Th(cid:1219) gi(cid:1247)i không gian (cid:255)(cid:1231)a lý). Là th(cid:1219) gi(cid:1247)i c(cid:1259)a nh(cid:1267)ng
(cid:69)(cid:1191)n (cid:255)(cid:1239) và h(cid:1227) th(cid:1237)ng thông tin (cid:255)(cid:1231)a lý, trong (cid:255)ó chúng ta l(cid:1269)a ch(cid:1233)n các th(cid:1261) c(cid:1257) th(cid:1223)
trong th(cid:1219) gi(cid:1247)i khái ni(cid:1227)m (cid:255)(cid:1223) bi(cid:1223)u di(cid:1225)n theo m(cid:1245)t cách có tính ch(cid:1193)t t(cid:1133)(cid:1255)ng tr(cid:1133)ng
- 83 -
và tr(cid:1263)u t(cid:1133)(cid:1255)ng trong nh(cid:1267)ng b(cid:1191)n (cid:255)(cid:1239) và geodata.
(cid:243). Dimensional World (Th(cid:1219) gi(cid:1247)i có kích th(cid:1133)(cid:1247)c). Là th(cid:1219) gi(cid:1247)i Geospatial
sau khi nó (cid:255)ã (cid:255)(cid:1133)(cid:1255)c (cid:255)o (cid:255)(cid:1189)c (cid:255)(cid:1223) có s(cid:1269) chính xác v(cid:1221) v(cid:1231) trí và hình h(cid:1233)c.
(cid:243). Project World (Th(cid:1219) gi(cid:1247)i (cid:255)(cid:1221) án). Là m(cid:1245)t m(cid:1191)nh (cid:255)(cid:1133)(cid:1255)c ch(cid:1233)n c(cid:1259)a th(cid:1219) gi(cid:1247)i
geospatial h(cid:1267)u h(cid:1133)(cid:1247)ng – cho ví d(cid:1257), nh(cid:1267)ng l(cid:1247)p thu(cid:1245)c ch(cid:1259)(cid:3) (cid:255)(cid:1221) nh(cid:1193)t (cid:255)(cid:1231)nh bên
trong m(cid:1245)t GIS – mà (cid:255)(cid:1133)(cid:1255)c l(cid:1201)p c(cid:1193)u trúc ng(cid:1267) ngh(cid:429)a và nói cách khác cho m(cid:1245)t
(cid:80)(cid:1257)c (cid:255)ích, ngh(cid:1221) nghi(cid:1227)p, qui (cid:255)(cid:1231)nh, ho(cid:1211)c mi(cid:1221)n công nghi(cid:1227)p (cid:255)(cid:1211)c thù.
(cid:243). OpenGIS Points ((cid:264)(cid:76)(cid:1223)m OpenGIS). Làm sao nh(cid:1267)ng (cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)nh
ngh(cid:429)a, t(cid:1241)ng quát và cho m(cid:1245)t Project World (cid:255)(cid:1211)c bi(cid:1227)t, theo m(cid:1245)t cách mà t(cid:1193)t c(cid:1191)
các h(cid:1227) th(cid:1237)ng ph(cid:1195)n m(cid:1221)m có th(cid:1223) liên quan (cid:255)(cid:1219)n.
(cid:243). OpenGIS Geometry (Hình h(cid:1233)c OpenGIS). Làm sao hình h(cid:1233)c (cid:255)(cid:1133)(cid:1255)c xây
(cid:71)(cid:1269)ng d(cid:1269)a vào OpenGIS Points, theo m(cid:1245)t cách mà t(cid:1193)t c(cid:1191) các h(cid:1227) th(cid:1237)ng ph(cid:1195)n
(cid:80)(cid:1221)m có th(cid:1223) liên quan (cid:255)(cid:1219)n.
(cid:243). OpenGIS Feature (Tính n(cid:259)ng OpenGIS). Làm sao nh(cid:1267)ng tính n(cid:259)ng
OpenGIS (cid:255)(cid:1133)(cid:1255)c xây d(cid:1269)ng t(cid:1263) hình h(cid:1233)c, t(cid:1263) các thu(cid:1245)c tính, và m(cid:1245)t h(cid:1227) th(cid:1237)ng
tham chi(cid:1219)u không gian, theo m(cid:1245)t cách mà cho m(cid:1133)(cid:1255)n chính nó (cid:255)(cid:1223) s(cid:1265) d(cid:1257)ng
bên trong nh(cid:1267)ng giao di(cid:1227)n m(cid:1251) cho geoprocessing, và theo m(cid:1245)t cách mà h(cid:1243)
tr(cid:1255) – qua m(cid:1245)t t(cid:1201)p h(cid:1255)p nh(cid:1267)ng d(cid:1231)ch v(cid:1257) OpenGIS – m(cid:1245)t s(cid:1237) hàm t(cid:1247)i h(cid:1189)n nh(cid:1133)
nh(cid:1267)ng danh m(cid:1257)c geodata.
(cid:243). OpenGIS Feature Collections (Nh(cid:1267)ng t(cid:1201)p h(cid:1255)p tính n(cid:259)ng OpenGIS).
Làm sao nh(cid:1267)ng tính n(cid:259)ng OpenGIS (cid:255)(cid:1133)(cid:1255)c qu(cid:1191)n lý trong nh(cid:1267)ng t(cid:1201)p h(cid:1255)p tính
- 84 -
(cid:81)(cid:259)ng OpenGIS.
Hình 5.3.1-1 L(cid:1247)p khái ni(cid:1227)m
Trong 9 c(cid:1193)p (cid:255)(cid:1245) trên, c(cid:1193)p (cid:255)(cid:1245) Project world là quan tr(cid:1233)ng nh(cid:1193)t cho m(cid:1257)c (cid:255)ích
(cid:70)(cid:1259)a OpenGIS Abstract Specification. Mô t(cid:1191) c(cid:1259)a Project World là (cid:255)(cid:1211)c bi(cid:1227)t
quan tr(cid:1233)ng vì nó gi(cid:1247)i thi(cid:1227)u khái ni(cid:1227)m c(cid:1259)a Geospatial Information
Community mà s(cid:1269) chia s(cid:1215) nh(cid:1267)ng thông tin không gian (cid:255)(cid:1231)a lý di(cid:1225)n ra trong (cid:255)ó
(cid:1251) m(cid:1245)t m(cid:1261)c t(cid:1269) nhiên, không khó kh(cid:259)n gì v(cid:1219) m(cid:1211)t ng(cid:1267) ngh(cid:429)a.
5.3.2 Abstract Model:
(cid:48)(cid:1257)c (cid:255)ính:
+ Là Mô hình tr(cid:1263)u t(cid:1133)(cid:1255)ng.
+ (cid:264)(cid:1231)nh ngh(cid:429)a h(cid:1227) th(cid:1237)ng ph(cid:1195)n m(cid:1221)m cu(cid:1237)i cùng theo m(cid:1245)t l(cid:1237)i cài (cid:255)(cid:1211)t
trung l(cid:1201)p.là s(cid:1269) mô t(cid:1191) ph(cid:1195)n m(cid:1221)m c(cid:1195)n ph(cid:1191)i làm vi(cid:1227)c ra sao.
+ (cid:264)(cid:1189)i di(cid:1227)n m(cid:1245)t th(cid:1235)a hi(cid:1227)p gi(cid:1267)a các mô hình c(cid:1259)a nh(cid:1267)ng môi tr(cid:1133)(cid:1249)ng
cài (cid:255)(cid:1211)t d(cid:1269)(cid:3)(cid:255)(cid:1231)nh nh(cid:1203)m t(cid:1247)i. Các mô hình t(cid:1263) ng(cid:1267) hay (cid:255)(cid:1239) h(cid:1233)a có c(cid:1193)u trúc c(cid:458)ng
- 85 -
(cid:255)(cid:1133)(cid:1255)c khuy(cid:1219)n khích s(cid:1265) d(cid:1257)ng cho vi(cid:1227)c gi(cid:1191)i thích các s(cid:1131)(cid:3)(cid:255)(cid:1239) khái ni(cid:1227)m.
+ Xác (cid:255)(cid:1231)nh các l(cid:1247)p, l(cid:1247)p con (cid:255)(cid:1133)(cid:1255)c quan tâm, (cid:255)(cid:1231)nh danh và mô t(cid:1191) m(cid:1237)i
quan h(cid:1227) gi(cid:1267)a chúng, và mô t(cid:1191) tr(cid:1263)u t(cid:1133)(cid:1255)ng các giao di(cid:1227)n (cid:255)(cid:1133)(cid:1255)c cài (cid:255)(cid:1211)t trong
ph(cid:1195)n m(cid:1221)m.
Mô hình tr(cid:1263)u t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c chia thành 14 ch(cid:1259)(cid:3)(cid:255)(cid:1221) (Topic) sau:
- Topic 1(Feature Geometry): Cung c(cid:1193)p nh(cid:1267)ng c(cid:1193)u trúc hình h(cid:1233)c cho các
(cid:255)(cid:1211)c tính d(cid:1189)ng hình h(cid:1233)c.
- Topic 2 (Spatial Reference Systems): Cung c(cid:1193)p nh(cid:1267)ng h(cid:1227) th(cid:1237)ng tham
chi(cid:1219)u không gian mà nh(cid:1249)(cid:3)(cid:255)ó các (cid:255)(cid:1211)c tính liên h(cid:1227) v(cid:1247)i các v(cid:1231) trí trên Trái (cid:255)(cid:1193)t
theo quy t(cid:1203)c (cid:255)o (cid:255)(cid:1189)c.
- Topic 3 (Locational Geometry): Thêm nh(cid:1267)ng công c(cid:1257) cho vi(cid:1227)c tham
chi(cid:1219)u không gian (cid:255)(cid:1231)a lý (cid:255)(cid:1219)n nh(cid:1267)ng t(cid:1233)a (cid:255)(cid:1245)(cid:3) (cid:1191)nh, t(cid:1233)a (cid:255)(cid:1245) quét, và nh(cid:1267)ng h(cid:1227)
th(cid:1237)ng tham chi(cid:1219)u gián ti(cid:1219)p mà không (cid:255)(cid:1133)(cid:1255)c tìm th(cid:1193)y trong các v(cid:259)n b(cid:1191)n (cid:255)o
(cid:255)(cid:1189)c.
- Topic 4 (Stored Functions and Interpolation ): c(cid:1195)n thi(cid:1219)t (cid:255)(cid:1223) h(cid:1243) tr(cid:1255) cho
Topic 6. H(cid:1195)u h(cid:1219)t nh(cid:1267)ng vùng ph(cid:1259) ph(cid:1257) thu(cid:1245)c vào 2 hàm ch(cid:1261)a. Nh(cid:1267)ng hàm
ánh x(cid:1189) theo th(cid:1261) t(cid:1269) “t(cid:1263)” và “(cid:255)(cid:1219)n” m(cid:1245)t không gian t(cid:1233)a (cid:255)(cid:1245) toán h(cid:1233)c thì (cid:255)(cid:1133)(cid:1255)c g(cid:1233)i
là Ph(cid:1189)m vi vùng ph(cid:1259).
- Topic 5 (Features and Feature Collections): K(cid:1219)t h(cid:1255)p v(cid:1247)i các Topic 6, 7
quan tâm c(cid:1131) b(cid:1191)n v(cid:1221) vi(cid:1227)c x(cid:1265) lý và trình di(cid:1225)n thông tin không gian (cid:255)(cid:1231)a lý.
- Topic 6 (The Coverage Type): cùng v(cid:1247)i các Topic 5, 7 quan tâm c(cid:1131) b(cid:1191)n
(cid:89)(cid:1221) vi(cid:1227)c x(cid:1265) lý và trình di(cid:1225)n thông tin không gian (cid:255)(cid:1231)a lý.
- Topic 7 (Earth Imagery): Cung c(cid:1193)p m(cid:1245)t c(cid:1193)u trúc (cid:255)(cid:76)(cid:1221)u ti(cid:1219)t t(cid:1193)t c(cid:1191) các lo(cid:1189)i
- 86 -
và cách s(cid:1265) d(cid:1257)ng nh(cid:1267)ng hình (cid:1191)nh s(cid:1237) c(cid:1259)a Trái (cid:255)(cid:1193)t.
- Topic 8 (Relations Between Features): Cung c(cid:1193)p vi(cid:1227)c l(cid:1201)p mô hình và
trình di(cid:1225)n nh(cid:1267)ng quan h(cid:1227) gi(cid:1267)a các (cid:255)(cid:1211)c tính.
- Topic 9 (Quality): cùng các Topic 5, 14 có n(cid:1245)i dung lý thuy(cid:1219)t thông tin
cao mà không liên k(cid:1219)t m(cid:1189)nh m(cid:1217) v(cid:1247)i nh(cid:1267)ng v(cid:1193)n (cid:255)(cid:1221) không gian (cid:255)(cid:1231)a lý.
- Topic 10 (Transfer Technology): Công ngh(cid:1227) truy(cid:1221)n t(cid:1191)i x(cid:1265) lý nh(cid:1267)ng bi(cid:1223)u
di(cid:1225)n t(cid:1261)c th(cid:1249)i c(cid:1191) nh(cid:1267)ng hành vi truy v(cid:1193)n và kích th(cid:1133)(cid:1247)c có th(cid:1223) ch(cid:1193)p nh(cid:1201)n (cid:255)(cid:1133)(cid:1255)c
- Topic 11 (Metadata): Cung c(cid:1193)p nh(cid:1267)ng mô hình và các truy v(cid:1193)n metadata.
- Topic 12 (OpenGIS Service Architecture): (cid:264)(cid:1231)nh ngh(cid:429)a m(cid:1245)t mô hình
chung cho vi(cid:1227)c cài (cid:255)(cid:1211)t nh(cid:1267)ng d(cid:1231)ch v(cid:1257)(cid:3) (cid:255)(cid:1223) truy c(cid:1201)p, qu(cid:1191)n lý, thao tác, bi(cid:1223)u
di(cid:1225)n, và chia s(cid:1215) geodata gi(cid:1267)a nh(cid:1267)ng c(cid:1245)ng (cid:255)(cid:1239)ng thông tin.
- Topic 13 (Catalogs): Cung c(cid:1193)p nh(cid:1267)ng d(cid:1231)ch v(cid:1257) không gian (cid:255)(cid:1231)a lý, trong
khi nh(cid:1267)ng ph(cid:1195)n còn l(cid:1189)i (cid:255)(cid:1133)(cid:1255)c t(cid:1201)p trung trên không gian (cid:255)(cid:1231)a lý chia s(cid:1215).
- Topic 14 (Semantics and Information Communities): cùng các Topic 5, 9
có n(cid:1245)i dung lý thuy(cid:1219)t thông tin cao mà không liên k(cid:1219)t m(cid:1189)nh m(cid:1217) v(cid:1247)i nh(cid:1267)ng
(cid:89)(cid:1193)n (cid:255)(cid:1221) không gian (cid:255)(cid:1231)a lý.
- 87 -
Quan h(cid:1227) gi(cid:1267)a ch(cid:1259)(cid:3)(cid:255)(cid:1221):
Hình 5.3.2-1 Quan h(cid:1227) gi(cid:1267)a các ch(cid:1259)(cid:3)(cid:255)(cid:1221) trong mô hình tr(cid:1263)u t(cid:1133)(cid:1255)ng
Các ch(cid:1259)(cid:3)(cid:255)(cid:1221) (topic) (cid:255)(cid:1133)(cid:1255)c t(cid:1241) ch(cid:1261)c thành các gói s(cid:1265) d(cid:1257)ng ngôn ng(cid:1267) UML.
(cid:48)(cid:1243)i gói là t(cid:1201)p h(cid:1255)p các ki(cid:1223)u và các giao di(cid:1227)n liên quan t(cid:1189)o thành các thành
- 88 -
ph(cid:1195)n nh(cid:1193)t quán cho vi(cid:1227)c thi(cid:1219)t k(cid:1219) h(cid:1227) th(cid:1237)ng ph(cid:1195)n m(cid:1221)m.
CH(cid:1132)(cid:1130)NG 6 : (cid:55)(cid:1241)ng quan v(cid:1221) PocketPC
6.1
(cid:55)(cid:1241)ng quan v(cid:1221) PocketPC:
Pocket PC có t(cid:1237)c (cid:255)(cid:1245) ch(cid:1201)m, kh(cid:1191) n(cid:259)ng l(cid:1133)u tr(cid:1267) kém, ngu(cid:1239)n cung c(cid:1193)p n(cid:259)ng
(cid:79)(cid:1133)(cid:1255)ng không t(cid:1237)t…Microsoft (cid:255)ã thêm các tính n(cid:259)ng m(cid:1247)i cho các thi(cid:1219)t b(cid:1231)
Pocket PC (Pocket PC – device, nh(cid:1267)ng thi(cid:1219)t b(cid:1231) PDA s(cid:1265) d(cid:1257)ng h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành
Pocket PC) v(cid:1247)i h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành Pocket PC ch(cid:1261)a phiên b(cid:1191)n thu g(cid:1233)n c(cid:1259)a m(cid:1245)t s(cid:1237)
ph(cid:1195)n m(cid:1221)m nh(cid:1133) Internet Explorer, Word, Excel, Outlook, Microsoft Reader,
Windows Media Player… PocketPC s(cid:1265) d(cid:1257)ng các chu(cid:1197)n c(cid:1203)m công nghi(cid:1227)p, có
tính t(cid:1133)(cid:1131)ng thích và m(cid:1251) r(cid:1245)ng cao nh(cid:1133) có th(cid:1223) k(cid:1219)t n(cid:1237)i v(cid:1247)i máy tính (cid:255)(cid:1223) bàn,
(cid:74)(cid:1203)n thêm storage card, modem k(cid:1219)t n(cid:1237)i Internet...
6.2
Kh(cid:1191) n(cid:259)ng l(cid:1201)p trình trên PocketPC:
Do WindowsCE (cid:255)(cid:1133)(cid:1255)c xây d(cid:1269)ng và thi(cid:1219)t k(cid:1219) t(cid:1263) ki(cid:1219)n trúc n(cid:1221)n sao cho nó có
th(cid:1223)(cid:3) (cid:1251) m(cid:1261)c nh(cid:1235) nh(cid:1193)t có th(cid:1223). Cho nên các hàm d ù n g (cid:255) (cid:1223) l(cid:1201) p t r ì n h (cid:255)(cid:1133)(cid:1255)c
ch(cid:1233)n l(cid:1233)c l(cid:1189)i (cid:255)(cid:1223) s(cid:1265) d(cid:1257)ng ho(cid:1211)c không h(cid:1243) tr(cid:1255) các hàm này n(cid:1267)a. Và WinCE
cung c(cid:1193)p các th(cid:1133) vi(cid:1227)n h(cid:1227) th(cid:1237)ng. nh(cid:1133)ng không còn cung c(cid:1193)p nhi(cid:1221)u th(cid:1133) vi(cid:1227)n
khác nhau nh(cid:1133) GDI, Kernel và User n(cid:1267)a.
6.3 (cid:48)(cid:1245)t s(cid:1237) v(cid:1193)n (cid:255)(cid:1221) khi l(cid:1201)p trình (cid:1261)ng d(cid:1257)ng trên PocketPC:
6.3.1 (cid:55)(cid:1237)c (cid:255)(cid:1245) và các h(cid:1243) tr(cid:1255) kh(cid:1191) n(cid:259)ng hi(cid:1223)n th(cid:1231):
(cid:264)(cid:1237)i v(cid:1247)i các (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239), m(cid:1245)t trong nh(cid:1267)ng v(cid:1193)n (cid:255)(cid:1221) quan tr(cid:1233)ng nh(cid:1193)t
(cid:70)(cid:1195)n ph(cid:1191)i quan tâm, (cid:255)ó là d(cid:1267) li(cid:1227)u và h(cid:1243) tr(cid:1255) hi(cid:1223)n th(cid:1231) c(cid:1259)a môi tr(cid:1133)(cid:1249)ng.
Khi xây d(cid:1269)ng (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239) trên Pocket PC, c(cid:1195)n chú ý t(cid:1247)i vi(cid:1227)c ch(cid:1229)
- 89 -
(cid:255)(cid:1133)(cid:1255)c s(cid:1265) d(cid:1257)ng các tính n(cid:259)ng GDI (cid:255)(cid:1133)(cid:1255)c h(cid:1243) tr(cid:1255) trên môi tr(cid:1133)(cid:1249)ng này. Do c(cid:1195)n
ph(cid:1191)i thu g(cid:1233)n ki(cid:1219)n trúc c(cid:458)ng nh(cid:1133) các h(cid:1243) tr(cid:1255) nh(cid:1205)m m(cid:1257)c (cid:255)ích t(cid:1237)i (cid:1133)u t(cid:1237)c (cid:255)(cid:1245)
cho các thi(cid:1219)t b(cid:1231) nhúng có tài nguyên gi(cid:1247)i h(cid:1189)n, Windows CE (cid:255)ã ch(cid:1229) cung
(cid:70)(cid:1193)p m(cid:1245)t cách gi(cid:1247)i h(cid:1189)n các tính n(cid:259)ng c(cid:1259)a GDI. (cid:264)(cid:76)(cid:1221)u này s(cid:1217) gây khó kh(cid:259)n
trong quá trình xây d(cid:1269)ng ch(cid:1133)(cid:1131)ng trình.
6.3.2 Kh(cid:1191) n(cid:259)ng và hình th(cid:1261)c l(cid:1133)u tr(cid:1267):
Các Pocket PC thông th(cid:1133)(cid:1249)ng có ROM ít nh(cid:1193)t là 8MB, RAM ít nh(cid:1193)t là
8MB. Các Pocket PC chuyên d(cid:1257)ng có ROM ít nh(cid:1193)t là 12MB, RAM ít nh(cid:1193)t
là 16MB. Tuy nhiên, yêu c(cid:1195)u v(cid:1221) dung l(cid:1133)(cid:1255)ng c(cid:1259)a RAM và ROM tùy thu(cid:1245)c
vào lo(cid:1189)i CPU s(cid:1265) d(cid:1257)ng, nh(cid:1267)ng thành ph(cid:1195)n mà nhà s(cid:1191)n xu(cid:1193)t h(cid:1243) tr(cid:1255) trên
Pocket PC và tu(cid:484) thu(cid:1245)c vào lo(cid:1189)i Pocket PC.
Do h(cid:1189)n ch(cid:1219) v(cid:1221) ngu(cid:1239)n n(cid:259)ng l(cid:1133)(cid:1255)ng pin và kích th(cid:1133)(cid:1247)c c(cid:1259)a thi(cid:1219)t b(cid:1231), Pocket
PC không s(cid:1265) d(cid:1257)ng các thi(cid:1219)t b(cid:1231) l(cid:1133)u tr(cid:1267) nh(cid:1133)(cid:3)(cid:255)(cid:429)a c(cid:1261)ng hay (cid:255)(cid:429)a m(cid:1221)m mà nó s(cid:1265)
(cid:71)(cid:1257)ng m(cid:1245)t c(cid:1131) ch(cid:1219) g(cid:1233)i là B(cid:1245) l(cid:1133)u tr(cid:1267)(cid:3) (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (Object store). Object store là
(cid:80)(cid:1245)t vùng RAM (cid:255)(cid:1133)(cid:1255)c ng(cid:1133)(cid:1249)i dùng (cid:255)(cid:1231)nh ngh(cid:429)a, dùng (cid:255)(cid:1223) l(cid:1133)u tr(cid:1267) các t(cid:1201)p tin,
các thông tin registry và các database (g(cid:1233)i là Object Store d(cid:1189)ng Storage).
Vùng RAM còn l(cid:1189)i dùng làm b(cid:1245) nh(cid:1247) cho các ch(cid:1133)(cid:1131)ng trình (cid:255)(cid:1133)(cid:1255)c th(cid:1269)c thi
(g(cid:1233)i là Object Store d(cid:1189)ng Program). Object store v(cid:1199)n l(cid:1133)u gi(cid:1267)(cid:3) (cid:255)(cid:1133)(cid:1255)c thông tin
(cid:70)(cid:1259)a các (cid:1261)ng d(cid:1257)ng và d(cid:1267) li(cid:1227)u ngay c(cid:1191) khi n(cid:259)ng l(cid:1133)(cid:1255)ng cung c(cid:1193)p chính b(cid:1231)
(cid:80)(cid:1193)t nh(cid:1249) ngu(cid:1239)n pin d(cid:1269) tr(cid:1267). Có th(cid:1223) xem object store nh(cid:1133) là (cid:255)(cid:429)a c(cid:1261)ng trên
thi(cid:1219)t b(cid:1231) dùng Windows CE vì các end-user không bi(cid:1219)t v(cid:1221) object store do
Microsoft (cid:255)ã cung c(cid:1193)p trình WinCE Explorer (cid:255)(cid:1223)(cid:3)(cid:255)(cid:1233)c n(cid:1245)i dung c(cid:1259)a nó (t(cid:1133)(cid:1131)ng
(cid:87)(cid:1269) nh(cid:1133) Microsoft Windows Expoler (cid:255)(cid:1223)(cid:3)(cid:255)(cid:1233)c n(cid:1245)i dung c(cid:1259)a (cid:255)(cid:429)a c(cid:1261)ng trên máy
- 90 -
desktop PC)
(cid:264)(cid:76)(cid:1223)m khác bi(cid:1227)t ch(cid:1259) y(cid:1219)u (cid:255)(cid:1195)u tiên mà ta c(cid:1195)n l(cid:1133)u ý là object store trên
Windows CE là vi(cid:1227)c thi(cid:1219)u các kí t(cid:1269)(cid:3) (cid:1241)(cid:3) (cid:255)(cid:429)a. Windows CE s(cid:1265) d(cid:1257)ng các th(cid:1133)
(cid:80)(cid:1257)c d(cid:1133)(cid:1247)i th(cid:1133) m(cid:1257)c g(cid:1237)c cho vi(cid:1227)c cài (cid:255)(cid:1211)t các thi(cid:1219)t b(cid:1231) c(cid:1259)a ng(cid:1133)(cid:1249)i dùng. Ví d(cid:1257),
(cid:81)(cid:1219)u ng(cid:1133)(cid:1249)i dùng g(cid:1203)n m(cid:1245)t flash card vào máy, Windows CE s(cid:1217) t(cid:1189)o ra m(cid:1245)t
th(cid:1133) m(cid:1257)c /Storage Card 1. C(cid:1261) m(cid:1243)i flash card (cid:255)(cid:1133)(cid:1255)c g(cid:1203)n vào, con s(cid:1237) này s(cid:1217) t(cid:259)ng
lên (/Storage Card 2,…)
(cid:264)(cid:1133)(cid:1249)ng d(cid:1199)n t(cid:1247)i t(cid:1201)p tin (cid:255)(cid:1133)(cid:1255)c gi(cid:1247)i h(cid:1189)n b(cid:1251)i MAX_PATH (có th(cid:1223) dài t(cid:1237)i (cid:255)a
260 kí t(cid:1269), gi(cid:1237)ng nh(cid:1133) trên Windows) Tuy nhiên, trên Windows CE không có
khái ni(cid:1227)m th(cid:1133) m(cid:1257)c hi(cid:1227)n hành, ta ph(cid:1191)i truy xu(cid:1193)t các t(cid:1201)p tin b(cid:1205)ng các (cid:255)(cid:1133)(cid:1249)ng
(cid:71)(cid:1199)n d(cid:1195)y (cid:255)(cid:1259) c(cid:1259)a nó.
Có th(cid:1223) xem Database trên Windows CE nh(cid:1133) m(cid:1245)t d(cid:1189)ng t(cid:1201)p tin (cid:255)(cid:1211)c bi(cid:1227)t.
(cid:48)(cid:1243)i database là m(cid:1245)t t(cid:1201)p các record ch(cid:1261)a m(cid:1245)t hay nhi(cid:1221)u thu(cid:1245)c tính thông tin
và giá tr(cid:1231) c(cid:1259)a nó. Database có th(cid:1223) n(cid:1205)m trên các thi(cid:1219)t b(cid:1231) ngoài nh(cid:1133) flash card.
Khi s(cid:1265) d(cid:1257)ng có th(cid:1223) mount database (cid:255)(cid:1223) s(cid:1265) d(cid:1257)ng trên thi(cid:1219)t b(cid:1231), Database trên
windows CE h(cid:1243) tr(cid:1255) các thao tác: T(cid:1189)o database, m(cid:1251) database, s(cid:1203)p x(cid:1219)p trên
database, (cid:255)(cid:1233)c d(cid:1267) li(cid:1227)u t(cid:1263) database, ghi xu(cid:1237)ng database, tìm ki(cid:1219)m trên
database. S(cid:1265) d(cid:1257)ng t(cid:1201)p tin hay database là m(cid:1245)t v(cid:1193)n (cid:255)(cid:1221) c(cid:1195)n (cid:255)(cid:1133)(cid:1255)c xem xét khi t(cid:1241)
ch(cid:1261)c l(cid:1133)u tr(cid:1267) d(cid:1267) li(cid:1227)u GIS trên Pocket PC.
6.3.3 (cid:55)(cid:1133)(cid:1131)ng tác gi(cid:1267)a ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng và thi(cid:1219)t b(cid:1231):
Ng(cid:1133)(cid:1249)i s(cid:1265) d(cid:1257)ng t(cid:1133)(cid:1131)ng tác v(cid:1247)i thi(cid:1219)t b(cid:1231) thông qua m(cid:1245)t màn hình touch-
screen LCD (màn hình c(cid:1191)m nh(cid:1201)n). Không s(cid:1265) d(cid:1257)ng bàn phím (keyboard) và
chu(cid:1245)t (mouse) thông th(cid:1133)(cid:1249)ng, Pocket PC h(cid:1243) tr(cid:1255) nh(cid:1201)p li(cid:1227)u thông qua m(cid:1245)t bàn
khung c(cid:1265)a s(cid:1241) luôn t(cid:1239)n t(cid:1189)i trên màn hình, mô t(cid:1191) và s(cid:1203)p x(cid:1219)p các phím t(cid:1133)(cid:1131)ng t(cid:1269)
- 91 -
phím logic, g(cid:1233)i là SIP (Soft Input Panel). Bàn phím logic này th(cid:1269)c ch(cid:1193)t là m(cid:1245)t
trên máy PC thông th(cid:1133)(cid:1249)ng. Ng(cid:1133)(cid:1249)i dùng s(cid:1217) giao ti(cid:1219)p v(cid:1247)i SIP thông qua ngón tay
ho(cid:1211)c stylus (m(cid:1245)t cây vi(cid:1219)t v(cid:1201)t lý, cho phép nh(cid:1201)p li(cid:1227)u b(cid:1205)ng cách vi(cid:1219)t tr(cid:1269)c ti(cid:1219)p lên
màn hình)
Thay th(cid:1219) cho vi(cid:1227)c nh(cid:1193)n Enter hay nh(cid:1193)n (cid:255)úp chu(cid:1245)t, Pocket PC s(cid:1265) d(cid:1257)ng c(cid:1131)
ch(cid:1219) single-tapping (nh(cid:1193)n (cid:255)(cid:1131)n) lên touch screen. Ng(cid:1133)(cid:1249)i dùng ch(cid:1229) c(cid:1195)n nh(cid:1193)n
(cid:80)(cid:1245)t l(cid:1195)n lên m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ho(cid:1211)c liên k(cid:1219)t, h(cid:1227)(cid:3)(cid:255)(cid:76)(cid:1221)u hành s(cid:1217) m(cid:1251)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng/liên
(cid:78)(cid:1219)t t(cid:1133)(cid:1131)ng (cid:1261)ng.
Ngoài ra, (cid:255)(cid:1223) giao ti(cid:1219)p v(cid:1247)i (cid:1261)ng d(cid:1257)ng, ng(cid:1133)(cid:1249)i dùng có th(cid:1223) nh(cid:1193)n-và-gi(cid:1267) (tap-
and- hold). (cid:264)ây là c(cid:1131) ch(cid:1219) có tác d(cid:1257)ng t(cid:1133)(cid:1131)ng t(cid:1269) nh(cid:1133) vi(cid:1227)c s(cid:1265) d(cid:1257)ng context-
menu b(cid:1205)ng cách nh(cid:1193)n ph(cid:1191)i chu(cid:1245)t trên PC. Khi ng(cid:1133)(cid:1249)i dùng nh(cid:1193)n-và-gi(cid:1267) trên
(cid:80)(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng, có th(cid:1223) m(cid:1245)t menu ho(cid:1211)c m(cid:1245)t tooltip s(cid:1217) hi(cid:1227)n ra, tu(cid:484) theo (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng (cid:255)ó x(cid:1265) lý nh(cid:1133) th(cid:1219) nào.
Trong (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239), ta nh(cid:1201)n th(cid:1193)y vi(cid:1227)c nghiên c(cid:1261)u và x(cid:1265) lý các
cách t(cid:1133)(cid:1131)ng tác trên là r(cid:1193)t c(cid:1195)n thi(cid:1219)t, b(cid:1251)i trong d(cid:1189)ng (cid:1261)ng d(cid:1257)ng này, vi(cid:1227)c di
chuy(cid:1223)n, phóng to, thu nh(cid:1235), tra c(cid:1261)u b(cid:1191)n (cid:255)(cid:1239) là nh(cid:1267)ng hành (cid:255)(cid:1245)ng r(cid:1193)t th(cid:1133)(cid:1249)ng
xuyên x(cid:1191)y ra. Bên c(cid:1189)nh (cid:255)ó, ph(cid:1191)i (cid:255)(cid:1231)nh ngh(cid:429)a l(cid:1189)i trong (cid:1261)ng d(cid:1257)ng các
hardware keys (phím v(cid:1201)t lý) nh(cid:1205)m t(cid:1201)n d(cid:1257)ng các phím di chuy(cid:1223)n s(cid:1209)n có c(cid:1259)a
thi(cid:1219)t b(cid:1231) Pocket PC nh(cid:1205)m t(cid:259)ng t(cid:1237)c (cid:255)(cid:1245) t(cid:1133)(cid:1131)ng tác cho ng(cid:1133)(cid:1249)i dùng khi xem b(cid:1191)n
(cid:255)(cid:1239).
6.4
Các gi(cid:1191)i pháp cho (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239) trên PocketPC:
6.4.1 Yêu c(cid:1195)u chung:
Các (cid:1261)ng d(cid:1257)ng liên quan t(cid:1247)i h(cid:1227) th(cid:1237)ng thông tin (cid:255)(cid:1231)a lý (Geography
Information System – GIS) phát tri(cid:1223)n trên Pocket PC và h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành
- 92 -
Windows CE g(cid:1211)p ph(cid:1191)i các v(cid:1193)n (cid:255)(cid:1221) v(cid:1221) t(cid:1237)i (cid:1133)u hoá b(cid:1245) nh(cid:1247) c(cid:458)ng nh(cid:1133) t(cid:1237)c (cid:255)(cid:1245)
(cid:1261)ng d(cid:1257)ng do nh(cid:1267)ng v(cid:1193)n (cid:255)(cid:1221)(cid:3) (cid:255)ã trình bày (cid:1251) ph(cid:1195)n trên. Khi (cid:255)(cid:1133)a ra các gi(cid:1191)i
pháp cho (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239) trên Pocket PC, c(cid:1195)n ph(cid:1191)i:
+B(cid:1191)o (cid:255)(cid:1191)m vi(cid:1227)c t(cid:1241) ch(cid:1261)c l(cid:1133)u tr(cid:1267) thông tin và d(cid:1267) li(cid:1227)u t(cid:1237)i (cid:1133)u trên Object Store
(cid:71)(cid:1189)ng Program.
+B(cid:1191)o (cid:255)(cid:1191)m l(cid:1133)u tr(cid:1267) ít nh(cid:1193)t thông tin có th(cid:1223) trên Object Store d(cid:1189)ng Storage.
+B(cid:1191)o (cid:255)(cid:1191)m (cid:255)(cid:1133)(cid:1255)c t(cid:1237)c (cid:255)(cid:1245) khi x(cid:1265) lý tính toán (cid:255)(cid:1223) hi(cid:1223)n th(cid:1231) và tìm ki(cid:1219)m, tra c(cid:1261)u
thông tin.
6.4.2 (cid:57)(cid:1193)n (cid:255)(cid:1221) t(cid:1237)i (cid:1133)u t(cid:1237)c (cid:255)(cid:1245) hi(cid:1223)n th(cid:1231):
(cid:264)(cid:1223) hi(cid:1223)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239) cho ng(cid:1133)(cid:1249)i dùng quan sát, b(cid:1193)t c(cid:1261) m(cid:1245)t ch(cid:1133)(cid:1131)ng trình b(cid:1191)n
(cid:255)(cid:1239) nào c(cid:458)ng ph(cid:1191)i v(cid:1217) lên màn hình. Và ph(cid:1195)n hi(cid:1223)n th(cid:1231) lên màn hình s(cid:1217) là ph(cid:1195)n
mà ng(cid:1133)(cid:1249)i dùng (cid:255)ang mu(cid:1237)n xem xét (cid:255)(cid:1223) có thông tin. Ng(cid:1133)(cid:1249)i dùng c(cid:458)ng có
th(cid:1223) thay (cid:255)(cid:1241)i vùng nhìn c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239) và s(cid:1269) thay (cid:255)(cid:1241)i vùng nhìn c(cid:1259)a ng(cid:1133)(cid:1249)i dùng
này s(cid:1217) kéo theo các thao tác v(cid:1217) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239). Khi (cid:255)ó nào ta v(cid:1217) l(cid:1189)i toàn b(cid:1245) các
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng thì t(cid:1237)c (cid:255)(cid:1245) s(cid:1217) ch(cid:1201)m nên ta ch(cid:1229) v(cid:1217) l(cid:1189)i ph(cid:1195)n vùng nào có thay (cid:255)(cid:1241)i.
Và khi ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n m(cid:1245)t (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng nào (cid:255)ó, n(cid:1219)u nh(cid:1133) chúng ta duy(cid:1227)t h(cid:1219)t
xem (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng nào tho(cid:1191) mãn yêu c(cid:1195)u ch(cid:1233)n thì không t(cid:1237)i (cid:1133)u; (cid:255)(cid:1223) gi(cid:1191)i quy(cid:1219)t
(cid:89)(cid:1193)n (cid:255)(cid:1221)(cid:3) (cid:255)ó ta làm nh(cid:1133) sau: V(cid:1247)i m(cid:1243)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng ta s(cid:1217) có MBR (Minimun
Boundery Rectangle)- vùng bao nh(cid:1235) nh(cid:1193)t- c(cid:1259)a m(cid:1243)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng, Khi mà ng(cid:1133)(cid:1249)i
dùng ch(cid:1233)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng thì ta xác (cid:255)(cid:1231)nh (cid:255)(cid:1133)(cid:1255)c vùng nào, và ta ch(cid:1229) c(cid:1195)n duy(cid:1227)t trong
vùng (cid:255)ó (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng nào có MBR giao v(cid:1247)i nó thì hi(cid:1227)n th(cid:1231) ra.
6.5
(cid:55)(cid:1241) ch(cid:1261)c d(cid:1267) li(cid:1227)u b(cid:1191)n (cid:255)(cid:1239) trên PocketPC:
(cid:49)(cid:1219)u nh(cid:1133) d(cid:1267) li(cid:1227)u l(cid:1133)u quá l(cid:1247)n s(cid:1217) làm t(cid:1237)n không gian Object Store
- 93 -
(cid:71)(cid:1189)ng Storage (l(cid:1133)u tr(cid:1267)). H(cid:1131)n n(cid:1267)a s(cid:1217) làm t(cid:1237)n th(cid:1249)i gian trong vi(cid:1227)c truy xu(cid:1193)t d(cid:1267)
li(cid:1227)u. Cho nên (cid:255)(cid:1237)i v(cid:1247)i (cid:1261)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239) chúng ta ch(cid:1229) nên hi(cid:1223)n th(cid:1231) và l(cid:1133)u tr(cid:1267)
nh(cid:1267)ng thông tin c(cid:1195)n thi(cid:1219)t nh(cid:1133) ch(cid:1229) l(cid:1133)u tr(cid:1267)(cid:3) (cid:255)(cid:1133)(cid:1249)ng mà không l(cid:1133)u tr(cid:1267) qu(cid:1201)n
huy(cid:1227)n hay sông h(cid:1239).
Do (cid:255)ó d(cid:1267) li(cid:1227)u c(cid:1195)n t(cid:1241) ch(cid:1261)c l(cid:1133)u tr(cid:1267) th(cid:1201)t h(cid:1255)p lý và ph(cid:1191)i ti(cid:1219)t ki(cid:1227)m t(cid:1237)i (cid:255)a
không gian l(cid:1133)u tr(cid:1267), nh(cid:1133)ng v(cid:1199)n ph(cid:1191)i (cid:255)(cid:1259)(cid:3)(cid:255)(cid:1223) b(cid:1191)o (cid:255)(cid:1191)m không t(cid:1237)n quá nhi(cid:1221)u th(cid:1249)i
gian tính toán l(cid:1189)i các thông tin không (cid:255)(cid:1133)(cid:1255)c l(cid:1133)u tr(cid:1267). M(cid:1245)t ph(cid:1133)(cid:1131)ng pháp r(cid:1193)t d(cid:1225)
(cid:86)(cid:1265) d(cid:1257)ng và r(cid:1193)t hi(cid:1227)u qu(cid:1191)(cid:3)(cid:255)(cid:1223) gi(cid:1191)m nh(cid:1235) d(cid:1267) li(cid:1227)u mà không m(cid:1193)t thông tin là thay
th(cid:1219) các ki(cid:1223)u d(cid:1267) li(cid:1227)u l(cid:1133)u tr(cid:1267) t(cid:1263) các ki(cid:1223)u có kích th(cid:1133)(cid:1247)c l(cid:1247)n thành kích th(cid:1133)(cid:1247)c nh(cid:1235)
nh(cid:1133) chuy(cid:1223)n t(cid:1263) s(cid:1237) th(cid:1269)c thành s(cid:1237) nguyên ch(cid:1207)ng h(cid:1189)n (Double thành
Integer)…Nh(cid:1133)ng khi load d(cid:1267) li(cid:1227)u lên thì chúng ta c(cid:1195)n ph(cid:1191)i có các thao tác tính
toán nh(cid:1133) chia cho m(cid:1245)t s(cid:1237) qui (cid:255)(cid:1231)nh nào (cid:255)ó (cid:255)(cid:1223) ph(cid:1257)c h(cid:1239)i tính chính xác c(cid:1259)a d(cid:1267)
- 94 -
li(cid:1227)u.
CH(cid:1132)(cid:1130)NG 7 : (cid:1260)ng d(cid:1257)ng b(cid:1191)n (cid:255)(cid:1239):
7.1
Phân tích và xác (cid:255)(cid:1231)nh yêu c(cid:1195)u:
(cid:55)(cid:1263) nh(cid:1267)ng yêu c(cid:1195)u và th(cid:1269)c tr(cid:1189)ng, (cid:1261)ng d(cid:1257)ng xây d(cid:1269)ng c(cid:1195)n có nh(cid:1267)ng ch(cid:1261)c
(cid:81)(cid:259)ng c(cid:1257) th(cid:1223) sau:
STT Ch(cid:1261)c n(cid:259)ng Ghi chú
1 (cid:55)(cid:1189)o c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng theo chu(cid:1197)n
Topology
2 Hi(cid:1227)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239) (cid:87)(cid:1237)c (cid:255)(cid:1245) nhanh
(cid:87)(cid:1237)c (cid:255)(cid:1245) nhanh 3 Phóng to, thu nh(cid:1235), Fit
(cid:69)(cid:1191)n (cid:255)(cid:1239)
4 Di chuy(cid:1223)n b(cid:1191)n (cid:255)(cid:1239) (cid:87)(cid:1237)c (cid:255)(cid:1245) nhanh
5 Thông tin chi ti(cid:1219)t v(cid:1221) các Ví d(cid:1257) nh(cid:1133) Region, River,
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trên b(cid:1191)n (cid:255)(cid:1239) Edge…
6 Xác (cid:255)(cid:1231)nh các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Ví d(cid:1257) nh(cid:1133) Region,
Edge…
8 Xác (cid:255)(cid:1231)nh nhanh (cid:255)(cid:1133)(cid:1249)ng Giao l(cid:1245) là node chung
và các giao l(cid:1245) (cid:70)(cid:1259)a hai hay nhi(cid:1221)u (cid:255)(cid:1133)(cid:1249)ng.
9 Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t Hai (cid:255)(cid:76)(cid:1223)m có th(cid:1223) không
gi(cid:1267)a hai v(cid:1231) trí trên b(cid:1191)n (cid:255)(cid:1239) ph(cid:1191)i là giao l(cid:1245)
- 95 -
10 Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t Hai (cid:255)(cid:76)(cid:1223)m ng(cid:1199)u nhiên là
gi(cid:1267)a hai giao l(cid:1245) giao l(cid:1245)
11 Tìm chu trình t(cid:1237)i (cid:1133)u Các (cid:255)(cid:76)(cid:1223)m b(cid:1193)t kì không
nh(cid:1193)t thi(cid:1219)t ph(cid:1191)i là giao l(cid:1245).
(cid:37)(cid:1191)ng 7.1-1 Các ch(cid:1261)c n(cid:259)ng chính
7.2
Phân tích - thi(cid:1219)t k(cid:1219):
7.2.1 (cid:54)(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1265) d(cid:1257)ng:
Ngung ket noi co so du lieu
Ket noi co so du lieu
Xoa co so du lieu
Tao co so du lieu
Nguoi Dung
Tim duong di ngan nhat
Tim kiem dia diem
Xem thong tin tren ban do
Tim duong
Thao tac ban do
Tim kiem Region
Tim chu trinh toi uu
Tim giao lo
Tim cac duong giao nhau
Hien thi ban do
- 96 -
Hình 7.2.1-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1265) d(cid:1257)ng t(cid:1241)ng quát
7.2.2 (cid:264)(cid:1211)c t(cid:1191) Use-Case chính:
7.2.2.1 Tìm ki(cid:1219)m (cid:255)(cid:1133)(cid:1249)ng (cid:255)i:
Xem thong tin tren ban do
Nguoi Dung
Tim duong
Tim cac duong giao nhau
Tim giao lo
Hien thi ban do
Hình 7.2.2.1-1 Use Case - Tìm ki(cid:1219)m Edge
Tên Use-Case: TIMKIEMEDGE
Mô t(cid:1191): ng(cid:1133)(cid:1249)i dùng mu(cid:1237)n h(cid:1227) th(cid:1237)ng xác (cid:255)(cid:1231)nh và hi(cid:1223)n th(cid:1231) v(cid:1231) trí Edge
mà ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n.
Dòng s(cid:1269) ki(cid:1227)n:
S(cid:1269) ki(cid:1227)n c(cid:1131) b(cid:1191)n:
+ Ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n (cid:255)(cid:1133)(cid:1249)ng trên b(cid:1191)n (cid:255)(cid:1239) (Edge ) ((cid:1251)(cid:3)(cid:255)ây
ch(cid:1229) xét (cid:255)(cid:1219)n ID c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng)
+ H(cid:1227) th(cid:1237)ng s(cid:1217) tìm Edge d(cid:1269)a vào (cid:255)(cid:76)(cid:1223)m ch(cid:1233)n c(cid:1259)a ng(cid:1133)(cid:1249)i
- 97 -
dùng.
+ H(cid:1227) th(cid:1237)ng hi(cid:1227)n th(cid:1231) Edge tìm (cid:255)(cid:1133)(cid:1255)c t(cid:1189)i v(cid:1231) trí c(cid:1259)a nó
(cid:89)(cid:1247)i màu s(cid:1203)c khác và thông tin chi ti(cid:1219)t v(cid:1221) Edge.
S(cid:1269) ki(cid:1227)n thay th(cid:1219): N(cid:1219)u nh(cid:1133) không tìm (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1133)(cid:1249)ng c(cid:1195)n tìm v(cid:1247)i
thông tin cung c(cid:1193)p thì thông báo không tìm th(cid:1193)y.
Yêu c(cid:1195)u (cid:255)(cid:1211)c bi(cid:1227)t: Không.
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n (cid:255)(cid:1195)u: Không.
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n sau: Không.
(cid:264)(cid:76)(cid:1223)m m(cid:1251) r(cid:1245)ng: Tìm ki(cid:1219)m (cid:255)(cid:1133)(cid:1249)ng theo tên.
7.2.2.2 Tìm ki(cid:1219)m Region:
Tim kiem Region
Nguoi Dung
hien thi thong tin Region
Hien thi ban do
Hình 7.2.2.2-1 Use Case: Tìm ki(cid:1219)m Region
Tên Use-Case: TIMKIEMREGION
Mô t(cid:1191): ng(cid:1133)(cid:1249)i dùng mu(cid:1237)n h(cid:1227) th(cid:1237)ng xác (cid:255)(cid:1231)nh và hi(cid:1223)n th(cid:1231) thông tin
(cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m mà ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n.
Dòng s(cid:1269) ki(cid:1227)n:
- 98 -
S(cid:1269) ki(cid:1227)n c(cid:1131) b(cid:1191)n:
+ Ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m.
+ H(cid:1227) th(cid:1237)ng s(cid:1217) tìm (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1219)m d(cid:1269)a vào (cid:255)(cid:76)(cid:1223)m mà ng(cid:1133)(cid:1249)i
dùng ch(cid:1233)n.
+ H(cid:1227) th(cid:1237)ng hi(cid:1227)n th(cid:1231) thông tin (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m tìm (cid:255)(cid:1133)(cid:1255)c.
S(cid:1269) ki(cid:1227)n thay th(cid:1219): N(cid:1219)u nh(cid:1133) không tìm (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m c(cid:1195)n tìm
(cid:89)(cid:1247)i thông tin cung c(cid:1193)p thì thông báo không tìm th(cid:1193)y.
Yêu c(cid:1195)u (cid:255)(cid:1211)c bi(cid:1227)t: Không.
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n (cid:255)(cid:1195)u: Không.
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n sau: Không.
(cid:264)(cid:76)(cid:1223)m m(cid:1251) r(cid:1245)ng: Tìm ki(cid:1219)m theo tên.
7.2.2.3 Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t:
Xac dinh diem bat dau
Hien thi thong tin duong di
Xac dinh VirtualNode
Nguoi Dung
Hien thi ban do
Tim duong di ngan nhat
Xac dinh diem ket thuc
Hình 7.2.2.3-1 Use Case – Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t
Tên Use-Case: TIMDUONGNGANNHAT
- 99 -
Mô t(cid:1191): ng(cid:1133)(cid:1249)i dùng mu(cid:1237)n h(cid:1227) th(cid:1237)ng xác (cid:255)(cid:1231)nh và hi(cid:1223)n th(cid:1231) m(cid:1245)t (cid:255)(cid:1133)(cid:1249)ng
(cid:255)i ng(cid:1203)n nh(cid:1193)t t(cid:1263)(cid:3)(cid:255)(cid:76)(cid:1223)m xu(cid:1193)t pháp (cid:255)(cid:1219)n (cid:255)(cid:76)(cid:1223)m k(cid:1219)t thúc.
Dòng s(cid:1269) ki(cid:1227)n:
S(cid:1269) ki(cid:1227)n c(cid:1131) b(cid:1191)n:
+ Ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n (cid:255)(cid:76)(cid:1223)m xu(cid:1193)t phát và (cid:255)(cid:76)(cid:1223)m (cid:255)ích
(b(cid:1205)ng cách nh(cid:1193)n chu(cid:1245)t lên b(cid:1191)n (cid:255)(cid:1239))
+ H(cid:1227) th(cid:1237)ng s(cid:1217) tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t gi(cid:1267)a hai (cid:255)(cid:76)(cid:1223)m
(cid:255)ã ch(cid:1233)n.
+ H(cid:1227) th(cid:1237)ng hi(cid:1227)n th(cid:1231)(cid:3)(cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t tìm (cid:255)(cid:1133)(cid:1255)c t(cid:1189)i
(cid:89)(cid:1231) trí c(cid:1259)a nó v(cid:1247)i màu s(cid:1203)c khác và thông tin c(cid:1259)a (cid:255)(cid:1133)(cid:1249)ng (cid:255)i.
S(cid:1269) ki(cid:1227)n thay th(cid:1219): N(cid:1219)u nh(cid:1133) không tìm (cid:255)(cid:1133)(cid:1255)c (cid:255)(cid:1133)(cid:1249)ng c(cid:1195)n tìm v(cid:1247)i
thông tin cung c(cid:1193)p thì thông báo không tìm th(cid:1193)y.
Yêu c(cid:1195)u (cid:255)(cid:1211)c bi(cid:1227)t: Không
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n (cid:255)(cid:1195)u: Ph(cid:1191)i xác (cid:255)(cid:1231)nh (cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1195)u và (cid:255)(cid:76)(cid:1223)m k(cid:1219)t thúc
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n sau: Không
(cid:264)(cid:76)(cid:1223)m m(cid:1251) r(cid:1245)ng: Nh(cid:1201)p tên và tìm (cid:255)(cid:1133)(cid:1249)ng.
- 100 -
7.2.2.4 Tìm chu trình t(cid:1237)i (cid:1133)u:
Tim chu trinh toi uu
Xac dinh cac diem can di
Nguoi Dung
Hien thi ban do
Xac dinh VirtualNode
Hình 7.2.2.4-1 Use-Case - Tim chu trình t(cid:1237)i (cid:1133)u
Tên Use-Case: TIMCHUTRINHTOIUU
Mô t(cid:1191): ng(cid:1133)(cid:1249)i dùng mu(cid:1237)n h(cid:1227) th(cid:1237)ng xác (cid:255)(cid:1231)nh và hi(cid:1223)n th(cid:1231) chu trình (cid:255)i
qua các v(cid:1231) trí mà ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n vào.
Dòng s(cid:1269) ki(cid:1227)n:
S(cid:1269) ki(cid:1227)n c(cid:1131) b(cid:1191)n:
+ Ng(cid:1133)(cid:1249)i dùng ch(cid:1233)n (cid:255)(cid:76)(cid:1223)m c(cid:1195)n (cid:255)i qua (b(cid:1205)ng cách nh(cid:1193)n
ch(cid:1233)n vào b(cid:1191)n (cid:255)(cid:1239)).
+ H(cid:1227) th(cid:1237)ng s(cid:1217) chu trình t(cid:1237)i (cid:1133)u.
+ H(cid:1227) th(cid:1237)ng hi(cid:1227)n th(cid:1231) chu trình tìm (cid:255)(cid:1133)(cid:1255)c t(cid:1189)i v(cid:1231) trí c(cid:1259)a
nó v(cid:1247)i màu s(cid:1203)c khác và (cid:255)(cid:1239)ng th(cid:1249)i di chuy(cid:1223)n b(cid:1191)n (cid:255)(cid:1239) t(cid:1189)i ví trí
(cid:255)ó.
(cid:54)(cid:1269) ki(cid:1227)n thay th(cid:1219): N(cid:1219)u nh(cid:1133) không tìm (cid:255)(cid:1133)(cid:1255)c chu trình c(cid:1195)n tìm
(cid:89)(cid:1247)i thông tin cung c(cid:1193)p thì thông báo không tìm th(cid:1193)y và b(cid:1191)n
- 101 -
(cid:255)(cid:1239) không (cid:255)(cid:1133)(cid:1255)c di chuy(cid:1223)n.
Yêu c(cid:1195)u (cid:255)(cid:1211)c bi(cid:1227)t: Không
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n (cid:255)(cid:1195)u: Ph(cid:1191)i xác (cid:255)(cid:1231)nh các (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m, s(cid:1237) l(cid:1133)(cid:1255)ng (cid:255)(cid:76)(cid:1223)m ph(cid:1191)i
(cid:79)(cid:1247)n h(cid:1131)n m(cid:1245)t.
(cid:264)(cid:76)(cid:1221)u ki(cid:1227)n sau: Không
(cid:264)(cid:76)(cid:1223)m m(cid:1251) r(cid:1245)ng: Không
7.2.3 (cid:54)(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p Class Diagram:
7.2.3.1 S(cid:1131)(cid:3)(cid:255)(cid:1239) t(cid:1241)ng quát:
CMapEvent
CDataBase
CMapView
CPocketPC
CPC
- 102 -
Hình 7.2.3.1-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) t(cid:1241)ng quát
7.2.3.2 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p d(cid:1267) li(cid:1227)u:
CDataBase
CEdge
CRegion
CRiver
Duoc tao boi diem dau va cuoi
Chua diem
Chua diem
chua diem
CNode
CVirtualNode
CPointR2
7.2.3.3 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p v(cid:1217):
CMapView
CEdgeView
CRegionView
CRiverView
Hình 7.2.3.2-1 S(cid:1131) l(cid:1247)p d(cid:1267) li(cid:1227)u
- 103 -
Hình 7.2.3.3-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) l(cid:1247)p v(cid:1217)
7.2.3.4 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1269) ki(cid:1227)n:
CMapEvent
CTSP
CGrapper
CShos rtestPath
CZoom
CZoomIn
CSelectRegion
CSelectObject
2..n
CFitToWin
2
CZoomOut
CSelectNode
1..n
CSelectEdge
CVirtualNode
CNode
Hình 7.2.3.4-1 S(cid:1131)(cid:3)(cid:255)(cid:1239) s(cid:1269) ki(cid:1227)n
7.2.4 Mô t(cid:1191) các l(cid:1247)p:
(cid:47)(cid:1247)p CDataBase
STT Ph(cid:1133)(cid:1131)ng th(cid:1261)c Ý ngh(cid:429)a
1 CDataBase() Ph(cid:1133)(cid:1131)ng th(cid:1261)c kh(cid:1251)i t(cid:1189)o nh(cid:1267)ng giá tr(cid:1231) c(cid:1195)n thi(cid:1219)t
2 ConnectDatabase() K(cid:1219)t n(cid:1237)i c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u
3 CreateDatabase T(cid:1189)o c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u
- 104 -
4 ClearData() Xoá Database, Xoá luôn c(cid:1191) t(cid:1201)p tin l(cid:1133)u tr(cid:1267)
5 CloseData() (cid:264)óng c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u (cid:255)ã m(cid:1251)
(cid:37)(cid:1191)ng 7.2.4-1 L(cid:1247)p CDatabase
(cid:47)(cid:1247)p CMapView
STT Ph(cid:1133)(cid:1131)ng th(cid:1261)c Ý ngh(cid:429)a
1 Layer() (cid:1196)n hay hi(cid:1227)n các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng theo t(cid:1263)ng t(cid:1195)ng ví d(cid:1257) nh(cid:1133)
Edge, Region, River…
(cid:37)(cid:1191)ng 7.2.4-2 L(cid:1247)p CMapView
CMapEvent
STT Ph(cid:1133)(cid:1131)ng th(cid:1261)c Ý ngh(cid:429)a
1 OnMouseMove + (cid:264)(cid:1237)i v(cid:1247)i PC: S(cid:1269) ki(cid:1227)n nh(cid:1193)n chu(cid:1245)t trên bi(cid:1223)u t(cid:1133)(cid:1255)ng
Toolbar và nh(cid:1193)n chu(cid:1245)t trái lên b(cid:1191)n (cid:255)(cid:1239), gi(cid:1267) chu(cid:1245)t và
rê chu(cid:1245)t (cid:255)i
+ (cid:264)(cid:1237)i v(cid:1247)i PocketPC: S(cid:1269) ki(cid:1227)n di chuy(cid:1223)n bút trên màn
hình.
2 OnLeftMouseDown + (cid:264)(cid:1237)i v(cid:1247)i PC: s(cid:1269) ki(cid:1227)n nh(cid:1193)n chu(cid:1245)t trái lên b(cid:1191)n (cid:255)(cid:1239).
+ (cid:264)(cid:1237)i v(cid:1247)i PocketPC: s(cid:1269) ki(cid:1227)n (cid:255)(cid:1211)t bút xu(cid:1237)ng màn
hình.
3 OnLeftMouseUp + (cid:264)(cid:1237)i v(cid:1247)i PC: s(cid:1269) ki(cid:1227)n th(cid:1191) chu(cid:1245)t ra r(cid:1249)i kh(cid:1235)i b(cid:1191)n (cid:255)(cid:1239).
+ (cid:264)(cid:1237)i v(cid:1247)i PocketPC: s(cid:1269) ki(cid:1227)n nh(cid:1193)c bút ra kh(cid:1235)i màn
hình.
4 OnPaint (cid:89)(cid:1217) nh(cid:1267)ng th(cid:1261) c(cid:1195)n thi(cid:1219)t lên màn hình sau khi có
- 105 -
nh(cid:1267)ng thay (cid:255)(cid:1241)i trên màn hình hay t(cid:1269)(cid:3)(cid:255)(cid:1245)ng v(cid:1217) ngay
(cid:79)(cid:1195)n kh(cid:1251)i (cid:255)(cid:1245)ng (cid:255)(cid:1195)u tiên.
5 OnLoad (cid:49)(cid:1189)p nh(cid:1267)ng thông tin c(cid:1195)n thi(cid:1219)t lên màn hình. Kh(cid:1251)i
(cid:87)(cid:1189)o hay c(cid:1193)p phát nh(cid:1267)ng nh(cid:1267)ng th(cid:1261) c(cid:1195)n thi(cid:1219)t.
5 OnClosing Xoá nh(cid:1267)ng th(cid:1261) c(cid:1195)n th(cid:1219)t, (cid:255)óng k(cid:1219)t n(cid:1237)i và gi(cid:1191)i phóng
nh(cid:1267)ng nh(cid:1247) b(cid:1231) chi(cid:1219)m gi(cid:1267).
6 OnResize Thay (cid:255)(cid:1241)i kích th(cid:1133)(cid:1247)c c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239) hay thay (cid:255)(cid:1241)i b(cid:1193)t kì
(cid:255)(cid:76)(cid:1221)u khi(cid:1223)n nào trên (cid:1261)ng d(cid:1257)ng.
(cid:37)(cid:1191)ng 7.2.4-3 L(cid:1247)p CMapEvent
CNode
m_id : int m_x : double m_y : double m_mbr : RectangleR2 m_firstEdge : CEdge m_isVirtualNode : bool
MakeMBR() GetArrEdgesAround() GetNodeAround() Angle() DistanceToPoint() Draw()
(cid:47)(cid:1247)p CNode
Hình 7.2.4-1 L(cid:1247)p CNode
(cid:37)(cid:1191)ng các thu(cid:1245)c tính:
Tên Ki(cid:1223)u Ý ngh(cid:429)a
M_id (cid:86)(cid:1237) nguyên (cid:255)(cid:1231)nh danh c(cid:1259)a m(cid:1243)i (cid:255)(cid:1237)i
- 106 -
(cid:87)(cid:1133)(cid:1255)ng
M_x (cid:86)(cid:1237) th(cid:1269)c Hoành (cid:255)(cid:1245) c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
M_y (cid:86)(cid:1237) th(cid:1269)c Tung (cid:255)(cid:1245) c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
M_mbr ki(cid:1223)u khung hình ch(cid:1267) nh(cid:1201)t Là khung bao nh(cid:1235) nh(cid:1193)t
bao quanh (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
M_fisrtEdge Ki(cid:1223)u CEdge (s(cid:1217)(cid:3) (cid:255)(cid:1133)(cid:1255)c Là c(cid:1189)nh (cid:255)(cid:1195)u tiên theo
(cid:255)(cid:1231)nh ngh(cid:429) sau) chu(cid:1197)n trong mô hình
Topology.
M_IsVirtialNode ki(cid:1223)u (cid:255)úng sai (cid:255)(cid:1223) xét xem là Node (cid:1191)o
hay không. m(cid:1211)c (cid:255)(cid:1231)nh lúc
(cid:87)(cid:1189)o bi(cid:1219)n này s(cid:1217) gán giá tr(cid:1231)
là False (không ph(cid:1191)i là
Node (cid:1191)o) (xem thêm
ph(cid:1195)n Node (cid:1191)o)
(cid:37)(cid:1191)ng 7.2.4-4 Thu(cid:1245)c tính l(cid:1247)p CNode
(cid:37)(cid:1191)ng các ph(cid:1133)(cid:1131)ng th(cid:1261)c:
Tên ph(cid:1133)(cid:1131)ng th(cid:1261)c Tham s(cid:1237) vào Ý ngh(cid:429)a Ghi chú
MakeMBR() tr(cid:1191) v(cid:1221) khung bao (cid:55)(cid:1189)o khung bao
nh(cid:1235) nh(cid:1193)t nh(cid:1235) nh(cid:1193)t cho (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng.
GetArrEdgesAround tr(cid:1191) v(cid:1221) danh sách (cid:79)(cid:1193)y danh sách các
(ArrayList) (cid:70)(cid:1189)nh liên h(cid:1227) tr(cid:1269)c
- 107 -
ti(cid:1219)p v(cid:1247)i chính (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng
GetNodeAround (cid:47)(cid:1193)y danh sách các tr(cid:1191) v(cid:1221) danh sách
Node liên h(cid:1227) tr(cid:1269)c (ArrayList)
ti(cid:1219)p v(cid:1247)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
Angle tr(cid:1191) v(cid:1221) là góc c(cid:1195)n Node chu(cid:1197)n (cid:264)ây là hàm tính
tính và Node di góc ng(cid:1133)(cid:1255)c chi(cid:1221)u
(cid:255)(cid:1245)ng kim (cid:255)(cid:1239)ng h(cid:1239) c(cid:1259)a
(cid:70)(cid:1189)nh t(cid:1189)o b(cid:1251)i
nodeChu(cid:1197)n va
chính (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
node này, v(cid:1247)i c(cid:1189)nh
(cid:87)(cid:1189)o b(cid:1251)i node di
(cid:255)(cid:1245)ng và chính (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng node này.
DistanceToPoint Tr(cid:1191) v(cid:1221) kho(cid:1191)ng (cid:255)(cid:76)(cid:1223)m c(cid:1195)n tính Hàm tính kho(cid:1191)ng
cách. kho(cid:1191)ng cách cách gi(cid:1267)a chính
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng v(cid:1247)i m(cid:1245)t
(cid:255)(cid:76)(cid:1223)m b(cid:1193)t kì.
Draw hi(cid:1227)n th(cid:1231)(cid:3) (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Ma tr(cid:1201)n
ra màn hình transform,
bút v(cid:1217) và (cid:255)(cid:1245)
(cid:79)(cid:1247)n c(cid:1259)a (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng c(cid:1195)n v(cid:1217)
- 108 -
(cid:37)(cid:1191)ng 7.2.4-5 Ph(cid:1133)(cid:1131)ng th(cid:1261)c l(cid:1247)p CNode
CEdge
m_id : int m_width : int m_direction : byte m_mbr : Rectangle m_StartNode : CNode m_EndNode : CNode m_PointArray : Link m_LeftEdge : CEdge m_RightEdge : CEdge m_ArrVirtualNode : Link
DistanceToPoint() MakeMyMBR() CreatePointArray() Draw() NearPointToPoint()
(cid:47)(cid:1247)p CEdge
Hình 7.2.4-2 L(cid:1247)p CEdge
(cid:37)(cid:1191)ng thu(cid:1245)c tính:
Tên Ki(cid:1223)u Ý ngh(cid:429)a
M_id Int (cid:264)(cid:1231)nh danh c(cid:1259)a m(cid:1243)i (cid:255)(cid:1237)i
(cid:87)(cid:1133)(cid:1255)ng
M_width Int (cid:255)(cid:1245) dày c(cid:1259)a m(cid:1243)i c(cid:1189)nh
M_direction Byte (cid:75)(cid:1133)(cid:1247)ng (cid:255)i
M_mbr Rectangle Khung bao nh(cid:1235) nh(cid:1193)t bao
quanh (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
M_StartNode CNode ((cid:255)ã (cid:255)(cid:1231)nh ngh(cid:429)a (cid:1251) (cid:264)(cid:76)(cid:1223)m (cid:255)(cid:1195)u c(cid:1259)a c(cid:1189)nh theo
- 109 -
trên) mô hình Topology
M_EndNode CNode ((cid:255)ã (cid:255)(cid:1231)nh ngh(cid:429)a (cid:1251) (cid:264)(cid:76)(cid:1223)m cu(cid:1237)i c(cid:1259)a c(cid:1189)nh theo
trên) mô hình Topology
M_LeftEdge CEdge (cid:38)(cid:1189)nh trái c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
theo mô hình Topology.
M_RightEdge CEdge (cid:38)(cid:1189)nh ph(cid:1191)i c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
theo mô hình Topology.
M_PointArray Link (cid:55)(cid:1201)p các (cid:255)(cid:76)(cid:1223)m t(cid:1189)o nên
(cid:70)(cid:1189)nh mà không bao g(cid:1239)m
(cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1195)u và cu(cid:1237)i.
M_ArrVirtualNode Link (cid:55)(cid:1201)p các Nod (cid:1191)o (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o
ra trên c(cid:1189)nh khi ch(cid:1133)(cid:1131)ng
trình (cid:255)ang th(cid:1269)c thi
(cid:37)(cid:1191)ng 7.2.4-6 Thu(cid:1245)c tính l(cid:1247)p CEdge
(cid:37)(cid:1191)ng ph(cid:1133)(cid:1131)ng th(cid:1261)c:
Tên ph(cid:1133)(cid:1131)ng th(cid:1261)c Tham s(cid:1237) vào Ý ngh(cid:429)a Ghi chú
DistanceToPoint (cid:264)(cid:76)(cid:1223)m c(cid:1195)n tính Tính kho(cid:1191)ng cách tr(cid:1191) v(cid:1221) kho(cid:1191)ng
kho(cid:1191)ng cách v(cid:1247)i gi(cid:1267)a m(cid:1245)t (cid:255)(cid:76)(cid:1223)m b(cid:1193)t cách tính (cid:255)(cid:1133)(cid:1255)c
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng kì v(cid:1247)i (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
MakeMBR Tính khung bao Tr(cid:1191) v(cid:1221) khung bao
nh(cid:1235) nh(cid:1193)t bao tính (cid:255)(cid:1133)(cid:1255)c
quanh (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
- 110 -
CreatePointArray (cid:55)(cid:1189)o ng(cid:1199)u nhiên tr(cid:1191) v(cid:1221) các (cid:255)(cid:1237)i
các (cid:255)(cid:76)(cid:1223)m thu(cid:1245)c (cid:87)(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c t(cid:1189)o
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
Draw Hi(cid:1223)n th(cid:1231)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Ma tr(cid:1201)n
lên khung nhìn transform, bút
(cid:89)(cid:1217) và (cid:255)(cid:1245) l(cid:1247)n c(cid:1259)a
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1195)n
(cid:89)(cid:1217)
NearPointToPoint (cid:264)(cid:76)(cid:1223)m b(cid:1193)t k(cid:484) Tr(cid:1191) v(cid:1221)(cid:3) (cid:255)(cid:76)(cid:1223)m trên
(cid:70)(cid:1189)nh mà kho(cid:1191)ng
cách t(cid:1263)(cid:3) (cid:255)(cid:76)(cid:1223)m (cid:255)ó
(cid:255)(cid:1219)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng là
ng(cid:1203)n nh(cid:1193)t so v(cid:1247)i
nh(cid:1267)ng (cid:255)(cid:76)(cid:1223)m khác
trên c(cid:1189)nh
(cid:37)(cid:1191)ng 7.2.4-7 Ph(cid:1133)(cid:1131)ng th(cid:1261)c l(cid:1247)p CEdge
7.2.5 Các l(cid:1133)u (cid:255)(cid:1239) ho(cid:1189)t (cid:255)(cid:1245)ng:
- 111 -
Hi(cid:1227)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239):
: CMapView
: CRegionView
: CRiverView
: CEdgeView
: Nguoi Dung
: CScreen
1. // Xem ban do
2. // T i le ban do
3. // Dich chuyen vung nhin
4. // Ve quan huyen
5. // Ve song ho
6. // Ve duong
: CMapView
: Nguoi Dung
1. // Xem ban do
2. // Ti le ban do 3. // Dich chuyen vung nhin
: CRiverView
5. // Ve song ho
: CScreen
4. // Ve quan huyen
6. // Ve duong
: CRegionView
: CEdgeView
- 112 -
Hình 7.2.5-1 Sequense Diagram: Hi(cid:1223)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239)
Hình 7.2.5-2 Collabration Diagram: Hi(cid:1223)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239)
: CDataBase
: CMapView
: Nguoi Dung
: CScreen
: CShosrtestPath
1. // Chon diem xuat phat
2. // TIm duong di ngan nhat
2.1. // TIm duong di ngan nhat
2.1.1. // Tim duong di ngan nhat
2.1.1.1. // Tra ra danh sach cac dinh
2.1.2. // Lay ID cac duong tu danh sach cac dinh
2.2. // Hien thi duong di ngan nhat
Tìm (cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t:
- 113 -
Hình 7.2.5-3 Sequence Diagram: Tìm (cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t
1. // Chon diem xuat phat 2. // TIm duong di ngan nhat
2.2. // Hien thi duong di ngan nhat
: CMapView
: CScreen
: Nguoi Dung
2.1. // TIm duong di ngan nhat
2.1.2. // Lay ID cac duong tu danh sach cac dinh
: CDataBase
2.1.1. // Tim duong di ngan nhat
2.1.1.1. // Tra ra danh sach cac dinh
: CShosrtestPath
Hình 7.2.5-4 Collabration Diagram: Tìm (cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t
- 114 -
Tìm Edge:
: CEdge
: CMapView
: Nguoi Dung
: CScreen
: CDlgInputToFind
1. // Tim Edge
1.1. // Chon duong
1.1.1. // Lay danh sach ID cua Edge
1.1.1.1. // Hien thi Edge
- 115 -
Hình 7.2.5-5 Sequence Diagram: Tìm Edge
1. // Tim Edge
: CMapView
: Nguoi Dung
: CScreen
1.1. // Chon duong
1.1.1.1. // Hien thi Edge
1.1.1. // Lay danh sach ID cua Edge
: CEdge
: CDlgInputToFind
Hình 7.2.5-6 Collabration Diagram: Tìm Edge
- 116 -
Tìm chu trình t(cid:1237)i (cid:1133)u:
: CTSP
: CDataBase
: CMapView
: Nguoi Dung
: CScreen
1. // Chon cac diem di qua
2. // Tim chu trinh toi uu
2.1. //Tim chu trinh toi uu
2.1.1. // Tim chu trinh toi uu
2.1.1.1. // tra danh sach cac canh
2.1.2. // Lay ID tu danh sach cac canh
2.2. // Hien thi chu trinh toi uu
- 117 -
Hình 7.2.5-7 Sequence Diagram: Tìm chu trình t(cid:1237)i (cid:1133)u
2.2. // Hien thi chu trinh toi uu
1. // Chon cac diem di qua 2. // Tim chu trinh toi uu
: CMapView
: CScreen
2.1. //Tim chu trinh toi uu
: Nguoi Dung
: CDataBase
2.1.2. // Lay ID tu danh sach cac canh
2.1.1. // Tim chu trinh toi uu
2.1.1.1. // tra danh sach cac canh
: CTSP
Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình t(cid:1237)i (cid:1133)u
- 118 -
(cid:39)(cid:1231)ch chuy(cid:1223)n vùng nhìn:
: CMapView
: Nguoi Dung
: CScreen
1. // Lay diem bat dau di chuyen
bang cach nhan chuot hay dat but
2. // Di chuyen toi vi tri moi
2.1. // Tinh do dich chuyen
2.2. // Thay doi vung nhin
2.3. // Hien thi ban do
- 119 -
Hình 7.2.5-9 Sequence Diagram: D(cid:1231)ch chuy(cid:1223)n vùng nhìn
2.1. // Tinh do dich chuyen
1. // Lay diem bat dau di chuyen 2. // Di chuyen toi vi tri moi
: Nguoi Dung
: CScreen
2.2. // Thay doi vung nhin 2.3. // Hien thi ban do
: CMapView
Hình 7.2.5-10 Collabrotion Diagram: Di chuy(cid:1223)n vùng nhìn
: CMapView
: Nguoi Dung
: CScreen
1. // Chon kich thuc ti le
1.1. // Ti le lai ban do
1.2. // hien thi ban do
(cid:55)(cid:1229) l(cid:1227) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239):
- 120 -
Hình 7.2.5-11 Sequence Diagram: T(cid:1229) l(cid:1227) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239)
1. // Chon kich thuc ti le
: Nguoi Dung
: CScreen
1.1. // Ti le lai ban do 1.2. // hien thi ban do
: CMapView
Hình 7.2.5-12 Collaboration Diagram: T(cid:1229) l(cid:1227) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239)
: CRegion
: CMapView
: Nguoi Dung
: CScreen
: CDlgInputToFind
1. // Tim dia diem
1.1. // Chon dia diem
1.1.1. // Lay ID dia diem
1.1.2. // hien thi thong tin dia diem
Tìm Region:
- 121 -
Hình 7.2.5-13 Sequence Diagram: Tìm (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m
1. // Tim dia diem
: Nguoi Dung
: CScreen
1.1.2. // hien thi thong tin dia diem
1.1. // Chon dia diem
: CMapView
1.1.1. // Lay ID dia diem
: CRegion
: CDlgInputToFind
Hình 7.2.5-14 Collaboration Diagram: Tìm (cid:255)(cid:1231)a (cid:255)(cid:76)(cid:1223)m
- 122 -
Tìm giao l(cid:1245)
: CEdge
: CMapView
: Nguoi Dung
: CScreen
: CDlgInputToFind
1. // Tim giao lo
1.1. // Chon Edge
1.1.1. // Lay danh sach ID va thong tin cua Edge
2. // Chon Edge giao
2.1. // Tim ID cua Edge va StartNode va EndNode
2.2. // xac ding co cung StartNode hay EndNode voi Edge da chon
2.3. // Hien thi giao lo
1. // Tim giao lo
: CScreen
: CMapView
: Nguoi Dung
2. // Chon Edge giao
2.3. // Hien thi giao lo
1.1. // Chon Edge
1.1.1. // Lay danh sach ID va thong tin cua Edge 2.1. // Tim ID cua Edge va StartNode va EndNode 2.2. // xac ding co cung StartNode hay EndNode voi Edge da chon
: CEdge
: CDlgInputToFind
Hình 7.2.5-15 Sequence Diagram: Tìm giao l(cid:1245)
- 123 -
Hình 7.2.5-16 Collaboration Diagram: Tìm giao l(cid:1245)
7.3
Thi(cid:1219)t k(cid:1219) giao di(cid:1227)n:
7.3.1 Giao di(cid:1227)n trên Desktop:
Màn hình chính (cid:255)(cid:1133)(cid:1255)c b(cid:1237) trí nh(cid:1133) sau : Toàn b(cid:1245) màn hình là b(cid:1191)n (cid:255)(cid:1239), bên trái
là khung (cid:255)(cid:1223) ch(cid:1233)n t(cid:1263)ng Layer khác nhau và khung nhìn b(cid:1191)n (cid:255)(cid:1239) thu nh(cid:1235), thanh
công c(cid:1257), thanh menu, và khung Detail hi(cid:1223)n th(cid:1231) nh(cid:1267)ng thông báo hay thông
tin v(cid:1221)(cid:3)(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng c(cid:1195)n thi(cid:1219)t.
Hình 7.3.1-1 Khung nhìn t(cid:1241)ng quát v(cid:1221) giao di(cid:1227)n
Thanh công c(cid:1257) nh(cid:1133) hình v(cid:1217):
- 124 -
Hình 7.3.1-2 Toolbar c(cid:1259)a ch(cid:1133)(cid:1131)ng trình
Các ch(cid:1261)c n(cid:259)ng trên thanh công c(cid:1257) nh(cid:1133) sau:
Bi(cid:1223)u t(cid:1133)(cid:1255)ng Ch(cid:1261)c n(cid:259)ng Ghi chú
Enable khi (cid:255)ã có c(cid:1131) s(cid:1251) (cid:46)(cid:1219)t n(cid:1237)i c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u và
(cid:71)(cid:1267) li(cid:1227)u. kh(cid:1251)i t(cid:1189)o giá tr(cid:1231)
PAGE_POOL_SIZE
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i Ng(cid:1133)ng k(cid:1219)t n(cid:1237)i c(cid:1131) s(cid:1251) d(cid:1267)
li(cid:1227)u
(cid:55)(cid:1189)o c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u Enable khi không t(cid:1239)n t(cid:1189)i
(cid:70)(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.
Xoá c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u Enable khi có c(cid:1131) s(cid:1251) d(cid:1267)
li(cid:1227)u và không t(cid:1239)n t(cid:1189)i k(cid:1219)t
(cid:81)(cid:1237)i.
(cid:47)(cid:1133)u l(cid:1189)i hình (cid:1191)nh hi(cid:1227)n t(cid:1189)i Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:70)(cid:1259)a b(cid:1191)n (cid:255)(cid:1239) (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Phóng to b(cid:1191)n (cid:255)(cid:1239) Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Thu nh(cid:1235) b(cid:1191)n (cid:255)(cid:1239) Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
(cid:55)(cid:1229) l(cid:1227) l(cid:1189)i b(cid:1191)n (cid:255)(cid:1239) theo t(cid:1229) l(cid:1227) Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
ban (cid:255)(cid:1195)u (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
(cid:71)(cid:1231)ch chuy(cid:1223)n b(cid:1191)n (cid:255)(cid:1239) Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
- 125 -
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Ch(cid:1233)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Edge c(cid:1259)a Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:69)(cid:1191)n (cid:255)(cid:1239). (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Ch(cid:1233)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng Region Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:70)(cid:1259)a b(cid:1191)n (cid:255)(cid:1239) (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Xoá các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c Ch(cid:1229) xoá Edge, không xoá
ch(cid:1233)n Region.
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131) Nút xác nh(cid:1201)n ch(cid:1233)n các
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u. (cid:255)(cid:76)(cid:1223)m cho bài toán tìm
chu trình t(cid:1237)i (cid:1133)u TSP.
Xác nh(cid:1201)n ch(cid:1189)y bài toán Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
TSP. (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Xoá các (cid:255)(cid:76)(cid:1223)m và chu Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
trình TSP tìm (cid:255)(cid:1133)(cid:1255)c (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131) Nút xác nh(cid:1201)n ch(cid:1233)n (cid:255)(cid:76)(cid:1223)m
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u. (cid:69)(cid:1203)t (cid:255)(cid:1195)u cho bài toán tìm
(cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t.
Nút xác nh(cid:1201)n ch(cid:1233)n (cid:255)(cid:76)(cid:1223)m Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
- 126 -
(cid:78)(cid:1219)t thúc cho bài toán tìm (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
(cid:255)(cid:1133)(cid:1249)ng ng(cid:1203)n nh(cid:1193)t.
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131) Combobox (cid:255)(cid:1223) ch(cid:1233)n
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u. thông s(cid:1237) t(cid:1229) l(cid:1227) cân b(cid:1205)ng
gi(cid:1267)a thu(cid:1201)t toán và
Heuristic
(Algorithm/Heuristic
Balance) trong thu(cid:1201)t toán
Astar
Nút xác nh(cid:1201)n ch(cid:1189)y bài Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131)
toán Astar (cid:86)(cid:1251) d(cid:1267) li(cid:1227)u.
Enable khi (cid:255)ã k(cid:1219)t n(cid:1237)i c(cid:1131) Xoá các (cid:255)(cid:76)(cid:1223)m (cid:255)(cid:1195)u, cu(cid:1237)i
(cid:86)(cid:1251) d(cid:1267) li(cid:1227)u. và (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t
(cid:89)(cid:1263)a tìm (cid:255)(cid:1133)(cid:1255)c.
Hi(cid:1223)n th(cid:1231) t(cid:1201)p tin tr(cid:1255) giúp Có bao g(cid:1239)m h(cid:1133)(cid:1247)ng d(cid:1199)n
và thuy(cid:1219)t minh s(cid:1265) d(cid:1257)ng
ch(cid:1133)(cid:1131)ng trình.
hi(cid:1223)n th(cid:1231) thông tin tác gi(cid:1191)
Hình 7.3.1-3 Các ch(cid:1261)c n(cid:259)ng chính trên thanh công c(cid:1257)
Thanh th(cid:1269)c (cid:255)(cid:1131)n ( Menu) g(cid:1239)m các ch(cid:1261)c n(cid:259)ng c(cid:1259)a b(cid:1191)n (cid:255)(cid:1239) g(cid:1239)m các th(cid:1269)c
- 127 -
(cid:255)(cid:1131)n nh(cid:1133) sau:
Hình 7.3.1-4 Thanh th(cid:1269)c (cid:255)(cid:1131)n File
Hình 7.3.1-5 Thanh th(cid:1269)c (cid:255)(cid:1131)n View
Các ch(cid:1261)c n(cid:259)ng chính trên thanh th(cid:1269)c (cid:255)(cid:1131)n:
Tên Ý ngh(cid:429)a Ghi chú
Connect (cid:46)(cid:1219)t n(cid:1237)i c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u Enable khi t(cid:1239)n t(cid:1189)i c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u.
Disconnect Ng(cid:1133)ng k(cid:1219)t n(cid:1237)i c(cid:1131) s(cid:1251) d(cid:1267) Enble khi (cid:255)ang m(cid:1251) k(cid:1219)t
li(cid:1227)u (cid:81)(cid:1237)i
CreateDatabase (cid:87)(cid:1189)o c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u Enable khi không t(cid:1239)n t(cid:1189)i
(cid:70)(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.
DeleteDatabase Xoá c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u Enable khi t(cid:1239)n t(cid:1189)i c(cid:1131) s(cid:1251)
(cid:71)(cid:1267) li(cid:1227)u và (cid:255)ang ng(cid:1133)ng
(cid:78)(cid:1219)t n(cid:1237)i
- 128 -
Save (cid:47)(cid:1133)u hình (cid:1191)nh b(cid:1191)n (cid:255)(cid:1239) hi(cid:1227)n
(cid:87)(cid:1189)i
Exit (cid:264)óng (cid:1261)ng d(cid:1257)ng
StandardToolbar Hi(cid:1223)n th(cid:1231) thanh Toolbar
hay không. (cid:264)ang hi(cid:1227)n thì
nó s(cid:1217)(cid:3)(cid:1197)n và ng(cid:1133)(cid:1255)c l(cid:1189)i.
Layer Hi(cid:1223)n th(cid:1231) khung Layer hay
không. (cid:264)ang hi(cid:1227)n thì nó
(cid:86)(cid:1217)(cid:3)(cid:1197)n và ng(cid:1133)(cid:1255)c l(cid:1189)i.
SmallMap Hi(cid:1223)n th(cid:1231) khung
SmallMap không. (cid:264)ang
hi(cid:1227)n thì nó s(cid:1217)(cid:3) (cid:1197)n và
ng(cid:1133)(cid:1255)c l(cid:1189)i.
Statusbar Hi(cid:1223)n th(cid:1231) thanh Statusbar
hay không. (cid:264)ang hi(cid:1227)n thì
nó s(cid:1217)(cid:3)(cid:1197)n và ng(cid:1133)(cid:1255)c l(cid:1189)i.
DetailInfo Hi(cid:1223)n th(cid:1231) khung
DetailInfo hay không.
(cid:264)ang hi(cid:1227)n thì nó s(cid:1217)(cid:3)(cid:1197)n và
ng(cid:1133)(cid:1255)c l(cid:1189)i.
(cid:37)(cid:1191)ng 7.3.1-1 Các ch(cid:1261)c n(cid:259)ng chính trên thanh th(cid:1269)c (cid:255)(cid:1131)n
Khung nhìn b(cid:1191)n (cid:255)(cid:1239) thu nh(cid:1235): ch(cid:1229) bao g(cid:1239)m hi(cid:1223)n th(cid:1231) b(cid:1191)n (cid:255)(cid:1239) t(cid:1241)ng quát, ch(cid:1229)
hi(cid:1223)n th(cid:1231) các vùng nh(cid:1133) qu(cid:1201)n huy(cid:1227)n (Region), sông (River) mà không hi(cid:1223)n th(cid:1231)
- 129 -
các chi ti(cid:1219)t nh(cid:1133)(cid:3)(cid:255)(cid:1133)(cid:1249)ng (Edge).
Hình 7.3.1-6 Khung nhìn b(cid:1191)n (cid:255)(cid:1239) thu nh(cid:1235)
Khung ch(cid:1233)n các c(cid:1193)p (Layer )b(cid:1191)n (cid:255)(cid:1239) khác nhau: g(cid:1239)m m(cid:1245)t khung nhìn
(cid:71)(cid:1189)ng cây, dùng (cid:255)(cid:1223) ch(cid:1233)n các Layer khác nhau nh(cid:1133) hi(cid:1223)n th(cid:1231) Edge hay không,
hi(cid:1223)n th(cid:1231) River (sông) hay không, hi(cid:1227)n th(cid:1231) các Region hay không.
Hình 7.3.1-7 Khung Layer
Khung Detail: g(cid:1239)m m(cid:1245)t khung nhìn ch(cid:1261)a thông tin c(cid:1259)a (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng (cid:255)(cid:1133)(cid:1255)c
ch(cid:1233)n. Ví d(cid:1257)(cid:3)(cid:255)ang ch(cid:1233)n (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng trên b(cid:1191)n (cid:255)(cid:1239). Và (cid:255)ây c(cid:458)ng là khung hi(cid:1223)n th(cid:1231)
- 130 -
(cid:78)(cid:1219)t qu(cid:1191) tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t.
Hình 7.3.1-8 Khung hi(cid:1223)n th(cid:1231) thông tin (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng
7.3.2 Giao di(cid:1227)n trên PocketPC:
Trên PocketPC ch(cid:1229) hi(cid:1223)n th(cid:1231) Edge, khung hi(cid:1223)n b(cid:1191)n (cid:255)(cid:1239) chính và các nút
chính. Không có khung nhìn thu nh(cid:1235) b(cid:1191)n (cid:255)(cid:1239), không có khung ch(cid:1233)n c(cid:1193)p hi(cid:1223)n
th(cid:1231), không có khung hi(cid:1223)n th(cid:1231) thông tin (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng.
7.4
Cài (cid:255)(cid:1211)t:
Công c(cid:1257) phân tích thi(cid:1219)t k(cid:1219): Rational Rose
Môi tr(cid:1133)(cid:1249)ng l(cid:1201)p trình: Microsoft Visual Studio.NET 2003
Môi tr(cid:1133)(cid:1249)ng th(cid:1265) nghi(cid:1227)m và cài (cid:255)(cid:1211)t:
Máy PC dùng CPU Celeron 1.8G, 256 MB RAM.
Máy (cid:1191)o gi(cid:1191) l(cid:1201)p PocketPC 2002 trên h(cid:1227)(cid:3) (cid:255)(cid:76)(cid:1221)u hành Microsoft Windows
- 131 -
XP
CH(cid:1132)(cid:1130)NG 8 : (cid:46)(cid:1219)t Lu(cid:1201)n, (cid:264)ánh giá và h(cid:1133)(cid:1247)ng phát tri(cid:1223)n
8.1
(cid:46)(cid:1219)t lu(cid:1201)n, (cid:255)ánh giá:
Nh(cid:1267)ng k(cid:1219)t qu(cid:1191)(cid:3)(cid:255)(cid:1189)t (cid:255)(cid:1133)(cid:1255)c:
Bài toán (cid:255)ã gi(cid:1191)i quy(cid:1219)t các v(cid:1193)n (cid:255)(cid:1221) c(cid:1131) b(cid:1191)n (cid:255)(cid:1211)t ra, (cid:255)ã t(cid:1189)o (cid:255)(cid:1133)(cid:1255)c d(cid:1267) li(cid:1227)u h(cid:1133)(cid:1247)ng
(cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng và qu(cid:1191)n lý t(cid:1237)t các (cid:255)(cid:1237)i t(cid:1133)(cid:1255)ng thông tin (cid:255)(cid:1231)a lý. Ngoài ra (cid:255)ã cài (cid:255)(cid:1211)t
thành công các thu(cid:1201)t toán nh(cid:1133) tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t gi(cid:1267)a hai (cid:255)(cid:76)(cid:1223)m b(cid:1205)ng
thu(cid:1201)t gi(cid:1191)i A*, thu(cid:1201)t toán tìm chu trình t(cid:1237)i (cid:1133)u ( thu(cid:1201)t toán TSP).
T(cid:1237)c (cid:255)(cid:1245) ch(cid:1133)(cid:1131)ng trình ch(cid:1193)p nh(cid:1201)n (cid:255)(cid:1133)(cid:1255)c.
Giao di(cid:1227)n khá (cid:255)(cid:1213)p và thân thi(cid:1227)n.
Ch(cid:1133)(cid:1131)ng trình có c(cid:1193)u trúc rõ ràng, d(cid:1225) phát tri(cid:1223)n.
8.2
(cid:43)(cid:1133)(cid:1247)ng phát tri(cid:1223)n:
Trong t(cid:1133)(cid:1131)ng lai (cid:1261)ng d(cid:1257)ng có th(cid:1223) phát tri(cid:1223)n hoàn thi(cid:1227)n h(cid:1131)n v(cid:1221) chi(cid:1221)u r(cid:1245)ng
nh(cid:1133) m(cid:1251) r(cid:1245)ng b(cid:1191)n (cid:255)(cid:1239), m(cid:1251) r(cid:1245)ng l(cid:429)nh v(cid:1269)c (cid:1261)ng d(cid:1257)ng và có th(cid:1223) m(cid:1251) r(cid:1245)ng lên
nhi(cid:1221)u thi(cid:1219)t b(cid:1231)(cid:3)(cid:255)(cid:1211)c bi(cid:1227)t là thi(cid:1219)t b(cid:1231) di (cid:255)(cid:1245)ng.
CH(cid:1132)(cid:1130)NG 9 : Tài li(cid:1227)u tham kh(cid:1191)o [1] www.garret.ru. [2] OpenGIS™ Abstract Specification. [3] OpenGIS Reference Model[ORM]. [4] Feature Geometry. [5] An Algorithm For Building Full Topology. [6] Lu(cid:1201)n v(cid:259)n cao h(cid:1233)c v(cid:1221) mô hình Topology.
- 133 -
Ph(cid:1257) l(cid:1257)c
CH(cid:1132)(cid:1130)NG 10 :
10.1 Bài toán tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t gi(cid:1267)a hai (cid:255)(cid:76)(cid:1223)m:
10.1.1 Phát bi(cid:1223)u bài toán:
Phát bi(cid:1223)u c(cid:1131) b(cid:1191)n c(cid:1259)a bài toán nh(cid:1133) sau: Cho tr(cid:1133)(cid:1247)c (cid:255)(cid:1239) th(cid:1231) G và 2 nút
startNode và endNode thu(cid:1245)c G. Tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t trong G n(cid:1237)i
startNode và endNode.
10.1.2 Gi(cid:1191)i quy(cid:1219)t bài toán:
(cid:48)(cid:1245)t yêu c(cid:1195)u phát sinh là có tr(cid:1133)(cid:1249)ng h(cid:1255)p hai (cid:255)(cid:76)(cid:1223)m startNode ho(cid:1211)c endNode
trên m(cid:1189)ng l(cid:1133)(cid:1247)i giao thông không ph(cid:1191)i là các Node trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u.Khi (cid:255)ó
chúng ta s(cid:1217) s(cid:1265) d(cid:1257)ng nh(cid:1133) Node (cid:1191)o, khi (cid:255)ó các Node (cid:1191)o này nh(cid:1133) các Node
trong c(cid:1131) s(cid:1251) d(cid:1267) li(cid:1227)u nh(cid:1133)ng khi ch(cid:1133)(cid:1131)ng trình (cid:255)(cid:1133)(cid:1255)c t(cid:1203)t (cid:255)i thì các Node (cid:1191)o này
không còn n(cid:1267)a. V(cid:1247)i ph(cid:1133)(cid:1131)ng pháp Node (cid:1191)o này chúng ta d(cid:1225) dàng qu(cid:1191)n lý các
(cid:89)(cid:1231) trí trên các c(cid:1189)nh v(cid:1247)i s(cid:1237) l(cid:1133)(cid:1255)ng c(cid:1269)c l(cid:1247)n và v(cid:1199)n b(cid:1191)o (cid:255)(cid:1191)m tính liên thông gi(cid:1267)a
nút th(cid:1201)t vào (cid:1191)o.
Bài toán này có nhi(cid:1221)u cách gi(cid:1191)i quy(cid:1219)t khác nhau. Trong lu(cid:1201)n v(cid:259)n
này,ph(cid:1133)(cid:1131)ng pháp (cid:255)(cid:1133)(cid:1255)c ch(cid:1233)n (cid:255)(cid:1223) gi(cid:1191)i quy(cid:1219)t là dùng thu(cid:1201)t gi(cid:1191)i (heuristic) A*.
Thu(cid:1201)t gi(cid:1191)i c(cid:1257) th(cid:1223) nh(cid:1133) sau:
1. N(cid:1219)u startNode b(cid:1205)ng endNode, không c(cid:1195)n gi(cid:1191)i quy(cid:1219)t bài toán n(cid:1267)a.
2. Kh(cid:1251)i t(cid:1189)o 2 t(cid:1201)p h(cid:1255)p r(cid:1243)ng, m(cid:1245)t là t(cid:1201)p openedNode, hai là t(cid:1201)p closedNode.
Kh(cid:1251)i t(cid:1189)o bi(cid:1219)n PathhPound=false. Kh(cid:1251)i t(cid:1189)o bi(cid:1219)n s(cid:1237) th(cid:1269)c
- 134 -
AlgorithmHeuristicBalance trong kho(cid:1191)ng [0.0,1.0].
3. (cid:1260)ng v(cid:1247)i m(cid:1243)i node trong G, kh(cid:1251)i t(cid:1189)o bi(cid:1219)n distance b(cid:1205)ng vô c(cid:1269)c và bi(cid:1219)n
prevNode b(cid:1205)ng null (Riêng v(cid:1247)i startNode kh(cid:1251)i t(cid:1189)o distance b(cid:1205)ng 0 và
prevNode b(cid:1205)ng chính startNode).
4. Thêm node startNode vào t(cid:1201)p openedNode.
5. V(cid:1247)i m(cid:1243)i node trong t(cid:1201)p openedNode, tính (f(node)=g(node) + h(node))*
6. Gán cho node có f(node) nh(cid:1235) nh(cid:1193)t là bestNode.
7. N(cid:1219)u không tìm (cid:255)(cid:1133)(cid:1255)c bestNode, thu(cid:1201)t toán k(cid:1219)t thúc, không tìm (cid:255)(cid:1133)(cid:1255)c l(cid:1249)i
gi(cid:1191)i.
8. N(cid:1219)u tìm (cid:255)(cid:1133)(cid:1255)c, lo(cid:1189)i bestNode ra kh(cid:1235)i t(cid:1201)p openedNode.
9. N(cid:1219)u bestNode b(cid:1205)ng chính endNode, làm r(cid:1243)ng t(cid:1201)p openedNode.Gán
PathFound=true.
10. N(cid:1219)u không, th(cid:1269)c hi(cid:1227)n vi(cid:1227)c tìm các node xung quanh bestNode (cid:255)(cid:1223) thêm
vào openedNode.(**)
11. N(cid:1219)u t(cid:1201)p openedNode khác r(cid:1243)ng, tr(cid:1251) l(cid:1189)i b(cid:1133)(cid:1247)c 5.
12. N(cid:1219)u t(cid:1201)p openedNode r(cid:1243)ng
(cid:49)(cid:1219)u PathFound=true
Bài toán (cid:255)ã tìm (cid:255)(cid:1133)(cid:1255)c l(cid:1249)i gi(cid:1191)i.
(cid:49)(cid:1219)u PathFound=false
Bài toán không có l(cid:1249)i gi(cid:1191)i.
13.End
(*) c(cid:1257) th(cid:1223) nh(cid:1133) sau:
f(node)=AlgorithmHeuristicBalance*distance(node) + (1 –
- 135 -
AlgorithmHeuristicBalance) * d(node,endNode).
V(cid:1247)i:
d(node1,node2)=sqrt(sqr(node1.x-node2.x)+sqr(node1.y-node2.y))
(**) c(cid:1257) th(cid:1223) nh(cid:1133) sau:
1.Tìm các node aroundNode xung quanh (n(cid:1237)i tr(cid:1269)c ti(cid:1219)p) v(cid:1247)i node N c(cid:1195)n
xét.
2.V(cid:1247)i m(cid:1243)i aroundNode:
Tính l(cid:1189)i giá tr(cid:1231) distance và prevNode c(cid:1259)a nó:
Distance(aroundNode)=diatance(aroundNode) + kho(cid:1191)ng cách th(cid:1201)t t(cid:1263) N
(cid:255)(cid:1219)n aroundNode.
prevNode(aroundNode)=N.
(cid:49)(cid:1219)u ((aroundNode (cid:255)ã xu(cid:1193)t hi(cid:1227)n trong openedNode(closedNode) và
distance c(cid:1259)a aroundNode này bé h(cid:1131)n distance c(cid:1259)a node t(cid:1133)(cid:1131)ng (cid:1261)ng trong
(cid:87)(cid:1201)p openedNode(closedNode)) ho(cid:1211)c (aroundNode ch(cid:1133)a xu(cid:1193)t hi(cid:1227)n trong
openedNode(closedNode))) thì:
Lo(cid:1189)i node t(cid:1133)(cid:1131)ng (cid:1261)ng (cid:255)ó ra kh(cid:1235)i t(cid:1201)p openedNode ho(cid:1211)c closedNode.
Thêm aroundNode vào openedNode.
N(cid:1219)u không,tr(cid:1251) l(cid:1189)i b(cid:1133)(cid:1247)c 2.
10.2 Bài toán tìm chu trình t(cid:1237)i (cid:1133)u
10.2.1 Phát bi(cid:1223)u bài toán
- 136 -
Cho (cid:255)(cid:1239) th(cid:1231) G có n (cid:255)(cid:1229)nh. Tìm chu trình Hamilton ng(cid:1203)n nh(cid:1193)t c(cid:1259)a G.
10.2.2 Gi(cid:1191)i quy(cid:1219)t bài toán:
(cid:38)(cid:458)ng gi(cid:1237)ng nh(cid:1133) bài toán tìm (cid:255)(cid:1133)(cid:1249)ng (cid:255)i ng(cid:1203)n nh(cid:1193)t, bài toán tìm chu trình t(cid:1237)i
(cid:1133)u c(cid:458)ng có v(cid:1193)n (cid:255)(cid:1221) v(cid:1221) Node (cid:1191)o và ta c(cid:458)ng gi(cid:1191)i quy(cid:1219)t t(cid:1133)(cid:1131)ng t(cid:1269).
Bài toán c(cid:458)ng có nhi(cid:1221)u cách gi(cid:1191)i quy(cid:1219)t. Trong lu(cid:1201)n v(cid:259)n này, ph(cid:1133)(cid:1131)ng pháp
(cid:255)(cid:1133)(cid:1255)c ch(cid:1233)n là thu(cid:1201)t toán r(cid:1217) nhánh và ch(cid:1211)n (Branch and Bound). Tuy (cid:255)ây
không ph(cid:1191)i là thu(cid:1201)t toán t(cid:1237)i (cid:1133)u nh(cid:1133)ng ch(cid:1193)p nh(cid:1201)n (cid:255)(cid:1133)(cid:1255)c v(cid:1247)i s(cid:1237) l(cid:1133)(cid:1255)ng (cid:255)(cid:1229)nh
không quá l(cid:1247)n. H(cid:1131)n n(cid:1267)a, các thu(cid:1201)t toán khác t(cid:1133)(cid:1131)ng (cid:255)(cid:1237)i ph(cid:1261)c t(cid:1189)p trong vi(cid:1227)c
cài (cid:255)(cid:1211)t và m(cid:1257)c tiêu chính c(cid:1259)a lu(cid:1201)n v(cid:259)n không t(cid:1201)p trung vào ph(cid:1195)n này nên
thu(cid:1201)t toán r(cid:1217) nhánh và ch(cid:1211)n là m(cid:1245)t l(cid:1269)a ch(cid:1233)n thích h(cid:1255)p.
Thu(cid:1201)t toán s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c mô t(cid:1191) và gi(cid:1191)i thích nh(cid:1133) sau:
Gi(cid:1191) s(cid:1265) t(cid:1201)p h(cid:1255)p các (cid:255)(cid:1229)nh c(cid:1259)a G là {1,2..n}và ma tr(cid:1201)n tr(cid:1233)ng s(cid:1237) c(cid:1259)a G là
M=[Mij] v(cid:1247)i Mij là tr(cid:1233)ng s(cid:1237) c(cid:1259)a c(cid:1189)nh xu(cid:1193)t phát t(cid:1263) node i và (cid:255)(cid:1219)n node j có
giá tr(cid:1231) d(cid:1133)(cid:1131)ng (Các c(cid:1189)nh không “(cid:255)i (cid:255)(cid:1133)(cid:1255)c” s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c gán giá tr(cid:1231) là d(cid:1133)(cid:1131)ng vô c(cid:1269)c.
1.Th(cid:1269)c hi(cid:1227)n th(cid:1259) t(cid:1257)c rút g(cid:1233)n M. Tr(cid:1263) m(cid:1243)i ph(cid:1195)n t(cid:1265) trên dòng (c(cid:1245)t) cho ph(cid:1195)n
(cid:87)(cid:1265) nh(cid:1235) nh(cid:1193)t (g(cid:1233)i là ph(cid:1195)n t(cid:1265) rút g(cid:1233)n) trên dòng (c(cid:1245)t) (cid:255)ó. Ma tr(cid:1201)n k(cid:1219)t qu(cid:1191)(cid:3)(cid:255)(cid:1133)(cid:1255)c
ký hi(cid:1227)u là Mx. (cid:264)(cid:1211)t LB b(cid:1205)ng t(cid:1241)ng giá tr(cid:1231) các ph(cid:1195)n t(cid:1265) rút g(cid:1233)n. (cid:264)ây là ch(cid:1211)n
(cid:71)(cid:1133)(cid:1247)i c(cid:1259)a Mx (Các chu trình Hamilton (cid:255)(cid:1221)u có tr(cid:1233)ng s(cid:1237) l(cid:1247)n h(cid:1131)n hay b(cid:1205)ng LB).
2. Ch(cid:1233)n c(cid:1189)nh ij b(cid:1193)t k(cid:484) có Mij b(cid:1205)ng 0 (cid:255)(cid:1223) th(cid:1269)c hi(cid:1227)n th(cid:1259) t(cid:1257)c r(cid:1217) nhánh: G(cid:1233)i X
là t(cid:1201)p h(cid:1255)p g(cid:1239)m m(cid:1233)i chu trình Hamilton. Chia X thành hai t(cid:1201)p con phân bi(cid:1227)t
là (ij) g(cid:1239)m các chu trình có ch(cid:1261)a c(cid:1189)nh ij và (*ij) g(cid:1239)m các chu trình không
ch(cid:1261)a c(cid:1189)nh ij.
2.1.Xét (ij). M(cid:1233)i chu trình trong (ij) s(cid:1217)(cid:3)(cid:255)(cid:1221)u không dùng (cid:255)(cid:1219)n b(cid:1193)t c(cid:1261)
ph(cid:1195)n t(cid:1265) nào ngoài Mij trên hàng i và c(cid:1245)t j c(cid:1259)a M. Do (cid:255)ó ta có th(cid:1223) gán các
- 137 -
giá tr(cid:1231) ngoài Mij trên hàng i c(cid:1245)t j b(cid:1205)ng vô c(cid:1269)c. Ngoài ra, các c(cid:1189)nh n(cid:1219)u s(cid:1265)
(cid:71)(cid:1257)ng có th(cid:1223) t(cid:1189)o ra chu trình con c(cid:458)ng s(cid:1217)(cid:3)(cid:255)(cid:1133)(cid:1255)c gán b(cid:1205)ng vô c(cid:1269)c. Sau (cid:255)ó ta
th(cid:1269)c hi(cid:1227)n th(cid:1259) t(cid:1257)c rút g(cid:1233)n ma tr(cid:1201)n này nh(cid:1133)(cid:3)(cid:255)ã th(cid:1269)c hi(cid:1227)n (cid:1251) b(cid:1133)(cid:1247)c 1 và tính
LB1:
LB1=LB+ t(cid:1241)ng các ph(cid:1195)n t(cid:1265) rút g(cid:1233)n.
2.2.Xét (*ij). Ta ch(cid:1229) c(cid:1195)n gán Mij b(cid:1205)ng vô c(cid:1269)c r(cid:1239)i th(cid:1269)c hi(cid:1227)n th(cid:1259) t(cid:1257)c
rút g(cid:1233)n ngay (cid:255)(cid:1223) tính LB2:
LB2=LB+ t(cid:1241)ng các ph(cid:1195)n t(cid:1265) rút g(cid:1233)n.
2.3.So sánh LB1 và LB2, ch(cid:1233)n giá tr(cid:1231) nào bé h(cid:1131)n gán cho LB r(cid:1239)i l(cid:1211)p
(cid:79)(cid:1189)i b(cid:1133)(cid:1247)c 2 t(cid:1189)i ma tr(cid:1201)n t(cid:1133)(cid:1131)ng (cid:1261)ng v(cid:1247)i LB m(cid:1247)i t(cid:1189)o cho (cid:255)(cid:1219)n khi tìm (cid:255)(cid:1133)(cid:1255)c l(cid:1249)i
- 138 -
gi(cid:1191)i c(cid:1259)a bài toán.