TR NG I H C KHOA H C T NHIÊN
KHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PH N M M
e&f
NGUY N TH LÝ - NGUY N SAO K
NG D NG PH N M M MÃ NGU N M H QU N
TR C S D LI U H NG I T NG PERST
XÂY D NG NG D NG QU N LÝ H TH NG
THÔNG TIN A LÝ THÀNH PH HCM
KHÓA LU N C NHÂN TIN H C
TpHCM, 2005
- 2 -
TR NG I H C KHOA H C T NHIÊNKHOA CÔNG NGH THÔNG TIN
MÔN CÔNG NGH PH N M Me&f
NGUY N TH LÝ - 0112187
NGUY N SAO K - 0112186
NG D NG PH N M M MÃ NGU N M H QU N
TR C S D LI U H NG I T NG PERST
XÂY D NG NG D NG QU N LÝ H TH NG
THÔNG TIN A LÝ THÀNH PH HCM
KHÓA LU N C NHÂN TIN H C
GIÁO VIÊN H NG D NTh.s NGUY N MINH NAM
NIÊN KHOÁ 2001-2005
- 3 -
I C M NChúng em chân thành cám n Khoa Công ngh Thông tin, tr ng i h c
Khoa h c T nhiên t o u ki n cho chúng em th c hi n tài lu n v n t t
nghi p này.
Chúng em chân thành cám n th y Nguy n Minh Nam ã t n tình h ng
n, ch b o chúng em trong su t th i gian th c hi n tài.
Chúng em chân thành cám n quý th y cô trong khoa ã t n tình gi ng
y, trang b cho chúng em nh ng ki n th c quý báu trong nh ng n m h c
a qua.
Chúng con xin nói lên lòng bi t n sâu s c i v i cha m , nh ng ng i
ã ch m sóc, nuôi d y chúng con thành ng i và luôn ng viên tinh th n
cho chúng con.
Và c ng chân thành cám n các anh ch và b n bè ã ng h , giúp , trao
i ki n th c, kinh nghi m và ng viên chúng em trong th i gian h c t p và
nghiên c u.
c dù chúng em ã c g ng hoàn thành lu n v n trong ph m vi và kh
ng cho phép nh ng ch c ch n s không tránh kh i nh ng sai sót. Chúng
em kính mong nh n c s c m thông và t n tình ch b o c a quý th y cô
và các b n.
Tp.H Chí Minh, tháng 7 n m 2005Nguy n Th Lý – 0112187Nguy n Sao K - 0112186
- 4 -
TÓM T T LU N V NLu n v n c t ch c thành các ph n chính nh sau:
Ch ng 1: Gi i thi u t m quan tr ng, m c tiêu, ph m vi c a tài, các c s lý
thuy t và h ng ti p c n.
Ch ng 2: Cách t ch c c s d li u h ng i t ng PERST và nh ng so
sánh v i các cách t ch c c s d li u quan h và các h c s d li u h ng
i t ng khác.
Ch ng 3: Gi i thi u v mô hình Topology: nêu lên nh ng khái ni m c b n,
các i t ng trong Topology và các c p Topology.
Ch ng 4: Gi i thi u v GIS: gi i thi u t ng quan v GIS, các gi i pháp và ng
ng v GIS và ng d ng GIS trên PocketPC
Ch ng 5: Gi i thi u v chu n OpenGIS
Ch ng 6: T ng quan v PocketPC: Các v n và gi i pháp trên thi t b . Tình
tr ng b nh , t o c s d li u và ng d ng b n trên PocketPC.
Ch ng 7: ng d ng b n : mô hình phân tích thi t k .
Ch ng 8: K t lu n, ánh giá và h ng phát tri n
Ch ng 9: Nh ng tài li u tham kh o khi th c hi n tài
Ch ng 10:Nêu nh ng thu t toán chính trong ch ng trình
- 5 -
C L C
I C M N ........................................................................................................................ 3
TÓM T T LU N V N......................................................................................................... 4
DANH SÁCH CÁC HÌNH..................................................................................................... 8
DANH SÁCH CÁC B NG...................................................................................................10
T S KHÁI NI M, THU T NG VÀ T VI T T T ..................................................11
CH NG 1 : Hi n tr ng và yêu c u .................................................................................151.1 Hi n tr ng: .................................................................................................................151.2 Gi i quy t bài toán: ....................................................................................................16CH NG 2 : T ng quan v Perst .....................................................................................172.1 Gi i thi u: ..................................................................................................................172.2 c tính:.....................................................................................................................182.2.1 Persistency by reachability:....................................................................................182.2.2 Semi transparent object loading: ............................................................................212.2.3 Automatic scheme evaluation.................................................................................232.2.4 Relation: ................................................................................................................242.2.5 Index: ....................................................................................................................252.2.6 Giao tác (Transaction):...........................................................................................292.3 Transparent API: ........................................................................................................312.3.1 Dùng.NET Remoting API: .....................................................................................312.3.2 Dùng các thu c tính o (virtual properties):............................................................322.4 C ch th c hi n giao tác (Transaction):.....................................................................332.5 Nh ng tr ng h p nên dùng PERST: .........................................................................372.6 Các thông s c a PERST:...........................................................................................382.7 S l c v RTree:.......................................................................................................442.7.1 Gi i thi u:..............................................................................................................442.7.2 S l c v d li u không gian (spatial data) và các gi i pháp: ................................442.8 So sánh v i các h qu n tr c s d li u h ng i t ng khác: ................................45CH NG 3 : Gi i thi u v mô hình Topology.................................................................503.1 Gi i thi u: ..................................................................................................................503.2 Các khái ni m c b n trong Topology: .......................................................................503.3 Các lo i i t ng trong Topology: ............................................................................513.4 Các c p c a Topology: ...............................................................................................53
- 6 -
3.5 MBR – Minimum Bounding Rectangle: .....................................................................59CH NG 4 : Gi i thi u v GIS .......................................................................................604.1 Gi i thi u v các ng d ng và gi i pháp v GIS: ........................................................604.2 Mô hình d li u c a thông tin a lý: ..........................................................................614.3 Thu th p d li u: ........................................................................................................644.4 Các gi i thu t nghiên c u v GIS: ..............................................................................664.5 Các c u trúc d li u không gian trong GIS: ................................................................674.5.1 Cây t phân (Quad Tree):.......................................................................................674.5.2 k-d Tree: ................................................................................................................684.5.3 R-Tree: ..................................................................................................................694.5.4 R*-Tree: ................................................................................................................704.5.5 R+-Tree:.................................................................................................................714.6 ng d ng b n :.......................................................................................................724.6.1 Các ki u b n : ....................................................................................................724.6.2 Các i t ng c a b n :......................................................................................724.7 ng d ng GIS trên PocketPC:....................................................................................73CH NG 5 : Gi i thi u v chu n OpenGIS .....................................................................755.1 Các ki u d li u hình h c c a OpenGIS: ....................................................................755.2 OpenGIS Specification ( c t OpenGIS):..................................................................765.2.1 Các khái ni m: .......................................................................................................765.2.2 Nh ng d ch v OpenGIS (OpenGIS Services ):......................................................785.2.3 M t mô hình nh ng c ng ng thông tin (Information Communities Model ): .......795.2.4 c m: ..............................................................................................................795.2.5 Phân lo i: ...............................................................................................................815.3 OpenGIS Abstract Specification: ................................................................................825.3.1 Essential Model (mô hình b n ch t ): .....................................................................835.3.2 Abstract Model: .....................................................................................................85CH NG 6 : T ng quan v PocketPC .............................................................................896.1 T ng quan v PocketPC: ............................................................................................896.2 Kh n ng l p trình trên PocketPC:..............................................................................896.3 M t s v n khi l p trình ng d ng trên PocketPC: .................................................896.3.1 T c và các h tr kh n ng hi n th : ..................................................................896.3.2 Kh n ng và hình th c l u tr :...............................................................................906.3.3 T ng tác gi a ng i s d ng và thi t b : ..............................................................916.4 Các gi i pháp cho ng d ng b n trên PocketPC: ....................................................926.4.1 Yêu c u chung: ......................................................................................................92
- 7 -
6.4.2 V n t i u t c hi n th : .................................................................................936.5 T ch c d li u b n trên PocketPC:.......................................................................93CH NG 7 : ng d ng b n :.......................................................................................957.1 Phân tích và xác nh yêu c u:....................................................................................957.2 Phân tích - thi t k :.....................................................................................................967.2.1 S s d ng: .......................................................................................................967.2.2 c t Use-Case chính: ..........................................................................................977.2.2.1 Tìm ki m ng i: ...............................................................................................977.2.2.2 Tìm ki m Region: ..................................................................................................987.2.2.3 Tìm ng i ng n nh t: ........................................................................................997.2.2.4 Tìm chu trình t i u: ............................................................................................1017.2.3 S l p Class Diagram:.....................................................................................1027.2.3.1 S t ng quát:...................................................................................................1027.2.3.2 S l p d li u:.................................................................................................1037.2.3.3 S l p v :........................................................................................................1037.2.3.4 S s ki n: ......................................................................................................1047.2.4 Mô t các l p: ......................................................................................................1047.2.5 Các l u ho t ng: ..........................................................................................1117.3 Thi t k giao di n: ....................................................................................................1247.3.1 Giao di n trên Desktop: .......................................................................................1247.3.2 Giao di n trên PocketPC: .....................................................................................1317.4 Cài t:.....................................................................................................................131CH NG 8 : K t Lu n, ánh giá và h ng phát tri n ...................................................1328.1 K t lu n, ánh giá:....................................................................................................1328.2 H ng phát tri n: .....................................................................................................132CH NG 9 : Tài li u tham kh o....................................................................................133CH NG 10 : Ph l c .................................................................................................13410.1 Bài toán tìm ng i ng n nh t gi a hai m: ........................................................13410.1.1 Phát bi u bài toán:................................................................................................13410.1.2 Gi i quy t bài toán:..............................................................................................13410.2 Bài toán tìm chu trình t i u .....................................................................................13610.2.1 Phát bi u bài toán.................................................................................................13610.2.2 Gi i quy t bài toán:..............................................................................................137
- 8 -
DANH SÁCH CÁC HÌNHHình 3.2-1 Các i t ng trong mô hình Topology...............................................................51Hình 3.4-1 Quan h Topology c p 0 .....................................................................................56Hình 3.4-2 Quan h Topology c p 1 và 2..............................................................................57Hình 3.4-3 Quan h Topology c p 3 .....................................................................................58Hình 4.2-1 Thông tin c n l u tr ..........................................................................................61Hình 4.2-2 So sánh Raster và Vector ....................................................................................64Hình 4.3-1 Ph ng pháp Scanning .......................................................................................65Hình 4.5.1-1 Cây t phân .....................................................................................................67Hình 4.5.2-1 K-D Tree .........................................................................................................68Hình 4.5.3-1 R-Tree .............................................................................................................69Hình 4.5.5-1 R+-Tree ...........................................................................................................71Hình 4.6.2-1 Các i t ng chính trong b n ....................................................................73Hình 5.1-1 H phân c p các ki u d li u hình h c c a OpenGIS. .........................................76Hình 5.3.1-1 L p khái ni m..................................................................................................85Hình 7.2.1-1 S s d ng t ng quát...................................................................................96Hình 7.2.2.1-1 Use Case - Tìm ki m Edge............................................................................97Hình 7.2.2.2-1 Use Case: Tìm ki m Region..........................................................................98Hình 7.2.2.3-1 Use Case – Tìm ng i ng n nh t..............................................................99Hình 7.2.2.4-1 Use-Case - Tim chu trình t i u ..................................................................101Hình 7.2.3.1-1 S t ng quát ...........................................................................................102Hình 7.2.3.2-1 S l p d li u .............................................................................................103Hình 7.2.3.3-1 S l p v ................................................................................................103Hình 7.2.3.4-1 S s ki n ..............................................................................................104Hình 7.2.4-1 L p CNode ....................................................................................................106Hình 7.2.4-2 L p CEdge ....................................................................................................109Hình 7.2.5-1 Sequense Diagram: Hi n th b n ...............................................................112Hình 7.2.5-2 Collabration Diagram: Hi n th b n ...........................................................113Hình 7.2.5-3 Sequence Diagram: Tìm ng ng n nh t......................................................113Hình 7.2.5-4 Collabration Diagram: Tìm ng ng n nh t .................................................114Hình 7.2.5-5 Sequence Diagram: Tìm Edge........................................................................115Hình 7.2.5-6 Collabration Diagram: Tìm Edge ...................................................................116Hình 7.2.5-7 Sequence Diagram: Tìm chu trình t i u ........................................................117Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình t i u ...................................................118Hình 7.2.5-9 Sequence Diagram: D ch chuy n vùng nhìn ...................................................119
- 9 -
Hình 7.2.5-10 Collabrotion Diagram: Di chuy n vùng nhìn ................................................120Hình 7.2.5-11 Sequence Diagram: T l l i b n ..............................................................120Hình 7.2.5-12 Collaboration Diagram: T l l i b n .......................................................121Hình 7.2.5-13 Sequence Diagram: Tìm a m ................................................................121Hình 7.2.5-14 Collaboration Diagram: Tìm a m ..........................................................122Hình 7.2.5-15 Sequence Diagram: Tìm giao l ...................................................................123Hình 7.2.5-16 Collaboration Diagram: Tìm giao l .............................................................123Hình 7.3.1-1 Khung nhìn t ng quát v giao di n.................................................................124Hình 7.3.1-2 Toolbar c a ch ng trình ...............................................................................124Hình 7.3.1-3 Các ch c n ng chính trên thanh công c ........................................................127Hình 7.3.1-4 Thanh th c n File .......................................................................................128Hình 7.3.1-5 Thanh th c n View.....................................................................................128Hình 7.3.1-6 Khung nhìn b n thu nh ............................................................................130Hình 7.3.1-7 Khung Layer..................................................................................................130Hình 7.3.1-8 Khung hi n th thông tin i t ng.................................................................131
- 10 -
DANH SÁCH CÁC B NGng 2.2.4-1 Các m i quan h gi a 2 l p A va B .................................................................25ng 2.2.5-1 Các ki u Index c PERST h tr : ................................................................29ng 2.6-1 H ng s c nh ngh a s n trong l p StorageImpl...........................................42ng 2.8-1 So sánh các c tính c a các h qu n tr .............................................................47ng 2.8-2 B ng so sánh k t qu c a các h qu n tr c s d li u h ng i t ng.............49ng 3.4-1 Các c p Topology trong các l p VPF .................................................................55ng 3.4-2 Các c t c yêu c u nh ngh a quan h Topology trong VPF......................56ng 3.5-1. nh ngh a khung ch nh t nh nh t MBR........................................................59ng 4.2-1 B ng so sánh ki u d li u Raster va Vector...........................................................64ng 7.1-1 Các ch c n ng chính ..........................................................................................96ng 7.2.4-1 L p CDatabase..............................................................................................105ng 7.2.4-2 L p CMapView.............................................................................................105ng 7.2.4-3 L p CMapEvent ............................................................................................106ng 7.2.4-4 Thu c tính l p CNode ...................................................................................107ng 7.2.4-5 Ph ng th c l p CNode ...............................................................................108ng 7.2.4-6 Thu c tính l p CEdge...................................................................................110ng 7.2.4-7 Ph ng th c l p CEdge................................................................................111ng 7.3.1-1 Các ch c n ng chính trên thanh th c n ......................................................129
- 11 -
T S KHÁI NI M, THU T NG VÀ T VI T T T
Khái ni m nh ngh a Ghi chú
OODBMS (Object-
Oriented Database
Management System)
qu n tr c s d li u
ng i t ng
PERST Là m t h qu n tr c s
li u h ng i t ng
Nhúng - -Embedded Có ngh a là PERST c
tích h p ch t vào ch ng
trình, g n nh kho ng
cách gi a database và
ch ng trình r t nh ,
PERST tr c ti p l u d
li u trong các i t ng
a ch ng trình và
không c n có nh ng n
mã làm công vi c chuy n
li u t c s d li u
thành i t ng và ng c
i
Topology Là c u trúc cho mô hình
ng l i giao thông
GIS ( Geography th ng thông tin a
- 12 -
Information System ) lý. Là m t công ngh
a trên máy tính xây
ng b n , phân tích
và x lý các i t ng
n t i và các s ki n
y ra trên trái t.
Thông tin không gian Thông tin v nh ng c
m liên quan n hình
ng, v trí, quan h c a
các i t ng a lý.
Bao g m hai d ng:
ng hình h c:
mô t các c m
hình d ng, v trí. Ví
nh t a c a
m, ng…
D ng Topology:
mô t quan h gi a
các i t ng hình
c. Ví d nh
nh ng vùng nào k
i m t vùng xác
nh.
Thông tin phi không gian
( thông tin thu c tính )
Thông tin v nh ng c
m liên quan n th ng
kê, thông tin s , thông
tin c tr ng gán cho
i thu c tính c a i
Ví d nh tên ng
ph , dân s …
- 13 -
ng
PDA ( Personal Digital
Assistant )
Thi t b n t h tr
cá nhân, giúp ng i s
ng l u tr các thông
tin cá nhân, công vi c
n thi t c ng nh các
ph n m m t i thi u trên
t thi t b nh g n
Pocket PC Khái ni m này có th
dùng ch :
+ H u hành
nhúng Pocket PC do
Microsoft phát tri n
a trên nhân c a H
u hành Windows
CE
+ Các thi t b
PDA s d ng h u
hành Pocket PC
Edge i t ng c nh trong mô
hình Topology
Trong bài, Edge t ng
ng v i ng. Khi nh c
i Edge, hay ng có th
hi u ngh a nh nhau.
- 14 -
Region i t ng vùng ây không c p n
qu n huy n nh ng có th
hi u Region là qu n huy n.
ID nh danh c a i t ng Trong bài không nh c t i
tên ng, qu n huy n mà
ch nh c t i ID vì c s d
li u không thông tin tên
ng. Và khi nh c t i tên
a i t ng b t k thì
hi u là ID.
- 15 -
CH NG 1 : Hi n tr ng và yêu c u
1.1 Hi n tr ng:Trên th gi i hi n nay ã có nhi u ph n m m gi i quy t các bài toán v
n giao thông nh : RouteSmart, BusStops, Arclogistics, Routronic 2000,
DynaRoute… Vi t Nam nói riêng c ng có m t s công ty nh DolSoft, Hài
Hoà, … ã có m t s s n ph m v GIS nh Street Finder, SmartMap…. Các
n ph m trên a ph n s d ng c s d li u c t ch c trên các h qu n
tr c s d li u quan h ho c t t o. Tuy nhiên v n có v n c t ra:
1.Chi phí c a càc h qu n tr c s d li u th ng m i n u có dùng.
2.S khó kh n và có khi là “r c r i” trong cách l p trình giao ti p v i các
s d li u ph c t p có nhi u b ng, quan h …
Th t ra, hai v n trên có th c gi i quy t t ng i t t b ng cách s
ng h qu n tr c s d li u h ng i t ng PERST (mã ngu n m ).
PERST là m t h c s d li u t ng i nh (so v i các h c s d li u
khác) v i ph n lõi ch g m kho ng 5000 dòng mã. Yêu c u c u hình c a
PERST t ng i th p. H n n a, PERST c ng không c n n “s qu n tr ”
th ng th y các h c s d li u. M c dù n gi n nh v y nh ng PERST
n h tr y tính ACID trong vi c th c hi n giao tác (transaction) và h
tr vi c ph c h i (recovery) t ng i nhanh khi h th ng g p s c .
Không ch d ng l i ó mà PERST có h tr c vi c phát tri n trên môi
tr ng compact.NET framework nên có kh n ng phát tri n ng d ng trên
các thi t b di ng dùng WinCE hay PocketPC.
- 16 -
Vì v y, ta có th th y vi c dùng PERST gi i quy t bài toán v qu n lý
th ng thông tin a lý (GIS) là hoàn toàn kh thi.
1.2 Gi i quy t bài toán:t trong các y u t quan tr ng quy t nh s thành công hay th t b i c a
t h th ng thông tin a lí là vi c l a ch n mô hình c u trúc d li u thích
p, cho phép l u tr và khai thác thông tin m t cách hi u qu . Và mô hình
Topology th hi n t t nh ng òi h i trên (Mô hình này s c c p sau
trong lu n v n). Vì d li u Topology trên PERST không có s n nên chúng ta
n xây d ng l i d li u theo mô hình Topology. D li u thô (d li u ngu n)
c dùng trong ng d ng này là các t p tin text.
Bài toán s c gi i quy t ch y u b ng s ph i h p các ki n th c v
GIS,PERST và ho .
- 17 -
CH NG 2 : ng quan v PERST
2.1 Gi i thi u:PERST là m t h c s d li u “nhúng” dành cho các ng d ng c n tính
ng l u tr . PERST c thi t k dành riêng cho l p trình và không có giao
di n h a qu n tr . Vi c s d ng PERST khá n gi n và t c hi u
ng t ng i cao. c m chính d th y nh t c a PERST là s tích h p
ch t ch c a PERST v i m t ngôn ng l p trình xác nh. Hi n t i PERST
ch h tr cho 2 ngôn ng l p trình là Java và C#.
Không gi ng v i các h qu n tr c s d li u h ng i t ng khác
(OODBMSes), PERST không c n dùng n các b biên d ch hay các b ti n
lý c bi t khác. Nh v y, PERST có kh n ng cung c p c “tính trong
su t” trong l p trình m c cao. Các hàm API c a PERST ti n l i, d s
ng và có t c cao. Có th l y ví d khi so sánh v i Ozone (m t h c s
li u h ng i t ng khác vi t b ng Java). V i gi i h n (benchmark)
007, PERST t o database nhanh g p 100 l n và th c hi n phép duy t qua các
i t ng trong c s d li u nhanh g p 10 l n so v i Ozone. Và khi so v i
t h c s d li u h ng i t ng th ng m i khác là ObjectStore PSE
Pro, PERST nhanh h n g p 4 l n.
PERST là m t h c s d li u t ng i nh (so v i các h c s d li u
khác) v i ph n lõi ch g m kho ng 5000 dòng mã. Yêu c u c u hình c a
PERST t ng i th p. H n n a, PERST c ng không c n n “s qu n tr ”
th ng th y các h c s d li u. M c dù n gi n nh v y nh ng PERST
n h tr y tính ACID trong vi c th c hi n giao tác (transaction) và h
tr vi c ph c h i (recovery) t ng i nhanh khi h th ng g p s c .
- 18 -
Có hai b n cài t c a PERST, m t b ng ngôn ng Java và m t b ng C#.
n cài t trên C# c chuy n t Java dùng b chuy n i Java sang C#
(m c dù ph i có nhi u thay i c n th c hi n m i có c b n hoàn ch nh).
c dù b n cài t dùng C# h tr nhi u ki u “nguyên th y” h n (g m có
ki u s nguyên không d u và ki u li t kê (enum)) nh ng trong các ph ng
di n khác, các tính n ng c a hai b n là nh nhau. Riêng PERST.NET có h
tr c vi c phát tri n trên môi tr ng compact.NET framework nên có kh
ng phát tri n ng d ng trên các thi t b di ng dùng WinCE hay
PocketPC.
2.2 c tính:Trong ph n này chúng ta s i vào các tính ch t quan tr ng nh t c a
PERST. C th chúng ta s tìm hi u phiên b n cài t trên môi tr ng.NET
(g i t t là PERST.NET). ây các tính ch t có t nguyên g c ti ng Anh s
c gi nguyên do không có t ti ng Vi t thay th ng n g n mà úng
ngh a..
2.2.1 Persistency by reachability:Trong ng d ng dùng PERST, m i i t ng c a các l p c d n xu t t
p Persistent u có kh n ng l u tr (persistent hay còn d ch là b n v ng).
t bây gi , ta s g i t t các i t ng này là các i t ng persistent. Các
i t ng này c t ng l u vào database khi nó c tham chi u t m t
i t ng persistent khác và ph ng th c store c a i t ng khác ó c
i. Có ngh a là ta không c n ph i g i tr c ti p, t ng minh ph ng th c
store c a m t i t ng khi mu n l u i t ng ó.
- 19 -
Database có m t i t ng c bi t g i là root. i t ng root này là i
ng duy nh t c truy xu t m t cách c bi t (dùng ph ng th c
Storage.getRoot). Còn các i t ng persistent khác c truy xu t theo
cách bình th ng: ho c truy xu t b ng tham chi u t các i t ng persistent
nh trên ho c truy xu t b ng cách dùng các i t ng bao ch a (container
class) nh Index,Link hay Relation. Không gi ng nh các h c s d li u
ng i t ng khác, ch có th có duy nh t m t i t ng root trong c s
li u.
PERST yêu c u m i l p persistent u ph i d n xu t t l p Persistent. Có
ngh a là các l p “ngo i lai” (không d n xu t t l p Persistent) không th
c l u trong database. ây chính là cái giá ph i tr c a s n gi n và
không dùng n các b biên d ch hay ti n x lý c bi t. Và các thành ph n
a các l p persistent c ng b gi i h n trong các ki u sau:
Ki u vô h ng (scalar type):
Bool, int, short, double, enum …
Ki u chu i: Ki u System.String.
Ki u ngày tháng: Ki u System.DateTime.
Ki u tham chi u n các i t ng persistent: các l p k th a t l p
Persistent hay các giao di n (interface) k th a t giao di n IPersistent.
Ki u giá tr (value type): Các ki u giá tr c a C#. Các giá tr này
c l u tr c ti p trong i t ng ch a chúng.
Ki u d li u nh phân thô: Các l p c a C# k th a t giao di n
IPersistent hay t giao di n IValue và c ánh d u là Serializable. C
ch Serialization chu n s c dùng óng gói d li u c a các i
- 20 -
ng thành các m ng byte và l u chúng vào database. Các l p này s
c ánh d u là Serializable và không c ch a các tham chi u n các
i t ng persistent khác.
Ki u m ng: Các m ng m t chi u v i thành ph n là các ki u d li u
c nêu trên.
Ki u Link: i di n cho quan h m t-nhi u trong mô hình c s d
li u. Hay nhìn theo góc l p trình ây chính là ki u m ng ng ch a các
i t ng persistent.
Có m t v n là PERST không t bi t c r ng li u m t i t ng
persistent nào ó ã có thay i gì ch a trong quá trình làm vi c. Mu n bi t
c u ó ch có cách là ta t so sánh t ng field c a tr ng thái c và m i
i nhau. Nh ng nh v y chi phí r t cao. Vì th nên trong PERST, l p trình
viên hoàn toàn ch u trách nhi m v vi c l u i t ng nào vào c s d li u.
Có hai cách trong PERST ta có th l u m t i t ng vào c s d
li u:
Cách th nh t là dùng ph ng th c Persistent.Store. Ph ng th c này khi
c g i b i i t ng nào s l u b n thân i t ng ó và các i t ng
c tham chi u t nó m t cách tr c ti p hay không tr c ti p mà ch a c
u. Có ngh a là n u ta g i ph ng th c Store này i v i i t ng g c c a
t cây thì l n l t t t c các i t ng c a cây này s c l u xu ng b
nh ph .
Cách th hai là dùng ph ng th c Persistent.Modify: Ph ng th c này ch
ánh d u các i t ng r ng chúng ã b thay i ch không l u ngay l p t c
vào database. Cách này c bi t h u d ng khi i t ng c thay i nhi u
- 21 -
n trong m t giao tác. Lúc ó, thao tác ghi a ch ph i th c hi n m t l n
vào cu i giao tác, t ng hi u su t lên áng k .
2.2.2 Semi transparent object loading:Nh ã c p trên, PERST không dùng b t c b biên d ch hay ti n x
lý c bi t nào. Và vì C# không cung c p thông tin v các tr ng thái
(behavior) hay s thay i tr ng thái các i t ng trong th i gian th c thi
(runtime) nên không th cài t c c u l u tr c a PERST hoàn toàn “trong
su t” (transparent) c (ngh a là không th truy xu t các i t ng c
u tr và không c l u tr m t cách hoàn toàn gi ng nhau vì ta không th
phân bi t c khi nào ta ang truy xu t vào i t ng c l u tr hay
không c l u tr ). Thay cho s cài t “trong su t” hoàn toàn, PERST ã
g ng cung c p s “trong su t” trong a ph n các tr ng h p.
Giao di n IPersistent cung c p cho chúng ta ph ng th c
recursiveLoading. Ph ng th c này m c nh c cài t b ng cách tr v
(return) giá tr true. Có ngh a là PERST s load (vào b nh chính) m t cách
quy các i t ng c tham chi u t m t i t ng ngu n khi i t ng
ngu n này c load. Có ngh a là c ch này s gây ra vi c load ng m nh
toàn b các i t ng vào b nh chính. C ch này t ng t cách làm vi c
a c ch “chu i hóa” (serialization).
tránh v n tràn b nh x y ra khi load i t ng lên b nh chính
(do c ch recursiveLoading gây ra), chúng ta ph i quá t i (overload)
ph ng th c recursiveLoading trong m t vài l p b ng cách tr v (return)
giá tr false trong hàm. Các i t ng c tham chi u t các i t ng
thu c các l p ã nói trên s không c load ng m nh n a mà ph i c
- 22 -
load m t cách t ng minh b ng ph ng th c Persistent.Load. V y ta th y
ng ph ng th c recursiveLoading có th dùng u khi n cách th c
load các i t ng t b nh ph vào b nh chính.
u ý r ng các i t ng dùng ”ch a” các i t ng khác (container
class) nh Link,Relation,Index… ch load các i t ng mà nó ch a khi c n
thi t, không load t t c theo c ch recusiveLoading. Ngoài ra, vi c truy xu t
các i t ng thành ph n c a m t l p ki u container u thông qua các
ph ng th c c a nó.
PERST dùng ph ng th c kh i t o m c nh (không có tham s ) kh i
o b c ban u các i t ng c load t b nh ph . u này có ngh a
là:
1.M i l p có kh n ng l u tr c (persistent capable class) u nên có
ph ng th c kh i t o m c nh (ho c là không có ph ng th c kh i t o nào,
khi ó trình biên d ch s t t o ra cho ta). Ph ng th c này có th có m i t m
truy xu t có th c (public, private,protected … ).
2.Ph ng th c kh i t o ch kh i t o nh ng thành ph n không b n v ng,
không c n l u tr (transient) c a i t ng.
3.Ph ng th c kh i t o m c nh dùng t o nh ng th hi n c a các i
ng c load t b nh ph . V y t i th i m ph ng th c kh i t o m c
nh ho t ng các thành ph n c a i t ng ch a c gán các giá tr c
u tr trong b nh ph . N u ta mu n các thành ph n này c ng c kh i
o nh các thành ph n transient nói trên, ta c n kh i t o chúng trong hàm
OnLoad, c g i ngay khi các giá tr trong b nh ph c load lên b
nh chính.
- 23 -
Tóm l i, các c ch trên cho chúng ta s thu n ti n, d dàng và m m d o
trong l p trình, vì nó không yêu c u l p trình viên ph i load t ng minh các
i t ng trong khi v n cho phép vi c này, nói cách khác là PERST h tr
p trình viên trong vi c ki m soát vi c load các i t ng. Ch có các l p
“ch a” các i t ng khác là ph i load t ng minh các i t ng mà nó
ch a (vì các l p này ã m c nh c overload ph ng th c
recursiveLoading có giá tr tr v (return) false).
2.2.3 Automatic scheme evaluationPERST h tr “lazy automatic scheme evaluation”. Khi nh ngh a c a
t l p b thay i (thay i v s l ng bi n thành viên, thay i v ki u
a bi n thành viên…), PERST s chuy n các i t ng ã c load sang
nh d ng m i. N u i t ng ó trong quá trình ho t ng có thay i và
n ph i l u, nó s c l u d i d ng m i. PERST có kh n ng h tr các
ki u thay i nh d ng sau:
1.Các thay i “t ng thích” l n nhau gi a các ki u d li u vô
ng (thay i mà không c t b t d li u). Ví d nh thay i t ki u int
sang float hay int sang long,… nh ng ng c l i thì không c.
2.Thay i th t các thành ph n trong l p hay thêm, b t các thành
ph n trong l p này vào l p cha hay l p d n x t c a nó.
3.Thêm vào hay b l p kh i cây th a k c a l p.
4.Thay i nh d ng c a l p b ng cách thay i ý ngh a c a các
giá tr .
i thay i khác trong c u trúc l p ( i tên cho thành ph n, chuy n ki u
không t ng thích i v i các thành ph n…) u không c qu n lý b i c
- 24 -
ch thay i c u trúc d li u t ng c a PERST. Trong các tr ng h p này
ta có th dùng c ch xu t nh p b ng XML c a PERST. C s d li u có th
c xu t ra d ng XML b ng cách dùng ph ng th c Storage.exportXML,
o l i c s d li u theo nh d ng m i r i nh p d li u vào b ng ph ng
th c Storage.importXML c a PERST.
2.2.4 Relation:i quan h m t-m t gi a các i t ng trong c s d li u c th hi n
ng tham chi u (references) trong C#. Nh ng trong nhi u tr ng h p chúng
ta c n n quan h m t-nhi u hay quan h nhi u-nhi u. PERST cung c p
giao di n (interface) Link dùng cho các tr ng h p này. Giao di n này a ra
các ph ng th c thêm, xóa, tìm ki m… các thành ph n c a m t “b ”
(relation) các i t ng persistent. Các thành ph n c a “b ” (relation) này
có th c truy xu t b ng index hay ta có th chuy n chúng thành m t
ng i t ng r i m i truy xu t.
T p h p (relation) có 2 d ng:
1. D ng “nhúng” (embedded relation): Các tham chi u n các i
ng t m t i t ng c ch a trong chính i t ng ó.
2. D ng c l p (standalone relation): Khi ó relation là m t i
ng riêng bi t, ch a các tham chi u n các i t ng.
C hai d ng trên u cài t giao di n Link. C th Embedded
relation c t o b ng cách dùng ph ng th c Storage.createLink, còn
Standalone relation thì dùng ph ng th c Storage.createRelation.
B ng sau ây minh h a các m i quan h gi a 2 l p A và B:
- 25 -
Ki u quan h Object A Object B
t-m t B bref; A aref;
t-nhi u Link bref; A aref;
Nhi u-m t B bref; Link aref;
Nhi u-nhi u Link bref; Link aref;
ng 2.2.4-1 Các m i quan h gi a 2 l p A va B
2.2.5 Index:Thông th ng i t ng c truy xu t t m t i t ng khác b ng tham
chi u hay b ng Link nh trên. Tuy nhiên, chúng ta c ng c n truy xu t các i
ng thông qua khóa. Trong môi tr ng.NET, l p Hashtable là m t ví d
cho vi c truy xu t theo khóa này. i v i c s d li u, vi c truy xu t i
ng theo khóa d nhiên là t ng i ph c t p. Và vi c cài t trong PERST
n m t ch c n ng d ch các câu truy v n SQL là không kh thi vì nó s làm
cho PERST phình to ra và ch m i. Tuy nhiên trong ph n l n tr ng h p,
các ng d ng ch th c hi n các l nh truy v n d li u t ng i n gi n nh
tìm theo m t khóa chính xác hay trong m t kho ng giá tr nào ó. Trong
PERST vi c này c th c hi n b ng cách cài t các giao di n (interface)
Index và FieldIndex. Giao di n Index dùng cho các khóa c l p và các giá
tr t ng ng c a khóa ó. Còn giao di n FieldIndex thì dùng l p index
cho các i t ng v i khóa chính là m t thành ph n c a i t ng.
Index c t o trong PERST b ng ph ng th c Storage.createIndex i
i Index hay Storage.createFieldIndex i v i FieldIndex. Có th có vài
cách cài t Index nh ng hi n t i PERST ch dùng B+Tree cài t
- 26 -
(B+Tree là c u trúc d li u hi u qu nh t cho database trên b nh ph ). Các
ph ng th c c a giao di n Index và FieldIndex cho phép thêm, xóa, tìm
ki m i t ng theo khóa b ng giá tr chính xác ho c trong m t kho ng giá
tr nào ó. Vì v y các tr ng h p tìm ki m sau ây là th c hi n c:
1. Khóa b ng giá tr VAL.
2. Khóa thu c kho ng [MIN_VAL,MAX_VAL].
3. Khóa thu c kho ng [MIN_VAL,MAX_VAL).
4. Khóa thu c kho ng (MIN_VAL,MAX_VAL].
5. Khóa thu c kho ng (MIN_VAL,MAX_VAL).
6. Khóa l n h n giá tr MIN_VAL.
7. Khóa l n h n hay b ng giá tr MIN_VAL.
8. Khóa bé h n giá tr MAX_VAL.
9. Khóa bé h n hay b ng giá tr MAX_VAL.
Có m t s cách ch n i t ng theo khóa khác nhau nh sau:
a.IPersistent get(Key key): Ch n i t ng b ng khóa chính xác v i khóa
này nên là khóa duy nh t c a i t ng.
b.IPersistent[] get(Key from,Key till): L y ra m t m ng i t ng có khóa
m trong m t kho ng giá tr cho tr c gi i h n b i giá tr from và till.
Trong ó from và till có th mang giá tr tùy ý k c null.
c.IEnumerator GetEnumerator(): L y ra m t IEnumerator, có th dùng
câu l nh foreach duy t qua toàn b các i t ng trong index này theo
chi u t ng c a khóa.
- 27 -
d.IEnumerator GetEnumerator(Key from, Key till, IterationOrder order):
y ra m t IEnumerator v i khóa n m trong kho ng giá tr xác nh b i
from và till. Ta có th duy t qua IEnumerator này v i chi u khóa t ng hay
gi m u c.
u c n m t t p h p các i t ng, chúng ta có th s d ng ph ng th c
Storage.createSet. T p h p (set) c cài t b ng B+Tree v i object ID
(OID) là khóa.
Ngoài ra, PERST còn h tr r t m nh cho d li u “không gian” (spatial
data) b ng cách cung c p c u trúc SpatialIndex h tr vi c thêm, xóa, tìm
ki m các i t ng “không gian” d dàng. SpatialIndex c cài t b ng
u trúc RTree c a Guttman v i thu t toán “quadratic split” khá hi u qu
trong vi c tìm ki m các i t ng R2 (tìm ki m các i t ng không gian
i khóa tìm ki m là các giá tr liên quan n t a ).
B ng d i ây tóm t t các ki u Index c PERST h tr :
Interface Mô t Ki u c a
khóa
Cài t Ph ng th c t o
Index Index dùng tìm ki m
li u b ng khóa
chính xác ho c n m
trong m t kho ng
xác nh.
Ki u vô
ng,
chu i hay
ki u tham
chi u.
B+Tree Storage.CreateIndex
Index Nh trên nh ng áp
ng cho tr ng
Ki u vô
ng,
B+Tree Storage.CreateThinkI
ndex
- 28 -
p có khóa trùng. chu i hay
ki u tham
hi u.
FieldIndex Index v i khóa là
t trong các
tr ng c a l p c
p Index.
Ki u vô
ng,
chu i hay
ki u tham
chi u.
B+Tree Storage.CreateFieldIn
dex
BitIndex BitIndex dùng
tìm i t ng v i
khóa cógiá tr nh
phân.
Ki u i
ng có
kh n ng
u tr .
B+Tree Storage.CreaateBitInd
ex
ISet p h p các i
ng có kh n ng
u tr .
B+Tree Storage.CreateSet
IPersisten
tSet
p h p các i
ng có kh n ng
u tr c và t p
p này có kh n ng
co giãn, có th qu n
lý c c s l ng
ít l n s l ng
nhi u.
Ki u i
ng có
kh n ng
u tr .
Link
ho c
B+Tree
Storage.CreateScalabl
eSet
- 29 -
SpatialInd
ex
Index dành cho d
li u không gian.
Rectangle R-Tree Storage.CreateSpatialI
ndex
SpatialInd
exR2
Index dành cho d
li u không gian
nh ng có t a
th c.
Rectangle
R2
R-Tree Storage.CreateSpatialI
ndexR2
SortedCol
lection
Index v i phép Toán
so sánh do ng i
dùng nh ngh a.
i ki u T-Tree Storage.CreateStorage
Collection
ng 2.2.5-1 Các ki u Index c PERST h tr :
2.2.6 Giao tác (Transaction):ây ta không nh ngh a l i chính xác giao tác là gì mà ch n gi n
hình dung giao tác là m t t p các l nh ph i th c hi n và ph i ho c là th c
hi n toàn b các l nh ó ho c là không l nh nào c th c hi n c . PERST
cung c p tính n ng b o v s nh t quán c a d li u trong tr ng h p h
th ng hay ng d ng có l i hay m t n ph i t t t ng t. C ch cài t giao
tác s giúp ta m b o u này. i v i PERST, m t giao tác c ng m
nh kh i t o khi b t c m t l nh update c s d li u nào c th c hi n và
ch m d t t ng minh b ng l nh commit, rollback hay close.
Vi c commit m t giao tác s làm cho các trang (page) b thay i trong
quá trình th c hi n giao tác c ghi vào b nh ph ng b (Asynchronous
write: ch ng trình s ch cho vi c ghi vào a xong m i làm ti p vi c
khác). Công vi c này là công vi c có chi phí r t cao. Trung bình vi c nh v
- 30 -
i v i các a hi n i là kho ng 10ms, ngh a là ch kho ng 100 thao tác
nh v trong 1 giây. Thêm vào ó các giao tác th ng ch a các thao tác
update kho ng vài trang c s d li u nên trung bình ch còn kho ng 10 giao
tác m i giây.
c dù v y, hi u su t th c thi s c nâng cao áng k khi ta h n ch s
n th c hi n l nh commit, có ngh a là m t giao tác s l n h n, th c hi n
nhi u l nh h n. PERST dùng c ch t o bóng (shadow mechanism) trong
vi c th c hi n giao tác. Khi m t i t ng c thay i l n u tiên trong
t giao tác, m t b n copy (shadow) c a i t ng ó c t o ra và i
ng g c không thay i. Cho dù i t ng có c thay i nhi u l n
trong giao tác ó thì c ng ch có m t b n copy c a i t ng c t o ra.
Nh v y c ch này giúp PERST hoàn toàn không c n n các t p tin log
trong c s d li u thông th ng và các giao tác dài không th gây ra vi c
tràn log giao tác nh các h c s d li u khác. L u ý r ng n u ta không g i
nh commit m t cách t ng minh thì PERST s ch ho t ng m t cách
thông th ng theo c ch không h tr giao tác.
Khuy t m duy nh t c a vi c giao tác dài h n bình th ng là kh n ng
t i nhi u s thay i ã th c hi n c trong giao tác n u giao tác h ng
hay h th ng g p s c . Trong các tr ng h p nh v y, d li u v n m b o
tính nh t quán (consistency) nh ng các thao tác thay i c s d li u trong
giao tác ó u m t.
- 31 -
2.3 Transparent API:
2.3.1 Dùng.NET Remoting API:.NET framework cung c p gói System.Runtime.Remoting nh m h tr vi c
cài t các ng d ng phân tán. Ng i l p trình ch c n d n xu t các l p c a
t l p ContextBoundObject và dùng ContextAttribute t o message
sink: c ch dùng u khi n vi c g i hàm và truy xu t các thành ph n c a
i t ng. Dùng API này không nh ng áp d ng cho các h th ng phân tán
mà còn cho các h th ng d a trên giao th c metaobject (metaobject
protocol): giao th c u khi n i t ng. Ví d ta có th ng d ng chúng
cài t giao di n “trong su t” (transparent) cho c s d li u h ng i
ng này, ngh a là vi c thao tác trên các i t ng persistent hoàn toàn bình
th ng nh các i t ng khác.
PERST.NET ch a 2 l p PersistentContext và
TransparentPersistentAttribute dùng t o tính “b n v ng” m t cách “trong
su t” cho các i t ng b ng cách dùng.NET Remoting API. N u các l p c a
ng d ng chúng ta c d n xu t t l p PersistentContext và c ánh d u
ng tính ch t (attribute) TransparentPersistentAttribute, các thành ph n c a
nó s c load t ng hay l u t ng khi c n thi t (tr c ây ta u ph i
làm các thao tác này). Vì hàm recursiveLoading trong l p
PersistentContext tr v false nên các i t ng s c load ch khi nào ta
truy xu t nó.
Tuy nhiên có 2 gi i h n khi ta dùng remoting API:
1.Remoting API ch có th áp d ng i v i các thành ph n có t m truy
xu t public c a i t ng.
- 32 -
2.Chi phí c a vi c g i hàm thông qua remoting API cao g p kho ng 100
n so v i g i hàm thông th ng.
2.3.2 Dùng các thu c tính o (virtual properties):Có m t ý t ng khác t o nên s “trong su t” cho PERST d a trên vi c
dùng các thu c tính o (virtual properties). Không gi ng nh Java, C# cung
p c ch cho phép óng gói các thu c tính, thành ph n c a m t l p. Ý
ng ban u r t n gi n: T o ra l p bao b c (wrapper class) s cài t các
thu c tính này. Nh v y l p trình viên s c gi i phóng kh i nhi u vi c
nh nh t nh không ph i lo n chuy n quá t i hàm recursiveLoading, hay
i t ng minh hàm Load load i t ng c ng nh ánh d u i t ng b
thay i b i hàm Modify n a…. Tuy nhiên cách này v n có nh ng h n ch
a riêng nó:
1. i t ng c a chúng ta không c có các tr ng l u tr c
(persistent fields). Thay vì th , ta ph i nh ngh a các thu c tính tr u
ng. C# cung c p c ch cho phép ta d dàng làm vi c v i các thu c
tính, nên vi c l p trình s n ng n h n.
2.Ta c ng không th t o ra các i t ng này b ng toán t new nh
bình th ng. Ta ph i dùng ph ng th c IStorage.CreateClass dùng t o
p bao b c và t o ra i t ng c a l p này. L p này c ng không có hàm
kh i t o nào khác ngoài hàm kh i t o m c nh, và hàm kh i t o m c nh
này c ng không làm gì khác ngoài vi c kh i t o các thành ph n không
c l u tr (vì hàm kh i t o này s c g i m i khi i t ng c
load t b nh ph ).
- 33 -
3.Ta c ng không th có thành ph n c a i t ng là m ng các tham
chi u n các i t ng khác. Ta ph i dùng PERST.PArray thay th .
4.S phát sinh l p bao b c nh v y có chi phí cao, làm gi m hi u su t
ch ng trình n u có nhi u l p.
5.Cu i cùng, c ch này không c h tr trong môi tr ng .NET
Compact framework do môi tr ng này không h tr vi c t o mã trong
th i gian th c thi (runtime).
2.4 ch th c hi n giao tác (Transaction):i record hay i t ng trong PERST có duy nh t m t s nh danh g i
là OID. OID c dùng tham chi u gi a các i t ng v i nhau. nh
chính xác m t i t ng b ng tham chi u, OID c a chúng c dùng nh
ch s trong m ng các a ch (offset) c a các i t ng trong database.
ng này c g i là m ng ch m c i t ng (object index) và m i thành
ph n c a m ng này c g i là m t m c qu n i t ng (object handle), gi
a ch trong database c a i t ng. Có 2 b n c a m ng ch m c i t ng
trong PERST, m t là m ng “hi n hành” (current) và m ng còn l i g i là
ng “bóng” (shadow) c a m ng này. Header c a database gi con tr n
hai m ng này và có m t bi n ch nh (indicator) âu là m ng “hi n hành”
vào th i m hi n t i.
Khi m t i t ng b thay i l n u tiên, i t ng ó s c copy ra
t b n khác và m c qu n c a i t ng trong m ng ch m c i t ng
“hi n hành” s chuy n sang tr vào b n copy c a i t ng này còn m c
qu n i t ng trong m ng ch m c i t ng “bóng” v n tr vào i t ng
c. T t c các thay i u c làm trên b n copy và b n g c c gi
- 34 -
nguyên tr ng. PERST s ánh d u trong trang Bitmap c a m ng ch m c i
ng ch a con tr n i t ng b thay i.
Lúc giao tác (transaction) c hoàn t t và l nh commit c th c hi n,
u tiên PERST s ki m tra xem kích th c c a m ng ch m c i t ng có
ng hay không. N u có, PERST c ng s t ng kích th c cho m ng ch m c
i t ng “bóng”. K n PERST s gi i phóng các vùng nh c dùng b i
các i t ng g c, chính là các i t ng g c mà tr c ây ã dùng chúng
t o ra các b n copy. Các vùng nh này không th c gi i phóng tr c
khi giao tác commit vì nh v y có th PERST s c p phát cho các i t ng
i úng các vùng nh ó, trong khi chúng ta mu n các i t ng g c ch a
trong vùng nh này không i. u này nh h ng n tính nh t quán c a
s d li u. Vì vi c gi i phóng vùng nh trong PERST c ng c th c
hi n thông qua Bitmap nên khi gi i phóng c n ph i làm tr ng m t s bit
trong trang Bitmap t ng ng v i các vùng nh c n xóa. Mà các trang
Bitmap này c ng c copy tr c khi s thay i x y ra. Vi c copy các
trang Bitmap này c ng òi h i vùng nh , và ta có th c ng dùng các vùng
nh c a các i t ng b gi i phóng nh trên. Rõ ràng u này l i vi ph m
tính nh t quán c a c s d li u theo nh lý do v a nêu. T t c nh ng u
trên chính là lý do t i sao vi c gi i phóng vùng nh trong PERST c chia
thành hai b c. u tiên, khi i t ng c copy, t t c các trang Bitmap
ng ng v i vùng nh c a i t ng c ng c copy theo (n u tr c ó
ch a c copy). Khi giao tác commit, PERST ch vi c làm tr ng các bit
trong các trang Bitmap t ng ng và t i th i m này, không có m t yêu
u v c p phát b nh nào c phép phát sinh.
- 35 -
Sau khi gi i phóng các vùng nh thu c v các i t ng g c, PERST s
ng lo t ghi các trang b thay i lên a ng b thông tin trên b nh
chính và trên a. Sau ó PERST s chuy n i giá tr bi n ch nh
(indicator) ch ra m ng ch m c i t ng hi n t i trong database thành giá
tr ch n m ng “bóng” chuy n i vai trò gi a hai m ng. Bây gi m ng
ch m c i t ng hi n t i chuy n thành “bóng” và m ng ch m c i t ng
“bóng” s tr thành m ng hi n t i. Ti p theo m t l n n a PERST s ghi trang
ch a header b thay i c a database lên a, chuy n database sang tr ng thái
nh t quán m i. Cu i cùng PERST s copy t t c các m c qu n i t ng b
thay i t m ng ch m c i t ng “bóng” (tr c ây là hi n t i) sang m ng
ch m c i t ng hi n t i (tr c kia là m ng “bóng”). Vào th i m này,
i dung c a c hai m ng ch m c i t ng ã ng nh t và PERST có th
t u m t giao tác m i.
Bitmap c a các i t ng b thay i có tác d ng gi m th i gian commit
giao tác. Không ph i t t c m ng ch m c c copy mà ch có các trang b
thay i m i c copy, Sau khi giao tác commit, Bitmap c làm tr ng
nh ã nói trên.
Khi giao tác c b , không cho th c hi n n a b ng l nh Storage.rollback
t cách t ng minh, m ng ch m c i t ng “bóng” s c copy ng c
i vào m ng ch m c i t ng hi n t i, có ngh a là các thay i n u có
tr c ó u không có hi u l c. Sau khi copy, hai m ng ch m c l i ng
nh t và c s d li u l i tr v tr ng thái nh t quán tr c khi th c hi n giao
tác.
c p phát vùng nh cho các m c qu n i t ng c th c hi n b ng
freehandle list. Header c a list c ng c copy và c hai b n c a header này
- 36 -
cùng c l u trên header c a database. S chuy n qua l i gi a hai b n này
c th c hi n t ng t nh vi c chuy n qua l i gi a hai m ng ch m c i
ng. Khi không còn ch tr ng trong m ng ch m c i t ng, m ng s
c c p phát thêm. M ng ch m c i t ng là th duy nh t trong c s d
li u không c copy trong quá trình thay i. Thay vì th , PERST luôn luôn
d ng hai b n c a m ng này (m t b n hi n t i và m t b n “bóng”).
Có m t vài giá tr OID c dành riêng cho các i t ng c bi t trong
PERST. Giá tr OID 0 dùng cho các i t ng không h p l ví d nh các
i t ng ã b xóa. Các giá tr OID b t u t 1 c dùng cho các trang
Bitmap. S trang Bitmap l i tùy thu c vào l ng b nh o t i a c a c s
li u. Ví d v i 1tetrabyte b nh o thì kích th c trang 8Kb, kích th c
n v vùng nh c p phát (allocation quantum) 64 byte và 32K trang Bitmap
là các s li u t ng ng. Có ngh a là 32K m c qu n i t ng c dành
riêng cho các trang Bitmap trong m ng ch m c i t ng. Các trang Bitmap
c c p phát khi c n thi t khi mà kích th c database t ng lên. Theo các s
li u trên thì rõ ràng i t ng c a ng i dùng u tiên s mang giá tr OID
ng 0x8002 (t c là 32K + 2).
Quá trình ph c h i c s d li u trong PERST c ng n gi n. Khi ta m
s d li u, PERST s ki m tra xem c s d li u tr c ó có c óng
úng cách không. N u không (c dirty c b t lên trong header c a
database), PERST s th c hi n vi c ph c h i (t ng t nh c ch rollbachk
ã c p phía trên). PERST s làm nh sau:
Bi n ch nh ch ra m ng ch m c i t ng hi n t i s c PERST dùng
quy t nh xem m ng nào là m ng t ng ng v i tr ng thái nh t quán.
Khi ó, PERST s copy các m c qu n i t ng trong m ng này sang m ng
- 37 -
còn l i, các thay i th c hi n tr c ó n u có u không cón hi u l c,
PERST l i tr v v tr ng thái nh t quán.
Th t s quá trình recovery ch làm chuy n copy trên (ch nh ng m c qu n
có giá tr khác nhau trên hai m ng ch m c i t ng m i c copy gi m
trang c n ghi lên a) và kích th c c a m ng ch m c i t ng c ng nh
nên vi c ph c h i di n ra r t nhanh. u này giúp gi m th i gian “out-of-
service” c a ng d ng.
2.5 Nh ng tr ng h p nên dùng PERST:PERST là c s d li u dành cho l p trình t ng i n gi n và nhanh.
u ng d ng c a chúng ta c n có c s d li u n, không th c hi n nh ng
thao tác truy xu t d li u quá “l t léo” và cái chúng ta c n là kh n ng l u
tr , truy xu t, nh v các i t ng trong c s d li u thông qua tham chi u
hay qua khóa thì PERST r t thích h p. Trong các tr ng h p này PERST s
có hi u n ng làm vi c t t h n so v i các c s d li u quan h hay các c s
li u h ng i t ng ph c t p h n khác.
Ta s m qua l i các tính n ng n i b t c a PERST:
1.K t h p ch t ch , t nhiên v i m t s ngôn ng l p trình thông d ng
nh t nh (Hi n t i ch m i h tr Java và C#).
2.Mô hình d li u trong ng d ng và database g n nh t ng t nhau.
3.D dàng s d ng.
4.Yêu c u không cao (PERST package ch có dung l ng 51Kb và PERST
có th c c u hình l i sao cho có th dùng ít b nh chính và ph khi
làm vi c).
- 38 -
5.Hi u n ng cao (không có các chi phí cho vi c truy n thông, khóa, phân
tích cú pháp các câu SQL và th c hi n các câu truy v n).
6.Kh n ng ch u l i t t (c ch th c hi n giao tác).
7.Kh n ng ph c h i nhanh chóng khi g p s c .
8.Không c n ph i qu n lý database nhi u vì database ch bao g m m t file
duy nh t, vi c các file log c a database quá l n s không còn n a, hi u
ng làm vi c s t ng cao.
nhiên, PERST c ng có các khuy t m t ng ng:
1. Không h tr ngôn ng truy v n.
2. Không thích h p cho vi c h tr a ng i dùng truy c p database (N u
mu n chúng ta ph i t thi t k m t server riêng, server này s nh n các
yêu c u t client r i tu n t truy xu t database r i m i g i k t qu v cho
client).
3. Không h tr vi c phân tán d li u.
4. Không tuân theo m t chu n nào c (Ví d không tuân theo chu n
ODMG).
2.6 Các thông s c a PERST:Ph n này chúng ta s xem xét sâu h n v các thông s c a database và các
cách s d ng chúng t ng hi u n ng.
c truy xu t a là r t ch m so v i t c truy xu t b nh chính. Vì
y l u gi các d li u c truy xu t th ng xuyên (data caching) là chìa
khóa chính t ng hi u n ng làm vi c c a c s d li u. PERST dùng “ pool
of pages” t i u hóa vi c truy c p a. Kích th c c a page pool có th
- 39 -
c xác nh trong ph ng th c Storage.Open khi m database (giá tr m c
nh c a thông s này là 4Mb). Thông th ng t ng kích th c page pool s
ng hi u n ng làm vi c c a ch ng trình. Nh ng chúng ta ph i l u ý nh ng
m sau tr c khi quy t nh có t ng kích th c page pool hay không.
1. Có th ng d ng ch c c p m t l ng nh t nh memory nào ó khi
làm vi c thôi.
2. N u chúng ta t o ra page pool có kích th c quá l n, không l i
ch cho h u hành và các ng d ng khác làm vi c thì toàn b h th ng
b nh h ng chung, s gi m hi u n ng do h th ng ph i swap b nh
liên t c.
3. B n thân h u hành c ng có c ch cache d li u c a riêng mình
ng file buffer. V y d li u th t s c cache hai l n. Tuy nhiên vi c
truy xu t d li u t page pool s nhanh h n do không ph i có các l nh g i
hàm h th ng c ng nh chuy n ng c nh (switch context) khi g i hàm.
4. Vi c t o page pool có kích th c quá nh ho c th m chí b ng 0 (giao
vi c cache data toàn b cho h u hành) c ng không th vì s gây ra l i.
Khi d li u c truy c p t b nh ph , nó s c a lên ch a trong
page pool. Có ngh a là page pool ph i c thi t l p cho l n có th
ch a c các trang này. Vì v y, không nên t o page pool có kích th c
bé h n 64kb.
u chúng ta ngh r ng m i d li u nên h t trong b nh chính, chúng
ta có th dùng h ng s Storage.INFINITE_PAGE_POOL trong ph ng th c
Storage.Open c a database. Trong tr ng h p này, page pool s t ng
c t ng kích th c m i khi có m t trang m i c n a vào b nh chính.
- 40 -
Có ngh a là l n l t m i trang s c cache và hi n di n trong b nh
chính, chúng ch c c t b nh ph l n u tiên thôi. Trong tr ng h p
này “strong object cache” s c dùng thay vì “weak object cache”. Có
ngh a là i t ng c l y ra t c s d li u s c l u trong b nh
chính và i t ng ch c c n c c m t l n thôi. Chúng ta c ng c n
u ý r ng kích th c database trong b nh chính s l n h n trên b nh
ph vì các i t ng s t n t i trong b nh chính d i c hai d ng: D ng
“g c”(packed: trong trang ch a i t ng) và d ng “ ã có hình dáng”
(unpacked: tham chi u t b cach i t ng).
Trong m t vài ng d ng (nh các ng d ng trên các thi t b di ng), kh
ng l u tr là không c n thi t nh ng các l p bao ch a (container class) c a
PERST nh Link, Index, FieldIndex, SpatialIndex… v n có th c dùng.
Trong tr ng h p này ta s dùng cài t NullFile c a interface IFile cùng v i
thông s Storage.INFINITE_PAGE_POOL t o ra “database” trong b
nh chính. Data trong tr ng h p này s không ph i ghi vào b nh ph .
Có m t vài h ng s c nh ngh a s n trong l p StorageImpl có nh
ng n kích th c kh i u và kích th c t i a c a database. N u ta
mu n thay i các thông s này, ta s ph i biên d ch l i PERST.
Thông s Giá tr
c
nh
Mô t
dbDefaultInitTi
ndexSize
1024 Kích th c kh i u c a m ng ch m c i t ng.
ng này s c t ng kích th c khi c n thi t.
Vi c c p phát l i vùng nh cho m ng này có chi
- 41 -
phí cao nên h n ch tác v này, kích th c c a
ng ch m c i t ng luôn c c p phát d
tr g p ôi. V y vi c c p phát vùng nh cho
ng ch m c i t ng l n h n s giúp t ng hi u
ng ch ng trình m t ít nh ng bù l i s làm t ng
kích th c kh i u c a database. V i giá tr m c
nh c a thông s này, kích th c ban u c a
database m i t o là kho ng 50Kb
dbDefaultExten
sionQuantum
4Mb ây chính là kích th c c p phát vùng nh thêm
trong PERST. B nh c c p phát b ng cách
quét Bitmap. N u không có ch tr ng liên ti p
cho i t ng, database s c t ng kích th c
ng giá tr dbDefaultExtensionQuantum. T ng
giá tr c a tông s này d n n vi c PERST ít ph i
scan l i Bitmap t u, t c c a m i l n c p
phát b nh s t ng và các i t ng c c p
phát s có nhi u c h i n m liên ti p nhau h n.
Nh v y s d t ng hi u n ng ch ng trình nh ng
ng c l i ây có th là m t s s d ng b nh
không hi u qu . Và vi c gi m giá tr này s gây
tác d ng ng c l i i v i nh ng tác d ng khi
ng nó.
dbObjectCacheI
nitSize
1319 Kích th c c a vùng cache i t ng. PERST
dùng vùng này ki m tra xem li u i t ng v i
OID nào ó ã hi n di n trên b nh chính hay
- 42 -
ch a. Vùng cache này dùng “weak reference”
d n rác có th làm nhi m v . M i khi cache b
y, cache s c c p phát l i v i kích th c
kho ng g p ôi l n tr c. M t l n n a, n u ta
ng thông s này thì s làm gi m s l n ph i c p
phát l i vùng nh cache.
ng 2.6-1 H ng s c nh ngh a s n trong l p StorageImpl
i ây là các cách t ng hi u n ng và gi m l ng b nh chính ph i
d ng. N u ch ng trình c a chúng ta th c hi n nhi u thao tác update các
i t ng trên c s d li u thì gi i h n chính là th i gian ghi a. N u
chúng ta th c hi n l nh commit database m i khi có s thay i thì trung
bình ta th c hi n c 10 l n commit nh v y trong m t giây (Gi i h n này
gi thi t r ng m i thao tác truy c p a m t 10ms và m i giao tác khi commit
n ghi xu ng a kho ng 10 trang b t k trong c s d li u). Nh ng ta có
th t ng hi u n ng c a thao tác update m t cách áng k n u ta nhóm các
thao tác update l i v i nhau trong cùng m t giao tác. PERST t o i t ng
copy c a các i t ng c n update khi l n u tiên nó b thay i trong giao
tác. N u i t ng b update trong N giao tác m i giao tác m t l n thì N b n
copy s c t o nh ng n u i t ng b update N l n trong m t giao tác thì
ch m t b n copy c t o ra. ây chính là l i ích d th y nh t c a vi c th c
hi n các giao tác l n, dài.
Nh ng n u ta th c hi n vi c update cho nhi u i t ng trong cùng m t
giao tác thì rõ ràng s d n n vi c t ng kích th c database vì các b n copy
các i t ng c t o ra nhi u mà vi c gi i phóng vùng nh c ch c
th c hi n khi commit giao tác. Vì v y, cách t t nh t (m t cách t ng i) là
- 43 -
th c hi n l nh commit sau kho ng 100 n 1000 l n update, làm nh v y s
gi m c chi phí c a m i l n commit mà v n không làm t ng kích th c
database áng k .
u các i t ng c a ch ng trình c t ch c d i d ng cây hay danh
sách liên k t thì m t khi ta ã load lên b nh chính i t ng g c c a cây
hay danh sách liên k t và i t ng ó c tham chi u t m t bi n c a
ch ng trình thì b d n rác s không th nào thu d n c b t c i t ng
nào c load lên t i t ng g c (vì i t ng ó có th c tham chi u
i t ng g c b t c lúc nào). C nh v y khi ta truy xu t l n l t cho
n h t các i t ng trong cây hay danh sách liên k t ó thì toàn b các i
ng s n m trong b nh chính. u này có th d n n s tràn b nh . Vì
y ta nên c n th n, không nên m t bi n nào ó tham chi u n i t ng
c c a cây mà không qu n lý ch t. Tuy nhiên, v i các l p bao ch a c a
PERST, truy xu t các i t ng b ng khóa nh Index, SpatialIndex,
FieldIndex… thì lo l ng này là không c n thi t vì các i t ng thành ph n
a các i t ng này s b b don rác thu gom bình th ng.
ôi u ghi chú thêm:
Khi nào thì nên dùng c u trúc nào cho vi c l u tr :
1. Link: Dùng cho các t p h p nh (s i t ng trong t p h p kho ng
100 tr xu ng).
2. FieldIndex: Dùng cho các t p h p có s ph n t l n (kho ng h n 100).
Ch m c c t o trên m t tr ng c a i t ng hay nhi u tr ng (trong
tr ng h p này c g i là khóa ph c) c a i t ng. FieldIndex c cài
- 44 -
t b ng B+Tree. Kích th c trang BTree là 4kb, vì v y kích th c nh
nh t c dùng b i index là 4kb.
3. Index: C ng dùng cho các t p h p có s ph n t l n. Vi c ánh ch m c
cho Index c th c hi n ngay lúc thêm i t ng vào Index.
4. BitIndex: dùng cho t p h p các i t ng v i khóa là các tr ng có giá
tr nh phân.
5. SpatialIndex: dùng cho d li u không gian v i khóa là t a c a các
i t ng. SpatialIndex c cài t b ng cây RTree c a Guttman.
2.7 l c v RTree:
2.7.1 Gi i thi u:Hi n nay, trong các l nh v c ng d ng máy tính nh CAD (Computer
Aided Design) hay Geo-data Application, vi c x lý d li u không gian
(spatial data – g n li n v i t a , v trí c a m t i t ng) r t c n n m t
u trúc d li u hi u qu trong vi c thao tác trên d li u liên quan n t a ,
trí c a các i t ng. Tuy nhiên, các c u trúc d li u c n không thích
p cho công vi c này. Vì v y, chúng ta s tìm hi u m t lo i c u trúc d li u
i: RTree, có kh n ng áp ng các yêu c u trên.
2.7.2 l c v d li u không gian (spatial data) vàcác gi i pháp:
Các i t ng c a d li u không gian (qu n, huy n, khu v c, i núi, sông
ngòi…) th ng bao ph m t vùng trong không gian n chi u nào ó
(n=2,3…) ch th ng không th hi n b ng m t m n thu n. d hình
- 45 -
dung, các ví d c nêu s t p trung vào không gian m t ph ng 2 chi u, các
không gian nhi u chi u khác s áp d ng t ng t .
Ví d : 1 qu n s bao ph m t vùng không gian xác nh trong không gian
2 chi u.
t trong nh ng thao tác th ng xuyên nh t trong nh ng ng d ng có
liên quan n d li u không gian nh CAD, CAM, GIS là tìm xem có t t c
bao nhiêu i t ng n m trong m t vùng nào ó. Vì v y kh n ng xác nh
i t ng d a vào t a , v trí c a i t ng m t cách nhanh và chính xác là
n r t quan tr ng.
Rõ ràng, các c u trúc c n không thích h p v i vi c tìm ki m trong
không gian nhi u chi u. C th : Các c u trúc d a trên giá tr chính xác nh
HashTable không thích h p vì yêu c u th ng là tìm trong kho ng còn các
u trúc h tr tìm trong kho ng nh BTree hay ISAM index thì không thích
p cho không gian nhi u chi u.
Th c t ã có nhi u công trình nghiên c u nh m tìm ra gi i pháp cho v n
này, trong ó RTree là m t gi i pháp t t. Các gi i pháp khác nh Cell,
QuadTree, k-d Tree, K-D-B Tree, Corner stiching, Grid file, … u có
nh c m riêng.
2.8 So sánh v i các h qu n tr c s d li u h ng ing khác:
Trên th tr ng hi n có không nhi u h qu n tr c s d li u nhúng cho
Java và C# nh ng b n b n kho n không bi t ch n h qu n tr nào cho phù
p.B i không có cái gì là hoàn h o. ây xin a ra 6 h qu n tr khác
nhau ó là ObjectStore PSE Pro c a Progress Software, FastObject c a
- 46 -
Versant, Berkelay DB JE c a Sleepycat, JISP c a CoyoteGulch, db4o c a
db4oObjects, và PERST.c a Knizhnik. Sau ây là b ng so sánh các c tính
b n c a 6 h qu n tr :
OODBMS Ngôn ng
tr
p phát
vùng nh
tr
giao
tác
Scheme
Evaluation
Ngôn
ng truy
n
Ti n
lý
ObjectStore
PSE Pro
C++
Java
Khai báo
ng minh
hay ng m
nh (nh
Gabage
Collection)
Log
file
Dùng c ch
Serialization.
Truy v n
theo
thu c
tính
tìm ki m
i
ng
trong t p
p
t bu c
Db4o Java
C#
(Standard,
Compact
và nh ng
Framwork
n)
Khai báo
ng minh
Không
tr
ph c
i khi
th ng
có s
.
Có th thêm,
xoá, s a các
tr ng và c p
nh t qua l i
gi a các phiên
n. C ng có
th thay i
tên và tr ng
a các l p.
Không
có ngôn
ng truy
n
nh ng
cung c p
API cho
vi c t o
i
ng
truy v n.
Không b t
bu c
Berkeley Java Khai báo Tùy Không Không Không b t
- 47 -
DB JE ng minh ch n bu c
JISP Java Khai báo
ng minh
Không Không Không Không b t
bu c
FastObject Java
C#
J#
VB
Khai báo
ng minh
Có Có JDOQL B t bu c
PERST Java (bao
m c
JDK 1.5),
C#
(Standard,
Compact
và
Framwork
n)
Khai báo
ng minh
hay ng m
(nh
Background
Gabage
Collection)
i
ng
úp
hay i
ng
bóng
Lazy scheme
evaluation
Không
tr
ngôn
ng truy
n
Không b t
bu c, Và có
th tích h p
i ASpectJ
và JAssist
cung c p
tính trong
su t trong
p trình
(tranparent
persistent)
ng 2.8-1 So sánh các c tính c a các h qu n tr so sánh t c c a các h qu n tr c s d li u, ta cài t m t ví d
th c hi n các ch c n ng n gi n nh l u tr d li u (Storing), l y d li u
(Fetching), nh v i t ng (Locating) b ng ph ng pháp ch m c trên hai
ngôn ng là C# và Java v i các h qu n tr c s d li u t ng ng..
Ví d này c th c hi n theo ba b c c b n nh sau:
+ u tiên là t o ng u nhiên i t ng có khoá ki u long và khoá
ki u string, trong ó ch m c là ki u string. Sau ó l u vào c s d li u.
- 48 -
+ Sau ó tìm ki m các i t ng dùng khoá long và string.
+ Cu i cùng là tìm và xóa t ng i t ng và c p nh t ( ánh d u)
vào c s d li u.
n v th i gian m i b c th c thi c tính b ng giây. S l ng các i
ng trong m i tr ng h p là gi ng nhau và b ng 100000. T t c c
ki m tra th nghi m trên cùng m t máy và c u hình máy là AMD Athlon 64
(3200+), 1.5Gb RAM, windowsXP. Ngôn ng dùng l p trình ây là Csharp
và Java ( Sun Java JDK 1.4.2_04).
Sau ây là b ng k t qu , b ng s p t ng d n theo th i gian th c hi n:
qu n tr Ngôn
ng
c T o d
li u
c tìm
ki m
c xóa d
li u
PERST Java 3 775 1 683 3 275
PERST CSharp 4 446 2 403 3975
ObjectStore PSE
Pro
Java8 272 9 413 3 104
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
JISP Java 350 674 343 063 527 248
- 49 -
ng 2.8-2 B ng so sánh k t qu c a các h qu n tr c s d li u h ngi t ng(*) – JE dùng Xmxl128M tránh tràn b nh , và u này làm cho th i
gian ch sai s x p x 64 giây nên chúng ta không c n ph i quan tâm.
a vào b ng so sánh k t qu trên thì chúng ta nh n ra r ng PERST nhanh
nh t, gi thì không ph i b n kho n ch n l a gi a các h qu n tr n a. Chúng
ta hãy ch n PERST cho ra m t ng d ng t i u v t c .
- 50 -
CH NG 3 : Gi i thi u v mô hình Topology
3.1 Gi i thi u: li u Topology c xây d ng t các i t ng hình h c c b n và
chúng có quan h v i nhau. M c quan h tu thu c vào c p Topology.
t v n khó kh n khi xây d ng các ng d ng d a trên d li u Topology
là ngu n d li u Topology không có s n. Mu n có d li u Topology chúng
ta ph i chuy n t d li u hình h c c b n thành d li u Topology. Và các
ph ng pháp hay công c chuy n i còn ít c h tr . Trong n i dung
tài, chúng ta s xây d ng công c chuy n i d li u t d ng Text thành
li u Topology nh mong mu n.
3.2 Các khái ni m c b n trong Topology:Start Node: Nút b t u c a c nh.
End Node: Nút k t thúc c a c nh.
Right Edge: C nh u tiên g p khi di chuy n ng c chi u kim ng h
quanh nút k t thúc c a c nh hi n t i.
Left Edge: C nh u tiên g p khi di chuy n ng c chi u kim ng h
quanh nút b t u c a c nh hi n t i.
First Edge: C nh c ch n ng u nhiên, c xem nh là c nh u tiên
cho vi c tìm ki m các c nh k c a nút.
- 51 -
Hình 3.2-1 Các i t ng trong mô hình Topology
t s khái ni m c b n trong mô hình Topology.
Left Face: M t bên trái c a c nh khi di chuy n t nút b t u n nút k t
thúc.
Right Face: M t bên ph i c a c nh khi di chuy n t nút b t u n nút
t thúc.
Minimum Bounding Rectangle (MBR): Khung ch nh t nh nh t ch a
toàn b i t ng.
Inner Ring: Biên trong c a m t. M i i t ng vùng có th không có, có
t ho c nhi u biên trong.
Outer Ring: Biên bao ngoài c a m t. M i i t ng vùng có duy nh t m t
biên ngoài.
c tr ng: mô hình c a i t ng a lí th gi i th c. Các i t ng này
có th là i t ng vô h ng, m t chi u, hai chi u và ba chi u.
3.3 Các lo i i t ng trong Topology:Có 4 lo i i t ng hình h c c s là:
- 52 -
+ Node (nút): EntityNode (nút th c th ), Connected node (nút n i
t)
+Edge (c nh)
+Face (m t)
+ Text (v n b n): ch làm rõ i t ng ch không th c liên k t
i nhau b i m i quan h Topology
Nodes: Là các i t ng vô h ng dùng l u tr các v trí có ý ngh a.
+ Entity node: là các node không n m trên c nh, nó ch c liên
t v m t Topology v i m t ch a nó (ví d nh th ô). Nó dùng th
hi n nh ng c tr ng riêng bi t ho c các m kh o sát, hay các i t ng
th hi n m t t l nào ó.
+ Connected node: Là các node n m u mút c a c nh, nó có th là
m u hay di m cu i c a c nh. Và c liên k t v m t Topology v i các
nh khác. M i node còn có FirstEdge và có m t khung bao nh nh t (MBR
– Minimum Boundary Rectangle) ch a nó.Các node k t n i c s d ng
theo 2 h ng:
nh ngh a các c nh v m t Topology: lúc này các node c xem nh là
m u và m cu i
Th hi n các c tr ng m c tìm th y t i u và cu i c nh c a các
c tr ng tuy n tính: ch ng h n nh các cây c u, các c a c ng c a m t con
kênh, các m truy c p ti n ích trong lòng t, v i cách này thì các thu c
tính s c k t h p v i các c tr ng m c liên h v i các node k t
i. T t c các node k t n i c ch a trong b ng node k t n i. N u nhi u
nh giao nhau t i m t node, ch m t c nh s c duy trì cho m i node
- 53 -
trong b ng node k t n i; các c nh khác c liên k t b ng cách s d ng
thu t toán tìm c nh k suy ra.
Edge: là i t ng c s dùng th hi n các v trí c a các c tr ng tuy n
tính nh con ng và các biên c a m t. C nh c c u thành t 2 hay nhi u
p to 2 chi u (x,y) hay 3 chi u (x,y,z) phân bi t. H ng c a c nh có th
c xác nh b i tr t t các c p to . C nh c nh ngh a t các node
u cu i. Bên c nh các node u cu i thì c nh còn ch a các thông tin nh
RightEdge, LeftEdge, RightFace, LeftFace d dàng truy tìm thông tin và
y các c tr ng. M i c nh có m t khung bao nh nh t (MBR – Minimum
Boundary Rectangle) ch a nó.
Face: c nh ngh a t c nh dùng th hi n c tr ng vùng nh các qu c
gia, thành ph . T p các c nh có quan h Topology hình thanh nên biên c a
t. M t có th có biên trong ho c biên ngoài và có th ch a m t nh h n
trong nó. Quan h này g m m t tham chi u n m kh i u c a m t biên
khép kín c a các c nh, r i theo chi u kim ng h khép kín biên. M t có
th có nhi u biên (rings); có th có m t biên ngoài và không có ho c có m t
ho c nhi u biên trong. Các m t không c ch ng l p nhau, và các m t trong
t l p s d ng toàn b vùng m t ph ng. M i b ng m t có m t khung ch
nh t bao m t k t h p (FBR) ch a hình ch nh t nh nh t bao m i m t.
3.4 Các c p c a Topology:Có 4 c p Topology: 0, 1, 2, 3.
c p 3, các k t n i v m t Topology hi n di n m t cách t ng minh.
- 54 -
c p 0, không có thông tin Topology c th hi n m t cách t ng
minh. B ng t ng k t sau t ng k t các c tính c a 3 c p này và cho m t ví d
m i c p.
p Tên Các i t ng s Mô t Ví d
3 Quan h
Topology
y
Node k t n i,
node th c th ,
nh và m t
m t c
phân chia b i
p các m t
c ch n
và ph n chung
duy nh t. Các
nh ch g p
nhau t i các
node.
2 th
ph ng
Node th c th ,
node k t n i
và c nh
t t p các
nh và các
node ó khi
chi u vào b
t ph ng, các
nh ch g p
nhau t i các
node
1 th
không
Node th c th ,
node k t n i
p các node
th c th và các
- 55 -
ph ng và c nh c nh có th
p nhau t i
các node
0 Th hi n
hình bao
Node th c th
và c nh
p các node
th c th và các
nh. Các c nh
ch ch a các
a , không
ph i là node
t u và
node k t thúc.
ng 3.4-1 Các c p Topology trong các l p VPFCác c t trong các b ng c nh và b ng node xác nh tính k t n i và tính k
cho quan h Topology, tùy thu c vào c p Topology.
ng sau ch ra các c t b t bu c trong m i b ng c s cho c p Topology
c yêu c u. Các c tính c a các c t này c ch nh trong các nh
ngh a.
p
Topolog
yng c s Các c t b t bu c
3 M t RING_PTR3 B ng vòng (Ring table) FACE_ID, START_EDGE,
START_NODE, END_NODE,
- 56 -
RIGHT_FACE, LEFT_FACE,
RIGHT_EDGE, LEFT_EDGE
3 Node th c th CONTAINING_FACE
3-1 Node k t n i FIRST_EDGE
2-1 nh START_NODE, END_NODE
RIGHT_EDGE, LEFT_EDGE
2-0 Node th c th (Không có)
0 C nh (Không có)
ng 3.4-2 Các c t c yêu c u nh ngh a quan h Topology trongVPF
Ba hình sau s d ng bi u m i quan h th c th (ER) miêu t các i
ng c s và các m i quan h c a chúng m i c p Topology.
Hình 3.4-1 Quan h Topology c p 0
- 57 -
Hình 3.4-2 Quan h Topology c p 1 và 2
- 58 -
Hình 3.4-3 Quan h Topology c p 3
- 59 -
3.5 MBR – Minimum Bounding Rectangle:t khung bao nh nh t c yêu c u trong b ng c nh ho c b ng m t. Vì
vòng bên ngoài c a m t t ng th không có th hi n hình h c nào nên b ng
ghi FBR cho m t 1 luôn có giá tr null cho các XMIN, YMIN, XMAX,
YMAX.
Tên c t Mô t Lo it
Lo ikhóa
Op/Man
ID
XMIN
YMIN
XMAX
YMAX
Id
a X nh nh t
a Y nh nh t
To X l n nh t
a Y l n nh t
I
F/R
F/R
F/R
F/R
P
N
N
N
N
M
M
M
M
M
ng 3.5-1. nh ngh a khung ch nh t nh nh t MBR
- 60 -
CH NG 4 : Gi i thi u v GIS
4.1 Gi i thi u v các ng d ng và gi i pháp v GIS:GIS (Geography Information System ) là công ngh ra i vào nh ng
m 60 c a th k 20. Công ngh GIS cho phép áp ng các nhu c u liên
quan t i qu n lý c ng nh khai thác và s d ng các thông tin, d li u a
lý. T giai n u c s d ng trên các h th ng máy tính l n M và
Canada, n nay, công ngh GIS ã c áp d ng và tri n khai h t s c r ng
rãi trên ph m vi toàn th gi i, trên nh ng h th ng máy PC và th i gian g n
ây là trên c các thi t b PDA.
t s ng d ng GIS n i ti ng trên th gi i hi n nay ang c ng
ng r ng rãi nh MapInfo, Arc/Info, Spatial Database Engine (SDE),
ArcView GIS...: c s d ng v i m c ích qu n lý, tích h p, quy ho ch
và khai thác các d li u b n .
i Vi t Nam, công ngh GIS c ng ã c nghiên c u và có c m t
s n ph m có k t qu áng khích l . Th i gian g n ây, vi c nghiên c u
công ngh GIS ã cho ra hàng lo t ng d ng áp d ng trong th c t t i
Tp.H Chí Minh, nh StreetFinder c a DolSoft, h th ng GIS trên website
Ngân hàng b n tr c tuy n c a VDC, DMC, Dolsoft
(www.basao.com.vn), h th ng ch d n giao thông c a nhóm AMI Group -
i h c Khoa h c T nhiên Tp.H Chí Minh.
Các gi i pháp v GIS th ng c chia làm hai nhóm chính:
• Gi i quy t các bài toán ph c t p liên quan n m ng giao thông nh :
Các bài toán nh tìm ki m ng i t i u, u ph i l trình giao
- 61 -
thông… th ng c áp d ng trên các h th ng máy tính l n, có c u hình
nh.
• Hi n th và tìm ki m các thông tin b n . ây là d ng ng d ng b n
n t , cung c p các kh n ng cho phép ng i s d ng xem b n và
tìm ki m m t s thông tin c n thi t, th ng c áp d ng trên các máy tính
thông th ng và nh .
4.2 Mô hình d li u c a thông tin a lý:Câu h i t ra là làm sao chuy n i thông tin b n vào máy tính và
ng c l i? làm c u ó thì GIS ph i l u tr thông tin v Geometry
(hình d ng và v trí i t ng ) và Attribute (các thu c tính c a i t ng)
Hình 4.2-1 Thông tin c n l u tr th ng thông tin a lý là m t h th ng thu th p, l u tr và x lý các
thông tin d i d ng gi y, nh, s v các hi n t ng t nhiên trong th gi i
th c. Trong c s d li u c c u thành t thông tin, các thông tin th ng
không s d ng c tr c ti p mà ph i thông qua m t h th ng các công c
truy xu t, tái t o l i i t ng th gi i th c mà ng i dùng quan tâm. M t
i t ng c l u tr trong c s d li u d i d ng các th c th hình h c,
ng i dùng s dùng ph i tái t o l i i t ng y thông qua các d li u hình
- 62 -
c này. Nh v y d li u là r t a d ng, chúng có mang tính không gian, th i
gian, c g i là d li u a lý. Tóm l i d li u a lý là các d li u s mô t
các i t ng trong th gi i th c.
li u lý c t ch c thành hai nhóm thông tin chính, ó là:
1/ Nhóm thông tin v phân b không gian.
2/ Nhóm thông tin v thu c tính c a i t ng.
Không gi ng nh các d ng d li u thông d ng khác, d li u lý ph c
p h n, nó bao g m các thông tin v lý, các quan h Topology và các
thu c tính phi không gian. M i d li u lý có th c mô hình v i ba
thành ph n khác nhau theo quan ni m topology – m, ng, vùng.B t kì
t i t ng t nhiên nào u có th c bi u di n b ng m t trong bao
i t ng này kèm theo chúng là nh ng thông tin c thù riêng.
Mô hình d li u lý bao g m b n thành ph n sau:
+ Thành ph n khoá: là mã s duy nh t cho th c th phân bi t th c th
này v i th c th khác.
+ nh v : Ch ra v trí c a th c th .
+ Thành ph n phi không gian: Là nh ng thu c tính riêng cho t ng th c
th nh t l , kho ng, nh danh ….
+ Thành ph n không gian: Các i t ng t nhiên bên ngoài c chuy n
vào máy tính qu n lý theo hai cách sau: Raster và Vector
Mô hình vect : t ng c bi u di n du i d ng m, ng và vùng. V
trí không gian c a m t th c th c xác nh b i m t h to th ng nh t
toàn c u. M t th c th c xác nh b i c p to (X,Y) và các thu c tính
khác nh : ki u m, màu, hình d ng.
- 63 -
Hình 4.2-2 D li u Vector
Hình 4.2-3 Các th c th c th hi n trên b n Mô hình Raster: D li u Raster c phân bi t b ng n v pixel, ó là
hình nh n v nh nh t ph n ánh i t ng trong không gian.
u trúc d li u ratser 2-D c xem nh là m t ma tr n các ô l i c
tr ng cho m t ô vuông b m t t. phân gi i c a d li u raster ph thu c
vào kích th c c a nh ng ô l i này.
Hình 4.2-4 D li u raster
- 64 -
khác bi t gi a hai ki u d li u: C hai ki u d li u này u r t h u ích
nh nhau, nh ng chúng c ng có s khác bi t quan tr ng. Sau ây là b ng so
sánh gi a hai ki u d li u này.
Vector Raster
li u hi n th ít h n, nhanh h n, ch
ch y u hi n th các i t ng mà
không hi n th c tính c a i t ng
li u nhi u h n, hi n th ch m h n,
không nh ng hi n th i t ng mà
còn hi n th c c tính c a i t ng
ng 4.2-1 B ng so sánh ki u d li u Raster va Vector
Hình 4.2-5 So sánh Raster và Vector
4.3 Thu th p d li u:Có nhi u k thu t thu th p thông tin t các ngu n d li u. Nó th ng
c thu th p t vi c o c tr c ti p trên th g i i th c . Tuy nhiên, m t
l n d li u li u có th c chuy n i t b n gi y sang hình th c
u tr c a b n n t . Có ba ph ng pháp th ng c s d ng ó là
Scanning(ph ng pháp quét), Digistsing (ph ng pháp s hoá), Vectorisation
(ph ng pháp vecto hoá).
- 65 -
Ph ng pháp quét: ây là k thu t thông d ng mà l i ít t n kém, có th
c th c hi n trên các máy tính cá nhân hay c a công ty. Máy quét s l u
tr l i các hình nh c a b n gi y d i hình th c s và hi n th chúng tr
i màn hình. Vi c quét hình nh t b n gi y t ng i n gi n và nhanh
chóng, tuy nhiên ph ng pháp này l i không th cung c p thu c tính c a các
i t ng t nhiên nh ch c a m t toà nhà hay ngày thành l p cu m t
sân v n ng nào ó. D li u có c t nh ng ph ng pháp này th ng
i d ng raster cho kích th c r t l n.
Hình 4.3-1 Ph ng pháp ScanningPh ng pháp s hoá: K thu t này òi h i ph i cung c p các thi t b
chuyên ngành. B n ngu n s c trãi b m t ngang, m t con tr s xác
nh t a các m t o nên hình d ng b n , sau quá trình s hoá, thu c
tính c a các i t ng m i c thêm vào. Ph ng pháp này òi h i nhi u
th i gian và ngu n d li u có c t k thu t này d i hình th c Vect .
- 66 -
Hình 4.3-2 Ph ng pháp s hoá
Ph ng pháp Vector hoá: M t vài h th ng máy tính chuyên nghi p có th
chuy n i d li u Raster sang d ng d li u Vect . Ph ng pháp này cho t c
nhanh do tính t ng nh ng l i kém chính xác h n so v i vi c s hoá th
công.
Các k thu t trên u d a vào ngu n d li u b n gi y có s n. Trên
th c t , ng i ta còn d a vào các ngành l nh v c khác nh : vi n thám, GPS,
phân tích nh… thu th p ngu n d li u cho GIS.
4.4 Các gi i thu t nghiên c u v GIS:Công ngh GIS liên quan tr c ti p t i lý thuy t th c ng nh trí tu
nhân t o trong vi c a ra các gi i thu t gi i quy t các bài toán liên
quan. ây là nh ng l nh v c nghiên c u c u t r t nhi u v i các c i
ti n c ng nh ã a ra c nhi u gi i thu t t t ho c t i u (ch ng h n nh
các gi i thu t clipping, ki m tra m trong/ngoài a giác hay các gi i thu t
tìm ki m trên c u trúc d li u ho c tìm ki m l trình t i u...)
Các bài toán v GIS hi n nay v n ang c nghiên c u và có nh ng c i
ti n r t t t, k c trong các bài toán ph c t p.Công ngh GIS v i nh ng l i
th c a nó ã mang l i ph ng pháp qu n lý hi u qu h n, m i s v t, i
- 67 -
ng, t nh ng thông tin không gian n nh ng thông tin phi không gian t t
u c qu n lý m t cách th ng nh t trên cùng h th ng. M i truy xu t
u th hi n tr c quan h n trên b n s thay cho nh ng dòng v n b n n
thu n. Chính vì th GIS ngày m t tr nên quen thu c h n cho ng i dùng,
nó c ng d ng trong nhi u l nh vi c t n gi n n ph c t p và chi phí
òi h i u t ngày m t th p h n. Có th nói r ng GIS ngày m t t kh nh
m quan tr ng, c các n c phát tri n xem nh m t m i nh n trong l nh
công ngh thông tin.
4.5 Các c u trúc d li u không gian trong GIS:
4.5.1 Cây t phân (Quad Tree):Quad Tree c s d ng l p ch s không gian 2D. M i nút trong c a
cây chia không gian thành 4 vùng không gian con tách bi t ( c g i là NW,
NE, SW, SE) t ng ng v i các tr c t a . M i vùng không gian con này
c tách m t cách quy cho n khi có nhi u nh t m t i t ng bên
trong m i vùng.
Hình 4.5.1-1 Cây t phân
- 68 -
Quad Tree không c cân b ng và s cân b ng c a nó ph thu c vào s
phân b c a d li u và tr t t chèn d li u vào cây.
4.5.2 K-d Tree:Ph ng pháp này s d ng m t cây nh phân chia không gian k chi u.
Cây này tách không gian thành hai không gian con t ng ng v i m t trong
các t a c a m ang tách.
Hình 4.5.2-1 K-D Tree
i level(nod) là chi u dài c a ng i t nút g c n nút nod và gi s
các tr c t a c ánh s t 0 n k – 1. T i b c level(nod) m i nút
không gian c tách t ng ng v i s t a (level(nod) mod k).
Thao tác thêm và tìm ki m t ng t nh i v i cây nh phân. Chúng ta
ch ph i so sánh các nút t ng ng v i s t a (level(nod) mode k). C u
trúc này có m t b t l i là nh y c m v i tr t t mà các i t ng c thêm
vào.
- 69 -
4.5.3 R-Tree:R-Tree là s bi n c i c a B-Tree cho d li u không gian. R-Tree là cây
cân b ng và chia không gian thành các khung ch nh t có th ch ng l p(ph )
nhau. M i nút ngo i tr nút g c ch a t m n M con ( 2/2 Mm ≤≤ ). Nút g c
có t i thi u 2 con ngo i tr nút lá.
Hình 4.5.3-1 R-Tree
Nút c th hi n b i m t khung bao nh nh t - MBR(minimum
bounding rectangle) ch a t t c các i t ng c a cây con c a nó. M i con
a nút c tách quy. Các con tr tr n các i t ng d li u c l u
các nút lá.
Vì các MBR có th ch ng l p nên có th c n ph i tìm ki m trên nhi u
nhánh c a cây. Do ó, các khung ch nh t càng tách bi t càng t t. V n
này ph i c gi i quy t thao tác INSERT (chèn) có s d ng m t s
- 70 -
heuristic. Thao tác này tìm m t nút lá sao cho khi chèn i t ng m i vào nó
gây nh ng thay i nh nh có th .
Thao tác tách c ng quan tr ng. M c tiêu là làm gi m xác su t s ph i tìm
hai nút m i. Vi c ki m tra t t c các kh n ng có ph c t p s m , vì
th nh ng thu t toán cho l i gi i x p x th ng c s d ng.
R-Tree là m t trong nh ng c u trúc d li u không gian c c p n
nhi u nh t và nó r t th ng c s d ng so sánh v i nh ng c u trúc m i.
Trong các ng d ng GIS, R-Tree óng vai trò quan tr ng trong vi c ch n
a i t ng hi n th c ng nh kích ho t nhanh các i t ng h a.
4.5.4 R*-Tree:R*-Tree là m t bi n c i c a R-Tree s d ng heuristic khác cho thao tác
INSERT. R-Tree c g ng t i thi u vùng c a t t c các nút c a cây. R*-Tree
t h p nhi u tiêu chu n: vùng b ph b i khung ch nh t bao, biên c a
khung ch nh t và s ch ng l p gi a các khung ch nh t.
c tiêu làm gi m vùng b ph b i khung ch nh t bao là làm gi m
không gian ch t, có ngh a là không gian b ph b i khung ch nh t bao ch
không ph i b i các khung ch nh t b ch a. u ó làm gi m s nhánh tìm
ki m vô ích. T i thi u hóa biên (t ng chi u dài các c nh) c a khung ch nh t
bao t t h n là dùng nh ng khung vuông. T i thi u hóa s ch ng l p gi a các
khung ch nh t làm gi m s ng ph i tìm ki m.
Cài t ph ng pháp này thì khó h n, nh ng R*-Tree hi u qu h n R-
Tree nhi u.
- 71 -
4.5.5 R+-Tree:R+-Tree là s m r ng c a R-Tree. Khác v i R-Tree, các khung bao c a
các nút t i m t m c không ch ng l p trong c u trúc này. c tính này làm
gi m s l ng nhánh ph i tìm ki m c a cây và làm gi m phí t n th i gian.
Hình 4.5.5-1 R+-Tree
R+-Tree c phép tách các i t ng d li u cho nh ng ph n khác
nhau c a m t i t ng có th c l u nhi u nút c a m t m c. N u m t
khung ch nh t ch ng l p m t khung ch nh t khác, nó s b phân rã thành
t nhóm các khung ch nh t không ch ng l p nhau. u này làm gia t ng
không gian l u tr nh ng cho phép lo i b s ch ng l p gi a các nút và do
ó làm gi m phí t n th i gian tìm ki m.
- 72 -
4.6 ng d ng b n :
4.6.1 Các ki u b n :
Hình 4.6.1-1 Các ki u b n
Toppographic là b n ch bao g m các c tính v t lý ví d nh ng,
sông, nhà.
Contour ( ng vi n): là b n bao g m các ng n i các v trí m có
cùng giá tr ví d nh : sâu c a bi n, ng ng áp.
Choropleth: là b n a chí.
4.6.2 Các i t ng c a b n :Công ngh GIS c ng cho phép l u tr thông tin b n trong máy tính
theo cách máy tính hoá, ngh a là l u tr d i d ng t p tin v i các c u trúc
khác nhau. Và t ó b n có th c l u tr , thêm, xoá, s a m t cách d
dàng. Nhìn vào vào m t b n ta c ng nh n th y c các i t ng chính
a b n , nó bao g m: Line( ng), Area (vùng), Point ( m), và Text
(v n b n).
- 73 -
Hình 4.6.2-1 Các i t ng chính trong b n
4.7 ng d ng GIS trên PocketPC: phát tri n m nh m c a Internet, c ng nh kh n ng c a công ngh
ph n c ng, ã d n n s ra i c a các thi t b ng d ng Internet. Theo các
nhà nghiên c u th tr ng, m c dù PC v n gi vai trò ch y u trong vi c x
lý và h tr công vi c, nh ng các thi t b Internet hay thi t b h tr cá nhân
ngày càng kh ng nh c vai trò c a nó trên th tr ng.
Ra i vào nh ng n m 90 c a th k 20, Pocket PC là m t d ng thi t b
m tay PDA (Personal Digital Assistant) s d ng h u hành Pocket PC,
t bi n th c a Windows CE, m t h u hành nhúng c Microsoft
phát tri n cho các thi t b không là PC (non-PC).
Do c tr ng nh g n, c thi t k v i m c ích giúp ng i s d ng
u tr các thông tin cá nhân, công vi c c n thi t c ng nh các ph n m m t i
thi u trên m t thi t b nh g n, và s d ng m t h u hành h hàng
Windows, Pocket PC ã c khá nhi u nhà s n xu t ph n m m quan tâm
trong l nh v c phát tri n ng d ng, trong ó có các ng d ng GIS.
Tuy nhiên, Pocket PC ch y trên n n h u hành nhúng Windows CE,
u hành ch cung c p b nh m t cách gi i h n cho các ng d ng phát
- 74 -
tri n trên nó. Vì v y, các ng d ng liên quan t i h th ng GIS phát tri n trên
Pocket PC và h u hành Windows CE g p ph i các v n v t i u hoá
nh c ng nh t c và th ng có t c ch m h n nhi u so v i các
ng d ng trên PC thông th ng. Ngoài ra, do kh n ng l u tr có gi i h n,
vi c ng d ng GIS trên môi tr ng này c ng g p không ít khó kh n.
Trên th tr ng, m t s s n ph m GIS trên Pocket PC ã c ph bi n
ng rãi nh Pocket Street c a Microsoft, MapInPocket c a Information
Technologies India Ltd...
- 75 -
CH NG 5 : Gi i thi u v chu n OpenGIS
5.1 Các ki u d li u hình h c c a OpenGIS:Các c u trúc ch m c không gian, ví d R-Tree, c s d ng trong các h
qu n tr c s d li u không gian (SDBMS) t ng t c quá trình x lý các
truy v n ch ng h n nh các truy v n vùng ho c các truy v n các i t ng
lân c n g n nh t. Do ó, ph n cài t các thao tác tìm ki m lân c n th ng s
ng R-Tree. Tuy nhiên, n u các i t ng không gian khá ph c t p, vi c
y các lân c n c a vài i t ng theo cách này v n tiêu t n r t nhi u th i
gian vì s ph c t p c a ánh giá các quan h lân c n trên các i t ng ó.
Thêm vào ó, khi t o ra t t c các ng lân c n v i m t i t ng ngu n
c cho, m t s l ng r t l n các thao tác tìm ki m lân c n ph i c th c
hi n. Nhi u h th ng qu n tr c s d li u không gian là khá t nh vì không
có nhi u c p nh t trên các i t ng ch ng h n nh các b n a lý. Cho
nên các ki u d li u hình h c cùng v i nhi u thao tác trên các i t ng
c các h qu n tr c s d li u sau này h tr .
- 76 -
Hình 5.1-1 H phân c p các ki u d li u hình h c c a OpenGIS.
5.2 OpenGIS Specification ( c t OpenGIS):
5.2.1 Các khái ni m:c t OpenGIS (OpenGIS Specification), m t c t toàn di n c a m t
khung ph n m m cho các truy c p phân tán n geodata và nh ng tài
nguyên geoprocessing. c t này cung c p cho các nhà phát tri n ph n m m
trên th gi i m t khuôn m u giao di n chung c n k vi t các ph n m m
ho t ng chung v i các ph m m m d ng OpenGIS khác.B khung
OpenGIS (OpenGIS framework) g m:
- M t cách th c chung d ng s th hi n Trái t và các hi n t ng c a nó
trên c s toán h c và khái ni m.
- M t mô hình chung th c hi n nh ng truy nh p, qu n lý, thao tác,
trình bày, và chia s geodata gi a nh ng c ng ng thông tin.
- 77 -
- M t b khung s d ng mô hình Open Geodata và mô hình dich v
Open GIS gi i quy t v n kh n ng không ho t ông k t h p không ch
m t k thu t mà c v m t t ch c.
Các nhà phát tri n xây d ng nh ng h th ng có giao di n thích ng
OpenGIS Specification s t o ra nh ng ph n m m trung (middleware), ph n
m b ph n (componentware) và nh ng ng d ng có th ki m soát m t
ph m vi r ng các ki u geodata và các hàm geoprocessing. Ng i s d ng
các h th ng này có th chia s m t không gian d li u ti m n ng r ng l n
qua m ng, dù d li u c s n sinh vào các th i m khác nhau b i các
nhóm không liên quan s d ng các h th ng s n xu t khác nhau cho nh ng
c ích khác nhau và th t s có th ang hi n h u d i s u khi n chính
a h th ng c s d ng cho vi c s n xu t c a h . Geodata k th a
(Legacy geodata) c t ch c trong các h th ng có giao di n thích ng
OpenGIS Specification s có th c truy xu t b i các ph n m m có giao
di n thích ng OpenGIS Specification khác. OpenGIS Specification cung
p m t b khung cho nh ng ng i phát tri n ph n m m t o ra ph n m m
cho phép nh ng ng i dùng c a h truy nh p và x lý d li u a lý t
nh ng ngu n a d ng qua m t giao di n tính toán chung bên trong m t n n
ng công ngh thông tin m .
u m:
i v i ng i phát tri n ng d ng có th d dàng và linh ho t h n : Vi t
ph n m m truy c p geodata.Vi t ph n m m truy c p nh ng tài nguyên
geoprocessing.S a i nh ng ng d ng theo nhu c u ng i dùng c th , tích
p phi không gian và không gian. Và có th ch n m t môi tr ng phát tri n
- 78 -
hay cung c p nh ng ng d ng trên nh ng n n t ng a d ng và c ng có th s
ng l i mã geoprocessing
i v i nhà qu n lý thông tin linh ho t h n trong vi c Truy c p và / ho c
phân ph i geodata, cung c p nh ng kh n ng geoprocessing t i nh ng khách
hàng, tích h p D li u a lý và s x lý vào m t ki n trúc tính toán liên h p
và có th ch n nh ng n n thích h p - ki u máy tính cá nhân, ki u máy ch ,
và ki u n n tính toán phân tán ( CORBA, OLE / COM, DCE, ….) cho nên
t phù h p v i ng i dùng v i nh ng công c geoprocessing úng (và c
nh c úng)
i v i nh ng ng i dùng cu i là nh ng ng i h ng l i t i u, nh n
c: S truy nh p th i gian th c t i m t h th ng v tr thông tin a lý l n
ng h n so v i h th ng v tr thông tin a lý có th truy c p ngày nay,
nhi u ng d ng h n ( v i nh ng middleware và tài li u h n h p) khai thác
thông tin a lý, nh ng kh n ng làm vi c v i nh ng ki u geodata và nh
ng khác nhau bên trong m t môi tr ng ng d ng n và dòng công vi c (
workflow ) liên t c, mà không quan tâm n chi ti t c a nh ng ki u và
nh ng nh d ng này.
5.2.2 Nh ng d ch v OpenGIS (OpenGIS Services ):p h p nh ng d ch v c c n :
- Truy nh p và x lý nh ng ki u nh ngh a h a a lý trong Mô hình
Geodata M .
- Cung c p nh ng kh n ng chia s geodata bên trong nh ng c ng ng
ng i dùng mà s d ng m t t p h p chung nh ng nh ngh a c tính a lý
- 79 -
và biên d ch gi a nh ng c ng ng khác nhau nh ng ng i s d ng nh ng
p h p nh ngh a c tính a lý khác nhau.
5.2.3 t mô hình nh ng c ng ng thông tin(Information Communities Model ):
- M t cách th c cho m t c ng ng nh ng nhà s n xu t geodata và nh ng
ng i dùng ã chia s m t t p h p chung nh ng nh ngh a c tính a lý
nh m b o trì th c s có hi u qu nh nh ngh a này và l p danh m c, chia
nh ng t p d li u thích ng nh ng nh ngh a ó.
- M t cách chính xác t i u và hi u qu cho nh ng c ng ng khác nhau
nh ng ng i dùng và nh ng nhà s n xu t geodata chia s geodata m c
nh ng t p h p nh ngh a c tính a lý khác nhau c a h . Cho ví d , nh ng
s , nh ng nhà a ch t, nhà nông h c có th tìm ki m chia s d li u
t dù h mô t c m các ki u t khác nhau theo nh ng m c tiêu ngh
nghi p khác nhau. Nh ng mô hình c ng ng thông tin nh ngh a m t s
nh m t ng biên d ch gi a nh ng t n c tính a lý khác nhau.
5.2.4 c m:OpenGIS Specification có nh ng c m chính nh sau:
Interoperable - OpenGIS Specification cung c p nh ng giao di n chu n
i v i geodata và nh ng d ch v geoprocessing. Nh ng giao di n này h tr
trong nh ng h th ng c l p và các m ng): s truy c p geodata, nh ng thao
tác geoprocessing khách/ch phân tán, thao tác geoprocessing ngang hàng
phân tán.
- 80 -
Supportive of Information Communities - OpenGIS Specification t i u
hóa vi c chia s d li u bên trong m t c ng ng nh ng ng i dùng và
nh ng nhà s n xu t chia s m t t n c tính a lý chung và gi a nh ng
p h p nh ng ng i dùng và nh ng nhà s n xu t mà nh ng t n c tính
a lý c a h không trùng.
Ubiquitous - OpenGIS Specification cung c p nh ng ph ng ti n cho t t
các ng d ng công ngh thông tin s n sàng khai thác nh ng d ch v
OpenGIS qua nh ng giao di n và nh ng giao th c chu n.
Reliable - Geoprocessing phân tán yêu c u m t m c cao kh n ng u
khi n và s toàn v n. OpenGIS Specification cung c p m t khung công ngh
tr OpenGIS g n nhãn nh ng s a n cho nh ng ng i mua
ph n m m trên n n OpenGIS nh ng s b o m nh t nh c a tính ho t ng
liên h p (interoperability).
Easy to use - Ph n m m trên n n OpenGIS Specification s s d ng
nh ng quy t c và nh ng th t c ch c ch n và logic cho vi c s d ng geodata
và các d ch v geoprocessing. Geodata không c n thi t và s ph c t p
geoprocessing c d u b i ng i phát tri n ng d ng.
Portable - OpenGIS Specification là s c l p c a môi tr ng ph n
m, n n t ng ph n c ng và m ng.
Cooperative - OpenGIS Specification h tr tính toán dùng chung và
nh ng tài nguyên d li u dùng chung. Công ngh OpenGIS có th d dàng
c k t h p v i công ngh thông tin khác.
Scalable - Ph n m m trên n n OpenGIS Specification th ng g m có
nh ng thành ph n ph n m m geoprocessing "c m và ch y" mà có th c
- 81 -
u hình cho b t kì ng d ng geoprocessing nào ho c môi tr ng tính toán
chu n, b t ch p kích th c c s d li u.
Extensible - OpenGIS Specification có th ng hóa nh ng ph n m m
geoprocessing và ki u geodata m i, và có th u ti t nh ng công ngh m i
mà OpenGIS Specification ph thu c trên ó, nh nh ng n n tính toán phân
tán, khi chúng tr thành s n có.
Compatible - OpenGIS Specification gi gìn s u t c a nh ng ng i
dùng trong d li u và ph n m m th a k b i vi c cung c p nh ng ph ng
ti n hoà nh p li n kh i, trong m t ki u cách trong su t i v i ng i
dùng, ph n m m geoprocessing và geodata hi n có cùng công ngh thông tin
liên quan v i nh ng ng d ng geoprocessing thích ng OpenGIS. ng th i,
OpenGIS Specification t ng thích và không g i lên nhau v i vi c h tr
công ngh thông tin, nh ng h th ng qu n lý c s d li u và h tính toán
phân tán c bi t.
Implementable - M c ích quan tr ng nh t là nh ng công ngh ó c
ch rõ trong OpenGIS Specification ph i có th cài t c.
5.2.5 Phân lo i:OpenGIS Specification s c phát tri n và phát hành thành nhi u ph n
trong vài n m. Nó bao g m c t tr u t ng ( Abstract Specification ) và
t chu i nh ng c t cài t ( Implementation Specification ) th c
hi n trên nh ng h tính toán phân tán ( distributed computing platforms
(DCPs)) ang c nh tranh hi n th i g m có Common Object Request Broker
(CORBA c a Object Management Group(OMG), Object Linking and
Embedding/Common Object Model (OLE/COM) c a Microsoft; Distributed
- 82 -
Computing Environment (DCE) c a Open Software Foundation (OSF); Java
a SunSoft và nh ng nhóm khác.
OpenGIS Abstract Specification: ph n c a OpenGIS Specification
c t o ra b i y ban k thu t OGC cung c p s mô t m c cao tính
ng ho t ng c cung c p bên trong OpenGIS Implementation
Specification. M c ích c a Abstract Specification là t o ra và l p tài li u
t mô hình khái ni m cho phép t o ra Implementation Specification.
OpenGIS Implementation Specification: Nh ng Implementation
Specification là nh ng c t n n t ng công ngh rõ ràng cho s cài t
nh ng giao di n l p trình ng d ng ph n m m chu n công nghi p. ó là
nh ng c t ph n m m chi ti t cài t các b ph n c a OpenGIS Abstract
Specification trên nh ng h tính toán phân tán c bi t nh OLE / COM và
CORBA. y ban K thu t OGC phát hành Nh ng yêu c u cho nh ng
ngh ( RFPs), và áp l i nh ng u ó, nh ng thành viên h p thành i
trình bày OpenGIS Implementation Specification cho y ban k thu t và y
ban qu n lý OGC xem l i. Ngoài vi c cho phép Tính v n hành v i nhau
(Interoperability) v i m i DCP, nh ng nhóm này c g ng cung c p tính n ng
Interoperability c c i gi a các DCPs.
5.3 OpenGIS Abstract Specification:m hai mô hình Essential Model và Abstract Specification.
Trong hai mô hình trên thì mô hình Essential Model n gi n h n, còn mô
hình Abstract Model tr u t ng h n. Và c hai mô hình u b t ngu n t
ph ng pháp phân tích thi t k i t ng Syntropy.
- 83 -
5.3.1 Essential Model (mô hình b n ch t ):c ích:
+ Là thi t l p s k t n i khái ni m c a vi c thi t k h th ng ho c
ph n m m t i th gi i th c.
+ Là s mô t th gi i th c ho t ng ra sao và gi i thích nh ng
thu t ng th gi i th c nh các i t ng, giao di n, hành vi, gi i h n,..Các
c , phân tích tr ng h p s d ng (Use-Case analysis), các mô hình t
ng hay h a có c u trúc c s d ng giúp cho vi c hi u rõ nh ng
thông p.
+ Nh m th u hi u s trình bày, khám phá, truy c p, và x lý thông
tin a lý nhi u c p .
Tính hoàn h o: Là chìa khóa phát tri n nh ng OpenGIS
Implementation Specification m nh m . Nó áp d ng s nghiêm ng t có tính
phân tích i v i tình tr ng c b n b ng vi c geoprocessing, mô t chín c p
tr u t ng hóa:
ó. Real World (Th gi i th c). Là th gi i th c s v i t t c s ph c t p
và h n lo n c a nó.
ó. Conceptual World (Th gi i khái ni m). Là th gi i các th chúng ta
bi t và t tên.
ó. Geospatial World (Th gi i không gian a lý). Là th gi i c a nh ng
n và h th ng thông tin a lý, trong ó chúng ta l a ch n các th c th
trong th gi i khái ni m bi u di n theo m t cách có tính ch t t ng tr ng
và tr u t ng trong nh ng b n và geodata.
- 84 -
ó. Dimensional World (Th gi i có kích th c). Là th gi i Geospatial
sau khi nó ã c o c có s chính xác v v trí và hình h c.
ó. Project World (Th gi i án). Là m t m nh c ch n c a th gi i
geospatial h u h ng – cho ví d , nh ng l p thu c ch nh t nh bên
trong m t GIS – mà c l p c u trúc ng ngh a và nói cách khác cho m t
c ích, ngh nghi p, qui nh, ho c mi n công nghi p c thù.
ó. OpenGIS Points ( m OpenGIS). Làm sao nh ng m c nh
ngh a, t ng quát và cho m t Project World c bi t, theo m t cách mà t t c
các h th ng ph n m m có th liên quan n.
ó. OpenGIS Geometry (Hình h c OpenGIS). Làm sao hình h c c xây
ng d a vào OpenGIS Points, theo m t cách mà t t c các h th ng ph n
m có th liên quan n.
ó. OpenGIS Feature (Tính n ng OpenGIS). Làm sao nh ng tính n ng
OpenGIS c xây d ng t hình h c, t các thu c tính, và m t h th ng
tham chi u không gian, theo m t cách mà cho m n chính nó s d ng
bên trong nh ng giao di n m cho geoprocessing, và theo m t cách mà h
tr – qua m t t p h p nh ng d ch v OpenGIS – m t s hàm t i h n nh
nh ng danh m c geodata.
ó. OpenGIS Feature Collections (Nh ng t p h p tính n ng OpenGIS).
Làm sao nh ng tính n ng OpenGIS c qu n lý trong nh ng t p h p tính
ng OpenGIS.
- 85 -
Hình 5.3.1-1 L p khái ni mTrong 9 c p trên, c p Project world là quan tr ng nh t cho m c ích
a OpenGIS Abstract Specification. Mô t c a Project World là c bi t
quan tr ng vì nó gi i thi u khái ni m c a Geospatial Information
Community mà s chia s nh ng thông tin không gian a lý di n ra trong ó
m t m c t nhiên, không khó kh n gì v m t ng ngh a.
5.3.2 Abstract Model:c ính:
+ Là Mô hình tr u t ng.
+ nh ngh a h th ng ph n m m cu i cùng theo m t l i cài t
trung l p.là s mô t ph n m m c n ph i làm vi c ra sao.
+ i di n m t th a hi p gi a các mô hình c a nh ng môi tr ng
cài t d nh nh m t i. Các mô hình t ng hay h a có c u trúc c ng
c khuy n khích s d ng cho vi c gi i thích các s khái ni m.
- 86 -
+ Xác nh các l p, l p con c quan tâm, nh danh và mô t m i
quan h gi a chúng, và mô t tr u t ng các giao di n c cài t trong
ph n m m.
Mô hình tr u t ng c chia thành 14 ch (Topic) sau:
- Topic 1(Feature Geometry): Cung c p nh ng c u trúc hình h c cho các
c tính d ng hình h c.
- Topic 2 (Spatial Reference Systems): Cung c p nh ng h th ng tham
chi u không gian mà nh ó các c tính liên h v i các v trí trên Trái t
theo quy t c o c.
- Topic 3 (Locational Geometry): Thêm nh ng công c cho vi c tham
chi u không gian a lý n nh ng t a nh, t a quét, và nh ng h
th ng tham chi u gián ti p mà không c tìm th y trong các v n b n o
c.
- Topic 4 (Stored Functions and Interpolation ): c n thi t h tr cho
Topic 6. H u h t nh ng vùng ph ph thu c vào 2 hàm ch a. Nh ng hàm
ánh x theo th t “t ” và “ n” m t không gian t a toán h c thì c g i
là Ph m vi vùng ph .
- Topic 5 (Features and Feature Collections): K t h p v i các Topic 6, 7
quan tâm c b n v vi c x lý và trình di n thông tin không gian a lý.
- Topic 6 (The Coverage Type): cùng v i các Topic 5, 7 quan tâm c b n
vi c x lý và trình di n thông tin không gian a lý.
- Topic 7 (Earth Imagery): Cung c p m t c u trúc u ti t t t c các lo i
và cách s d ng nh ng hình nh s c a Trái t.
- 87 -
- Topic 8 (Relations Between Features): Cung c p vi c l p mô hình và
trình di n nh ng quan h gi a các c tính.
- Topic 9 (Quality): cùng các Topic 5, 14 có n i dung lý thuy t thông tin
cao mà không liên k t m nh m v i nh ng v n không gian a lý.
- Topic 10 (Transfer Technology): Công ngh truy n t i x lý nh ng bi u
di n t c th i c nh ng hành vi truy v n và kích th c có th ch p nh n c
- Topic 11 (Metadata): Cung c p nh ng mô hình và các truy v n metadata.
- Topic 12 (OpenGIS Service Architecture): nh ngh a m t mô hình
chung cho vi c cài t nh ng d ch v truy c p, qu n lý, thao tác, bi u
di n, và chia s geodata gi a nh ng c ng ng thông tin.
- Topic 13 (Catalogs): Cung c p nh ng d ch v không gian a lý, trong
khi nh ng ph n còn l i c t p trung trên không gian a lý chia s .
- Topic 14 (Semantics and Information Communities): cùng các Topic 5, 9
có n i dung lý thuy t thông tin cao mà không liên k t m nh m v i nh ng
n không gian a lý.
Quan h gi a ch :
- 88 -
Hình 5.3.2-1 Quan h gi a các ch trong mô hình tr u t ng
Các ch (topic) c t ch c thành các gói s d ng ngôn ng UML.
i gói là t p h p các ki u và các giao di n liên quan t o thành các thành
ph n nh t quán cho vi c thi t k h th ng ph n m m.
- 89 -
CH NG 6 : ng quan v PocketPC
6.1 ng quan v PocketPC:Pocket PC có t c ch m, kh n ng l u tr kém, ngu n cung c p n ng
ng không t t…Microsoft ã thêm các tính n ng m i cho các thi t b
Pocket PC (Pocket PC – device, nh ng thi t b PDA s d ng h u hành
Pocket PC) v i h u hành Pocket PC ch a phiên b n thu g n c a m t s
ph n m m nh Internet Explorer, Word, Excel, Outlook, Microsoft Reader,
Windows Media Player… PocketPC s d ng các chu n c m công nghi p, có
tính t ng thích và m r ng cao nh có th k t n i v i máy tính bàn,
n thêm storage card, modem k t n i Internet...
6.2 Kh n ng l p trình trên PocketPC:Do WindowsCE c xây d ng và thi t k t ki n trúc n n sao cho nó có
th m c nh nh t có th . Cho nên các hàm dùng l p t r ình c
ch n l c l i s d ng ho c không h tr các hàm này n a. Và WinCE
cung c p các th vi n h th ng. nh ng không còn cung c p nhi u th vi n
khác nhau nh GDI, Kernel và User n a.
6.3 t s v n khi l p trình ng d ng trên PocketPC:
6.3.1 c và các h tr kh n ng hi n th :i v i các ng d ng b n , m t trong nh ng v n quan tr ng nh t
n ph i quan tâm, ó là d li u và h tr hi n th c a môi tr ng.
Khi xây d ng ng d ng b n trên Pocket PC, c n chú ý t i vi c ch
c s d ng các tính n ng GDI c h tr trên môi tr ng này. Do c n
- 90 -
ph i thu g n ki n trúc c ng nh các h tr nh m m c ích t i u t c
cho các thi t b nhúng có tài nguyên gi i h n, Windows CE ã ch cung
p m t cách gi i h n các tính n ng c a GDI. u này s gây khó kh n
trong quá trình xây d ng ch ng trình.
6.3.2 Kh n ng và hình th c l u tr :Các Pocket PC thông th ng có ROM ít nh t là 8MB, RAM ít nh t là
8MB. Các Pocket PC chuyên d ng có ROM ít nh t là 12MB, RAM ít nh t
là 16MB. Tuy nhiên, yêu c u v dung l ng c a RAM và ROM tùy thu c
vào lo i CPU s d ng, nh ng thành ph n mà nhà s n xu t h tr trên
Pocket PC và tu thu c vào lo i Pocket PC.
Do h n ch v ngu n n ng l ng pin và kích th c c a thi t b , Pocket
PC không s d ng các thi t b l u tr nh a c ng hay a m m mà nó s
ng m t c ch g i là B l u tr i t ng (Object store). Object store là
t vùng RAM c ng i dùng nh ngh a, dùng l u tr các t p tin,
các thông tin registry và các database (g i là Object Store d ng Storage).
Vùng RAM còn l i dùng làm b nh cho các ch ng trình c th c thi
(g i là Object Store d ng Program). Object store v n l u gi c thông tin
a các ng d ng và d li u ngay c khi n ng l ng cung c p chính b
t nh ngu n pin d tr . Có th xem object store nh là a c ng trên
thi t b dùng Windows CE vì các end-user không bi t v object store do
Microsoft ã cung c p trình WinCE Explorer c n i dung c a nó (t ng
nh Microsoft Windows Expoler c n i dung c a a c ng trên máy
desktop PC)
- 91 -
m khác bi t ch y u u tiên mà ta c n l u ý là object store trên
Windows CE là vi c thi u các kí t a. Windows CE s d ng các th
c d i th m c g c cho vi c cài t các thi t b c a ng i dùng. Ví d ,
u ng i dùng g n m t flash card vào máy, Windows CE s t o ra m t
th m c /Storage Card 1. C m i flash card c g n vào, con s này s t ng
lên (/Storage Card 2,…)
ng d n t i t p tin c gi i h n b i MAX_PATH (có th dài t i a
260 kí t , gi ng nh trên Windows) Tuy nhiên, trên Windows CE không có
khái ni m th m c hi n hành, ta ph i truy xu t các t p tin b ng các ng
n d y c a nó.
Có th xem Database trên Windows CE nh m t d ng t p tin c bi t.
i database là m t t p các record ch a m t hay nhi u thu c tính thông tin
và giá tr c a nó. Database có th n m trên các thi t b ngoài nh flash card.
Khi s d ng có th mount database s d ng trên thi t b , Database trên
windows CE h tr các thao tác: T o database, m database, s p x p trên
database, c d li u t database, ghi xu ng database, tìm ki m trên
database. S d ng t p tin hay database là m t v n c n c xem xét khi t
ch c l u tr d li u GIS trên Pocket PC.
6.3.3 ng tác gi a ng i s d ng và thi t b :Ng i s d ng t ng tác v i thi t b thông qua m t màn hình touch-
screen LCD (màn hình c m nh n). Không s d ng bàn phím (keyboard) và
chu t (mouse) thông th ng, Pocket PC h tr nh p li u thông qua m t bàn
phím logic, g i là SIP (Soft Input Panel). Bàn phím logic này th c ch t là m t
khung c a s luôn t n t i trên màn hình, mô t và s p x p các phím t ng t
- 92 -
trên máy PC thông th ng. Ng i dùng s giao ti p v i SIP thông qua ngón tay
ho c stylus (m t cây vi t v t lý, cho phép nh p li u b ng cách vi t tr c ti p lên
màn hình)
Thay th cho vi c nh n Enter hay nh n úp chu t, Pocket PC s d ng c
ch single-tapping (nh n n) lên touch screen. Ng i dùng ch c n nh n
t l n lên m t i t ng ho c liên k t, h u hành s m i t ng/liên
t t ng ng.
Ngoài ra, giao ti p v i ng d ng, ng i dùng có th nh n-và-gi (tap-
and- hold). ây là c ch có tác d ng t ng t nh vi c s d ng context-
menu b ng cách nh n ph i chu t trên PC. Khi ng i dùng nh n-và-gi trên
t i t ng, có th m t menu ho c m t tooltip s hi n ra, tu theo i
ng ó x lý nh th nào.
Trong ng d ng b n , ta nh n th y vi c nghiên c u và x lý các
cách t ng tác trên là r t c n thi t, b i trong d ng ng d ng này, vi c di
chuy n, phóng to, thu nh , tra c u b n là nh ng hành ng r t th ng
xuyên x y ra. Bên c nh ó, ph i nh ngh a l i trong ng d ng các
hardware keys (phím v t lý) nh m t n d ng các phím di chuy n s n có c a
thi t b Pocket PC nh m t ng t c t ng tác cho ng i dùng khi xem b n
.
6.4 Các gi i pháp cho ng d ng b n trên PocketPC:
6.4.1 Yêu c u chung:Các ng d ng liên quan t i h th ng thông tin a lý (Geography
Information System – GIS) phát tri n trên Pocket PC và h u hành
Windows CE g p ph i các v n v t i u hoá b nh c ng nh t c
- 93 -
ng d ng do nh ng v n ã trình bày ph n trên. Khi a ra các gi i
pháp cho ng d ng b n trên Pocket PC, c n ph i:
+B o m vi c t ch c l u tr thông tin và d li u t i u trên Object Store
ng Program.
+B o m l u tr ít nh t thông tin có th trên Object Store d ng Storage.
+B o m c t c khi x lý tính toán hi n th và tìm ki m, tra c u
thông tin.
6.4.2 n t i u t c hi n th : hi n th b n cho ng i dùng quan sát, b t c m t ch ng trình b n
nào c ng ph i v lên màn hình. Và ph n hi n th lên màn hình s là ph n
mà ng i dùng ang mu n xem xét có thông tin. Ng i dùng c ng có
th thay i vùng nhìn c a b n và s thay i vùng nhìn c a ng i dùng
này s kéo theo các thao tác v l i b n . Khi ó nào ta v l i toàn b các
i t ng thì t c s ch m nên ta ch v l i ph n vùng nào có thay i.
Và khi ng i dùng ch n m t i t ng nào ó, n u nh chúng ta duy t h t
xem i t ng nào tho mãn yêu c u ch n thì không t i u; gi i quy t
n ó ta làm nh sau: V i m i i t ng ta s có MBR (Minimun
Boundery Rectangle)- vùng bao nh nh t- c a m i i t ng, Khi mà ng i
dùng ch n i t ng thì ta xác nh c vùng nào, và ta ch c n duy t trong
vùng ó i t ng nào có MBR giao v i nó thì hi n th ra.
6.5 ch c d li u b n trên PocketPC:u nh d li u l u quá l n s làm t n không gian Object Store
ng Storage (l u tr ). H n n a s làm t n th i gian trong vi c truy xu t d
- 94 -
li u. Cho nên i v i ng d ng b n chúng ta ch nên hi n th và l u tr
nh ng thông tin c n thi t nh ch l u tr ng mà không l u tr qu n
huy n hay sông h .
Do ó d li u c n t ch c l u tr th t h p lý và ph i ti t ki m t i a
không gian l u tr , nh ng v n ph i b o m không t n quá nhi u th i
gian tính toán l i các thông tin không c l u tr . M t ph ng pháp r t d
d ng và r t hi u qu gi m nh d li u mà không m t thông tin là thay
th các ki u d li u l u tr t các ki u có kích th c l n thành kích th c nh
nh chuy n t s th c thành s nguyên ch ng h n (Double thành
Integer)…Nh ng khi load d li u lên thì chúng ta c n ph i có các thao tác tính
toán nh chia cho m t s qui nh nào ó ph c h i tính chính xác c a d
li u.
- 95 -
CH NG 7 : ng d ng b n :
7.1 Phân tích và xác nh yêu c u: nh ng yêu c u và th c tr ng, ng d ng xây d ng c n có nh ng ch c
ng c th sau:
STT Ch c n ng Ghi chú
1 o c s d li u h ng
i t ng theo chu n
Topology
2 Hi n th b n c nhanh
3 Phóng to, thu nh , Fit
n
c nhanh
4 Di chuy n b n c nhanh
5 Thông tin chi ti t v các
i t ng trên b n
Ví d nh Region, River,
Edge…
6 Xác nh các i t ng Ví d nh Region,
Edge…
8 Xác nh nhanh ng
và các giao l
Giao l là node chung
a hai hay nhi u ng.
9 Tìm ng i ng n nh t
gi a hai v trí trên b n
Hai m có th không
ph i là giao l
10 Tìm ng i ng n nh t Hai m ng u nhiên là
- 96 -
gi a hai giao l giao l
11 Tìm chu trình t i u Các m b t kì không
nh t thi t ph i là giao l .
ng 7.1-1 Các ch c n ng chính
7.2 Phân tích - thi t k :
7.2.1 s d ng:
Tim duong
Tim chu trinh toi uu
Tim duong di ngan nhat
Tim giao lo
Tim kiem dia diem
Xem thong tin tren ban do
Tim cac duong giao nhau
Tim kiem Region
Tao co so du lieuXoa co so du lieu
Thao tac ban do
Hien thi ban do
Ket noi co so du lieu
Nguoi Dung
Ngung ket noi co so du lieu
Hình 7.2.1-1 S s d ng t ng quát
- 97 -
7.2.2 c t Use-Case chính:
7.2.2.1 Tìm ki m ng i:
Tim cac duong giao nhau
Nguoi Dung
Tim duong
Xem thong tin tren ban do
Tim giao lo
Hien thi ban do
Hình 7.2.2.1-1 Use Case - Tìm ki m Edge
Tên Use-Case: TIMKIEMEDGE
Mô t : ng i dùng mu n h th ng xác nh và hi n th v trí Edge
mà ng i dùng ch n.
Dòng s ki n:
S ki n c b n:
+ Ng i dùng ch n ng trên b n (Edge ) ( ây
ch xét n ID c a i t ng)
+ H th ng s tìm Edge d a vào m ch n c a ng i
dùng.
- 98 -
+ H th ng hi n th Edge tìm c t i v trí c a nó
i màu s c khác và thông tin chi ti t v Edge.
S ki n thay th : N u nh không tìm c ng c n tìm v i
thông tin cung c p thì thông báo không tìm th y.
Yêu c u c bi t: Không.
u ki n u: Không.
u ki n sau: Không.
m m r ng: Tìm ki m ng theo tên.
7.2.2.2 Tìm ki m Region:
Nguoi Dung
Hien thi ban do
Tim kiem Regionhien thi thong tin Region
Hình 7.2.2.2-1 Use Case: Tìm ki m Region
Tên Use-Case: TIMKIEMREGION
Mô t : ng i dùng mu n h th ng xác nh và hi n th thông tin
a m mà ng i dùng ch n.
Dòng s ki n:
S ki n c b n:
- 99 -
+ Ng i dùng ch n a m.
+ H th ng s tìm a m d a vào m mà ng i
dùng ch n.
+ H th ng hi n th thông tin a m tìm c.
S ki n thay th : N u nh không tìm c a m c n tìm
i thông tin cung c p thì thông báo không tìm th y.
Yêu c u c bi t: Không.
u ki n u: Không.
u ki n sau: Không.
m m r ng: Tìm ki m theo tên.
7.2.2.3 Tìm ng i ng n nh t:
Nguoi Dung Hien thi ban do
Xac dinh diem bat dau
Xac dinh diem ket thuc
Xac dinh VirtualNode
Tim duong di ngan nhat
Hien thi thong tin duong di
Hình 7.2.2.3-1 Use Case – Tìm ng i ng n nh t
Tên Use-Case: TIMDUONGNGANNHAT
- 100 -
Mô t : ng i dùng mu n h th ng xác nh và hi n th m t ng
i ng n nh t t m xu t pháp n m k t thúc.
Dòng s ki n:
S ki n c b n:
+ Ng i dùng ch n m xu t phát và m ích
(b ng cách nh n chu t lên b n )
+ H th ng s tìm ng i ng n nh t gi a hai m
ã ch n.
+ H th ng hi n th ng i ng n nh t tìm c t i
trí c a nó v i màu s c khác và thông tin c a ng i.
S ki n thay th : N u nh không tìm c ng c n tìm v i
thông tin cung c p thì thông báo không tìm th y.
Yêu c u c bi t: Không
u ki n u: Ph i xác nh m u và m k t thúc
u ki n sau: Không
m m r ng: Nh p tên và tìm ng.
- 101 -
7.2.2.4 Tìm chu trình t i u:
Nguoi Dung
Hien thi ban doXac dinh VirtualNode
Tim chu trinh toi uuXac dinh cac diem can di
Hình 7.2.2.4-1 Use-Case - Tim chu trình t i u
Tên Use-Case: TIMCHUTRINHTOIUU
Mô t : ng i dùng mu n h th ng xác nh và hi n th chu trình i
qua các v trí mà ng i dùng ch n vào.
Dòng s ki n:
S ki n c b n:
+ Ng i dùng ch n m c n i qua (b ng cách nh n
ch n vào b n ).
+ H th ng s chu trình t i u.
+ H th ng hi n th chu trình tìm c t i v trí c a
nó v i màu s c khác và ng th i di chuy n b n t i ví trí
ó.
ki n thay th : N u nh không tìm c chu trình c n tìm
i thông tin cung c p thì thông báo không tìm th y và b n
không c di chuy n.
- 102 -
Yêu c u c bi t: Không
u ki n u: Ph i xác nh các a m, s l ng m ph i
n h n m t.
u ki n sau: Không
m m r ng: Không
7.2.3 l p Class Diagram:
7.2.3.1 S t ng quát:
CPCCPocketPC
CMapView
CDataBase CMapEvent
Hình 7.2.3.1-1 S t ng quát
- 103 -
7.2.3.2 S l p d li u:
CDataBase
CRiver CRegion
CNode CPointR2
chua diemChua diem
CVirtualNode
CEdge
Duoc tao boi diem dau va cuoiChua diem
Hình 7.2.3.2-1 S l p d li u
7.2.3.3 S l p v :
CMapView
CRegionViewCEdgeView CRiverView
Hình 7.2.3.3-1 S l p v
- 104 -
7.2.3.4 S s ki n:
CMapEvent
CGrapper
CZoom
CZoomIn
CZoomOutCFitToWin
CSelectObject
CSelectNode
CSelectEdge
CSelectRegion
CShosrtestPath
CTSP
CVirtualNode CNode
22..n
1..n
Hình 7.2.3.4-1 S s ki n
7.2.4 Mô t các l p:p CDataBase
STT Ph ng th c Ý ngh a
1 CDataBase() Ph ng th c kh i t o nh ng giá tr c n thi t
2 ConnectDatabase() K t n i c s d li u
3 CreateDatabase T o c s d li u
4 ClearData() Xoá Database, Xoá luôn c t p tin l u tr
- 105 -
5 CloseData() óng c s d li u ã m
ng 7.2.4-1 L p CDatabasep CMapView
STT Ph ng th c Ý ngh a
1 Layer() n hay hi n các i t ng theo t ng t ng ví d nh
Edge, Region, River…
ng 7.2.4-2 L p CMapViewCMapEvent
STT Ph ng th c Ý ngh a
1 OnMouseMove + i v i PC: S ki n nh n chu t trên bi u t ng
Toolbar và nh n chu t trái lên b n , gi chu t và
rê chu t i
+ i v i PocketPC: S ki n di chuy n bút trên màn
hình.
2 OnLeftMouseDown + i v i PC: s ki n nh n chu t trái lên b n .
+ i v i PocketPC: s ki n t bút xu ng màn
hình.
3 OnLeftMouseUp + i v i PC: s ki n th chu t ra r i kh i b n .
+ i v i PocketPC: s ki n nh c bút ra kh i màn
hình.
4 OnPaint nh ng th c n thi t lên màn hình sau khi có
nh ng thay i trên màn hình hay t ng v ngay
- 106 -
n kh i ng u tiên.
5 OnLoad p nh ng thông tin c n thi t lên màn hình. Kh i
o hay c p phát nh ng nh ng th c n thi t.
5 OnClosing Xoá nh ng th c n th t, óng k t n i và gi i phóng
nh ng nh b chi m gi .
6 OnResize Thay i kích th c c a b n hay thay i b t kì
u khi n nào trên ng d ng.
ng 7.2.4-3 L p CMapEventp CNode
CNodem_id : intm_x : doublem_y : doublem_mbr : RectangleR2m_firstEdge : CEdgem_isVirtualNode : bool
MakeMBR()GetArrEdgesAround()GetNodeAround()Angle()DistanceToPoint()Draw()
Hình 7.2.4-1 L p CNode
ng các thu c tính:
Tên Ki u Ý ngh a
M_id nguyên nh danh c a m i i
ng
- 107 -
M_x th c Hoành c a i t ng
M_y th c Tung c a i t ng
M_mbr ki u khung hình ch nh t Là khung bao nh nh t
bao quanh i t ng.
M_fisrtEdge Ki u CEdge (s c
nh ngh sau)
Là c nh u tiên theo
chu n trong mô hình
Topology.
M_IsVirtialNode ki u úng sai xét xem là Node o
hay không. m c nh lúc
o bi n này s gán giá tr
là False (không ph i là
Node o) (xem thêm
ph n Node o)
ng 7.2.4-4 Thu c tính l p CNode
ng các ph ng th c:
Tên ph ng th c Tham s vào Ý ngh a Ghi chú
MakeMBR() o khung bao
nh nh t cho i
ng.
tr v khung bao
nh nh t
GetArrEdgesAround y danh sách các
nh liên h tr c
ti p v i chính i
tr v danh sách
(ArrayList)
- 108 -
ng
GetNodeAround y danh sách các
Node liên h tr c
ti p v i i t ng
tr v danh sách
(ArrayList)
Angle Node chu n
và Node di
ng
ây là hàm tính
góc ng c chi u
kim ng h c a
nh t o b i
nodeChu n va
chính i t ng
node này, v i c nh
o b i node di
ng và chính i
ng node này.
tr v là góc c n
tính
DistanceToPoint m c n tính
kho ng cách
Hàm tính kho ng
cách gi a chính
i t ng v i m t
m b t kì.
Tr v kho ng
cách.
Draw Ma tr n
transform,
bút v và
n c a i
ng c n v
hi n th i t ng
ra màn hình
ng 7.2.4-5 Ph ng th c l p CNode
- 109 -
p CEdge
CEdgem_id : intm_width : intm_direction : bytem_mbr : Rectanglem_StartNode : CNodem_EndNode : CNodem_PointArray : Linkm_LeftEdge : CEdgem_RightEdge : CEdgem_ArrVirtualNode : Link
DistanceToPoint()MakeMyMBR()CreatePointArray()Draw()NearPointToPoint()
Hình 7.2.4-2 L p CEdge
ng thu c tính:
Tên Ki u Ý ngh a
M_id Int nh danh c a m i i
ng
M_width Int dày c a m i c nh
M_direction Byte ng i
M_mbr Rectangle Khung bao nh nh t bao
quanh i t ng
M_StartNode CNode ( ã nh ngh a
trên)
m u c a c nh theo
mô hình Topology
- 110 -
M_EndNode CNode ( ã nh ngh a
trên)
m cu i c a c nh theo
mô hình Topology
M_LeftEdge CEdge nh trái c a i t ng
theo mô hình Topology.
M_RightEdge CEdge nh ph i c a i t ng
theo mô hình Topology.
M_PointArray Link p các m t o nên
nh mà không bao g m
m u và cu i.
M_ArrVirtualNode Link p các Nod o c t o
ra trên c nh khi ch ng
trình ang th c thi
ng 7.2.4-6 Thu c tính l p CEdge
ng ph ng th c:
Tên ph ng th c Tham s vào Ý ngh a Ghi chú
DistanceToPoint m c n tính
kho ng cách v i
i t ng
Tính kho ng cách
gi a m t m b t
kì v i i t ng
tr v kho ng
cách tính c
MakeMBR Tính khung bao
nh nh t bao
quanh i t ng
Tr v khung bao
tính c
CreatePointArray o ng u nhiên tr v các i
- 111 -
các m thu c
i t ng
ng c t o
Draw Ma tr n
transform, bút
và l n c a
i t ng c n
Hi n th i t ng
lên khung nhìn
NearPointToPoint m b t k Tr v m trên
nh mà kho ng
cách t m ó
n i t ng là
ng n nh t so v i
nh ng m khác
trên c nh
ng 7.2.4-7 Ph ng th c l p CEdge
7.2.5 Các l u ho t ng:Hi n th b n :
- 112 -
: Nguoi Dung : CScreen : CMapView : CRegionView : CRiverView : CEdgeView
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
Hình 7.2.5-1 Sequense Diagram: Hi n th b n
: Nguoi Dung : CMapView
: CRiverView
: CScreen
:CRegionView
: CEdgeView
1. // Xem ban do 2. // Ti le ban do3. // Dich chuyen vung nhin
4. // Ve quan huyen
5. // Ve song ho
6. // Ve duong
- 113 -
Hình 7.2.5-2 Collabration Diagram: Hi n th b n
Tìm ng ng n nh t:
: Nguoi Dung : CScreen :CShosrtestPath
: CDataBase : CMapView
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
Hình 7.2.5-3 Sequence Diagram: Tìm ng ng n nh t
- 114 -
: Nguoi Dung : CScreen
: CShosrtestPath
: CDataBase
: CMapView
2.1.2. // Lay ID cac duong tu danh sach cac dinh
1. // Chon diem xuat phat2. // TIm duong di ngan nhat
2.1. // TIm duong di ngan nhat
2.2. // Hien thi duong di ngan nhat
2.1.1. // Tim duong di ngan nhat
2.1.1.1. // Tra ra danh sach cac dinh
Hình 7.2.5-4 Collabration Diagram: Tìm ng ng n nh t
Tìm Edge:
- 115 -
: Nguoi Dung : CScreen : CDlgInputToFind : CEdge : CMapView
1. // Tim Edge
1.1. // Chon duong
1.1.1. // Lay danh sach ID cua Edge
1.1.1.1. // Hien thi Edge
Hình 7.2.5-5 Sequence Diagram: Tìm Edge
- 116 -
: Nguoi Dung : CScreen
: CEdge
: CMapView
: CDlgInputToFind
1. // Tim Edge
1.1. // Chon duong
1.1.1. // Lay danh sach ID cua Edge
1.1.1.1. // Hien thi Edge
Hình 7.2.5-6 Collabration Diagram: Tìm Edge
Tìm chu trình t i u:
- 117 -
: Nguoi Dung : CScreen : CTSP : CDataBase : CMapView
1. // Chon cac diem di qua
2. // Tim chu trinh toi uu2.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
Hình 7.2.5-7 Sequence Diagram: Tìm chu trình t i u
- 118 -
: Nguoi Dung
: CScreen
: CTSP
: CDataBase
: CMapView
2.1.2. // Lay ID tu danh sach cac canh
1. // Chon cac diem di qua2. // Tim chu trinh toi uu
2.1. //Tim chu trinh toi uu
2.2. // Hien thi chu trinh toi uu
2.1.1. // Tim chu trinh toi uu
2.1.1.1. // tra danh sach cac canh
Hình 7.2.5-8 Collabrotion Diagram: Tìm chu trình t i u
ch chuy n vùng nhìn:
- 119 -
: Nguoi Dung : CScreen : CMapView
1. // Lay diem bat dau di chuyen
bang cach nhanchuot 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
Hình 7.2.5-9 Sequence Diagram: D ch chuy n vùng nhìn
- 120 -
: Nguoi Dung : CScreen
: CMapView
2.1. // Tinh do dich chuyen
1. // Lay diem bat dau di chuyen2. // Di chuyen toi vi tri moi
2.2. // Thay doi vung nhin2.3. // Hien thi ban do
Hình 7.2.5-10 Collabrotion Diagram: Di chuy n vùng nhìn
l l i b n :
: Nguoi Dung : CScreen : CMapView
1. // Chon kich thuc ti le
1.1. // Ti le lai ban do
1.2. // hien thi ban do
Hình 7.2.5-11 Sequence Diagram: T l l i b n
- 121 -
: Nguoi Dung : CScreen
: CMapView
1. // Chon kich thuc ti le
1.1. // Ti le lai ban do1.2. // hien thi ban do
Hình 7.2.5-12 Collaboration Diagram: T l l i b n
Tìm Region:
: Nguoi Dung : CScreen : CDlgInputToFind : CRegion : CMapView
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
Hình 7.2.5-13 Sequence Diagram: Tìm a m
- 122 -
: Nguoi Dung : CScreen
: CDlgInputToFind :
CRegion
: CMapView
1.1.2. // hien thi thong tin dia diem
1. // Tim dia diem
1.1. // Chon dia diem
1.1.1. // Lay ID dia diem
Hình 7.2.5-14 Collaboration Diagram: Tìm a m
Tìm giao l
- 123 -
: Nguoi Dung : CScreen : CDlgInputToFind : CEdge : CMapView
1. // Tim giao lo1.1. // Chon Edge
1.1.1. // Lay danh sach ID va thong tin cua Edge
2. // Chon Edge giao2.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
Hình 7.2.5-15 Sequence Diagram: Tìm giao l
: Nguoi Dung : CScreen
: CDlgInputToFind : CEdge
: CMapView
1. // Tim giao lo
2. // Chon Edge giao
1.1. // Chon Edge
1.1.1. // Lay danh sach ID va thong tin cua Edge2.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
Hình 7.2.5-16 Collaboration Diagram: Tìm giao l
- 124 -
7.3 Thi t k giao di n:
7.3.1 Giao di n trên Desktop:Màn hình chính c b trí nh sau : Toàn b màn hình là b n , bên trái
là khung ch n t ng Layer khác nhau và khung nhìn b n thu nh , thanh
công c , thanh menu, và khung Detail hi n th nh ng thông báo hay thông
tin v i t ng c n thi t.
Hình 7.3.1-1 Khung nhìn t ng quát v giao di n
Thanh công c nh hình v :
Hình 7.3.1-2 Toolbar c a ch ng trình
- 125 -
Các ch c n ng trên thanh công c nh sau:
Bi u t ng Ch c n ng Ghi chú
t n i c s d li u và
kh i t o giá tr
PAGE_POOL_SIZE
Enable khi ã có c s
li u.
Ng ng k t n i c s d
li u
Enable khi ã k t n i
o c s d li u Enable khi không t n t i
s d li u.
Xoá c s d li u Enable khi có c s d
li u và không t n t i k t
i.
u l i hình nh hi n t i
a b n
Enable khi ã k t n i c
d li u.
Phóng to b n Enable khi ã k t n i c
d li u.
Thu nh b n Enable khi ã k t n i c
d li u.
l l i b n theo t l
ban u
Enable khi ã k t n i c
d li u.
ch chuy n b n Enable khi ã k t n i c
d li u.
- 126 -
Ch n i t ng Edge c a
n .
Enable khi ã k t n i c
d li u.
Enable khi ã k t n i c
d li u.
Ch n i t ng Region
a b n
Enable khi ã k t n i c
d li u.
Xoá các i t ng c
ch n
Ch xoá Edge, không xoá
Region.
Enable khi ã k t n i c
d li u.
Nút xác nh n ch n các
m cho bài toán tìm
chu trình t i u TSP.
Enable khi ã k t n i c
d li u.
Xác nh n ch y bài toán
TSP.
Enable khi ã k t n i c
d li u.
Xoá các m và chu
trình TSP tìm c
Enable khi ã k t n i c
d li u.
Nút xác nh n ch n m
t u cho bài toán tìm
ng ng n nh t.
Enable khi ã k t n i c
d li u.
Nút xác nh n ch n m
t thúc cho bài toán tìm
Enable khi ã k t n i c
d li u.
- 127 -
ng ng n nh t.
Combobox ch n
thông s t l cân b ng
gi a thu t toán và
Heuristic
(Algorithm/Heuristic
Balance) trong thu t toán
Astar
Enable khi ã k t n i c
d li u.
Nút xác nh n ch y bài
toán Astar
Enable khi ã k t n i c
d li u.
Xoá các m u, cu i
và ng i ng n nh t
a tìm c.
Enable khi ã k t n i c
d li u.
Hi n th t p tin tr giúp Có bao g m h ng d n
và thuy t minh s d ng
ch ng trình.
hi n th thông tin tác gi
Hình 7.3.1-3 Các ch c n ng chính trên thanh công c
Thanh th c n ( Menu) g m các ch c n ng c a b n g m các th c
n nh sau:
- 128 -
Hình 7.3.1-4 Thanh th c n File
Hình 7.3.1-5 Thanh th c n View
Các ch c n ng chính trên thanh th c n:
Tên Ý ngh a Ghi chú
Connect t n i c s d li u Enable khi t n t i c s
li u.
Disconnect Ng ng k t n i c s d
li u
Enble khi ang m k t
i
CreateDatabase o c s d li u Enable khi không t n t i
s d li u.
DeleteDatabase Xoá c s d li u Enable khi t n t i c s
li u và ang ng ng
t n i
Save u hình nh b n hi n
- 129 -
i
Exit óng ng d ng
StandardToolbar Hi n th thanh Toolbar
hay không. ang hi n thì
nó s n và ng c l i.
Layer Hi n th khung Layer hay
không. ang hi n thì nó
n và ng c l i.
SmallMap Hi n th khung
SmallMap không. ang
hi n thì nó s n và
ng c l i.
Statusbar Hi n th thanh Statusbar
hay không. ang hi n thì
nó s n và ng c l i.
DetailInfo Hi n th khung
DetailInfo hay không.
ang hi n thì nó s n và
ng c l i.
ng 7.3.1-1 Các ch c n ng chính trên thanh th c n
Khung nhìn b n thu nh : ch bao g m hi n th b n t ng quát, ch
hi n th các vùng nh qu n huy n (Region), sông (River) mà không hi n th
các chi ti t nh ng (Edge).
- 130 -
Hình 7.3.1-6 Khung nhìn b n thu nh
Khung ch n các c p (Layer )b n khác nhau: g m m t khung nhìn
ng cây, dùng ch n các Layer khác nhau nh hi n th Edge hay không,
hi n th River (sông) hay không, hi n th các Region hay không.
Hình 7.3.1-7 Khung Layer
Khung Detail: g m m t khung nhìn ch a thông tin c a i t ng c
ch n. Ví d ang ch n i t ng trên b n . Và ây c ng là khung hi n th
t qu tìm ng i ng n nh t.
- 131 -
Hình 7.3.1-8 Khung hi n th thông tin i t ng
7.3.2 Giao di n trên PocketPC:Trên PocketPC ch hi n th Edge, khung hi n b n chính và các nút
chính. Không có khung nhìn thu nh b n , không có khung ch n c p hi n
th , không có khung hi n th thông tin i t ng.
7.4 Cài t:Công c phân tích thi t k : Rational Rose
Môi tr ng l p trình: Microsoft Visual Studio.NET 2003
Môi tr ng th nghi m và cài t:
Máy PC dùng CPU Celeron 1.8G, 256 MB RAM.
Máy o gi l p PocketPC 2002 trên h u hành Microsoft Windows
XP
CH NG 8 : t Lu n, ánh giá và h ng phát tri n
8.1 t lu n, ánh giá:Nh ng k t qu t c:
Bài toán ã gi i quy t các v n c b n t ra, ã t o c d li u h ng
i t ng và qu n lý t t các i t ng thông tin a lý. Ngoài ra ã cài t
thành công các thu t toán nh tìm ng i ng n nh t gi a hai m b ng
thu t gi i A*, thu t toán tìm chu trình t i u ( thu t toán TSP).
T c ch ng trình ch p nh n c.
Giao di n khá p và thân thi n.
Ch ng trình có c u trúc rõ ràng, d phát tri n.
8.2 ng phát tri n:Trong t ng lai ng d ng có th phát tri n hoàn thi n h n v chi u r ng
nh m r ng b n , m r ng l nh v c ng d ng và có th m r ng lên
nhi u thi t b c bi t là thi t b di ng.
- 133 -
CH NG 9 : Tài li u tham kh 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 n v n cao h c v mô hình Topology.
- 134 -
CH NG 10 : Ph l c
10.1 Bài toán tìm ng i ng n nh t gi a hai m:
10.1.1 Phát bi u bài toán:Phát bi u c b n c a bài toán nh sau: Cho tr c th G và 2 nút
startNode và endNode thu c G. Tìm ng i ng n nh t trong G n i
startNode và endNode.
10.1.2 Gi i quy t bài toán:t yêu c u phát sinh là có tr ng h p hai m startNode ho c endNode
trên m ng l i giao thông không ph i là các Node trong c s d li u.Khi ó
chúng ta s s d ng nh Node o, khi ó các Node o này nh các Node
trong c s d li u nh ng khi ch ng trình c t t i thì các Node o này
không còn n a. V i ph ng pháp Node o này chúng ta d dàng qu n lý các
trí trên các c nh v i s l ng c c l n và v n b o m tính liên thông gi a
nút th t vào o.
Bài toán này có nhi u cách gi i quy t khác nhau. Trong lu n v n
này,ph ng pháp c ch n gi i quy t là dùng thu t gi i (heuristic) A*.
Thu t gi i c th nh sau:
1. N u startNode b ng endNode, không c n gi i quy t bài toán n a.
2. Kh i t o 2 t p h p r ng, m t là t p openedNode, hai là t p closedNode.
Kh i t o bi n PathhPound=false. Kh i t o bi n s th c
AlgorithmHeuristicBalance trong kho ng [0.0,1.0].
- 135 -
3. ng v i m i node trong G, kh i t o bi n distance b ng vô c c và bi n
prevNode b ng null (Riêng v i startNode kh i t o distance b ng 0 và
prevNode b ng chính startNode).
4. Thêm node startNode vào t p openedNode.
5. V i m i node trong t p openedNode, tính (f(node)=g(node) + h(node))*
6. Gán cho node có f(node) nh nh t là bestNode.
7. N u không tìm c bestNode, thu t toán k t thúc, không tìm c l i
gi i.
8. N u tìm c, lo i bestNode ra kh i t p openedNode.
9. N u bestNode b ng chính endNode, làm r ng t p openedNode.Gán
PathFound=true.
10. N u không, th c hi n vi c tìm các node xung quanh bestNode thêm
vào openedNode.(**)
11. N u t p openedNode khác r ng, tr l i b c 5.
12. N u t p openedNode r ng
u PathFound=true
Bài toán ã tìm c l i gi i.
u PathFound=false
Bài toán không có l i gi i.
13.End
(*) c th nh sau:
f(node)=AlgorithmHeuristicBalance*distance(node) + (1 –
AlgorithmHeuristicBalance) * d(node,endNode).
- 136 -
V i:
d(node1,node2)=sqrt(sqr(node1.x-node2.x)+sqr(node1.y-node2.y))
(**) c th nh sau:
1.Tìm các node aroundNode xung quanh (n i tr c ti p) v i node N c n
xét.
2.V i m i aroundNode:
Tính l i giá tr distance và prevNode c a nó:
Distance(aroundNode)=diatance(aroundNode) + kho ng cách th t t N
n aroundNode.
prevNode(aroundNode)=N.
u ((aroundNode ã xu t hi n trong openedNode(closedNode) và
distance c a aroundNode này bé h n distance c a node t ng ng trong
p openedNode(closedNode)) ho c (aroundNode ch a xu t hi n trong
openedNode(closedNode))) thì:
Lo i node t ng ng ó ra kh i t p openedNode ho c closedNode.
Thêm aroundNode vào openedNode.
N u không,tr l i b c 2.
10.2 Bài toán tìm chu trình t i u
10.2.1 Phát bi u bài toánCho th G có n nh. Tìm chu trình Hamilton ng n nh t c a G.
- 137 -
10.2.2 Gi i quy t bài toán:ng gi ng nh bài toán tìm ng i ng n nh t, bài toán tìm chu trình t i
u c ng có v n v Node o và ta c ng gi i quy t t ng t .
Bài toán c ng có nhi u cách gi i quy t. Trong lu n v n này, ph ng pháp
c ch n là thu t toán r nhánh và ch n (Branch and Bound). Tuy ây
không ph i là thu t toán t i u nh ng ch p nh n c v i s l ng nh
không quá l n. H n n a, các thu t toán khác t ng i ph c t p trong vi c
cài t và m c tiêu chính c a lu n v n không t p trung vào ph n này nên
thu t toán r nhánh và ch n là m t l a ch n thích h p.
Thu t toán s c mô t và gi i thích nh sau:
Gi s t p h p các nh c a G là {1,2..n}và ma tr n tr ng s c a G là
M=[Mij] v i Mij là tr ng s c a c nh xu t phát t node i và n node j có
giá tr d ng (Các c nh không “ i c” s c gán giá tr là d ng vô c c.
1.Th c hi n th t c rút g n M. Tr m i ph n t trên dòng (c t) cho ph n
nh nh t (g i là ph n t rút g n) trên dòng (c t) ó. Ma tr n k t qu c
ký hi u là Mx. t LB b ng t ng giá tr các ph n t rút g n. ây là ch n
i c a Mx (Các chu trình Hamilton u có tr ng s l n h n hay b ng LB).
2. Ch n c nh ij b t k có Mij b ng 0 th c hi n th t c r nhánh: G i X
là t p h p g m m i chu trình Hamilton. Chia X thành hai t p con phân bi t
là (ij) g m các chu trình có ch a c nh ij và (*ij) g m các chu trình không
ch a c nh ij.
2.1.Xét (ij). M i chu trình trong (ij) s u không dùng n b t c
ph n t nào ngoài Mij trên hàng i và c t j c a M. Do ó ta có th gán các
giá tr ngoài Mij trên hàng i c t j b ng vô c c. Ngoài ra, các c nh n u s
- 138 -
ng có th t o ra chu trình con c ng s c gán b ng vô c c. Sau ó ta
th c hi n th t c rút g n ma tr n này nh ã th c hi n b c 1 và tính
LB1:
LB1=LB+ t ng các ph n t rút g n.
2.2.Xét (*ij). Ta ch c n gán Mij b ng vô c c r i th c hi n th t c
rút g n ngay tính LB2:
LB2=LB+ t ng các ph n t rút g n.
2.3.So sánh LB1 và LB2, ch n giá tr nào bé h n gán cho LB r i l p
i b c 2 t i ma tr n t ng ng v i LB m i t o cho n khi tìm c l i
gi i c a bài toán.
Recommended