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)

(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

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

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

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.