R
Hỡnh 2.10 chỉ ra cõy R bậc 4 liờn kết với cỏc chữ nhật trờn hỡnh 2.10. Cấu trỳc của một R-Trees được định nghĩa như sau:
rtnodetype = record
Rect1, ..., Rectk: Rectangle; P1, ..., Pk : rtnodetype; end
2.5.1. Chốn và tỡm kiếm trong R-Trees
Khi chốn một hỡnh chữ nhật mới vào một R-Trees ta làm theo những bước dưới đõy:
1. Chỳng ta xem xột trong số cỏc hỡnh chữ nhật liờn quan với nỳt gốc hỡnh nào cần được mở rộng ớt nhất (về mặt diện tớch) để chứa hỡnh chữ nhật được chốn. Vớ dụ nếu chỳng ta chốn hỡnh chữ nhật R10 (hỡnh 2.12) vào cõy R trờn hỡnh 2.11 thỡ cỏch dễ nhất là mở rộng nhúm G1 bởi vỡ việc mở rộng cỏc nhúm khỏc thỡ diện tớch bị bao phủ bởi nhúm này sẽ tăng đỏng kể.
R1 R2 R3 R4 R5 R6 R7 R8 R9
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 2. Do đú từ những liờn kết của G1 (từ gốc, hỡnh 2.11) chỳng ta sẽ chốn R10 vào khe cú sẵn. Hỡnh 2.11. Trỡnh tự chốn vào cõy R
3. Bõy giờ chỳng ta xem xột việc chốn R11. Nhúm mà diện tớch của nú phải được mở rộng tối thiểu trong trường hợp này là G2. Tuy nhiờn, con G2 của gốc đó đầy. Do vậy cú một vài lựa chọn khỏc như trờn hỡnh 2.13.
4. Từ 2 lựa chọn trờn hỡnh 2.13, ta muốn cú giải phỏp trong hỡnh 2.13b vỡ diện tớch tổng thể của cỏc chữ nhật nhúm là nhỏ nhất.
Hỡnh 2.12. Bản đồ mẫu mụ tả phộp chốn trong cõy R
5. Hỡnh 2.14 chỉ ra cỏch làm khụng đỳng khi chốn chữ nhật R11. Tiếp cận này khụng khả thi vỡ nỳt biểu diễn nhúm chứa chữ nhật R11 cú thể là chỉ chứa duy nhất một chữ nhật.
Nỳt lỏ
G1 G2 G3
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R1 R2 R3 R4 R5 R6 R 7 R8 R9 R10 R11
Hỡnh 2.13. Bản đồ mẫu mụ tả phộp chốn trong cõy R
2.5.2. Xoỏ trong cõy R-Trees
Việc xúa cỏc đối tượng từ cõy R-Trees cú thể gõy ra một nỳt trong cõy R- Tree trở nờn thiếu hụt (underflow). Nhắc lại rằng một R-Tree bậc k phải bao gồm ớt nhất K/2 hỡnh chữ nhật trong nú. Khi chỳng ta xoỏ một hỡnh chữ nhật từ một R-Tree, chỳng ta phải đảm bảo rằng nỳt đú khụng bị thiếu hụt. Vớ dụ, xem xột R-Trees như hỡnh 2.11 trỡnh bày trờn. Giả thiết chỳng ta muốn xoỏ chữ nhật R9.
Hỡnh 2.14. Bản đồ mẫu mụ tả phộp chốn trong cõy R
Nỳt chứa R9 chỉ cũn lại một nỳt trong nú nếu thực hiện xoỏ R9, kết quả là nỳt này sẽ phản ỏnh một điều kiện hụt. Trong trường hợp này chỳng ta phải tạo ra nhúm logic mới. Một khả năng là sắp xếp lại cỏc nhúm như sau:
Nỳt lỏ G1 G2 G3 R1 R2 R3 R4 R6 R7 R5 R8 Group Rectangles G1 R1, R2, R3 G2 R4, R6, R7 G3 R5, R8
Cõy R mới là kết quả của việc xúa nỳt R9, nú được thể hiện trờn hỡnh 2.15
Hỡnh 2.15. Mụ tả phộp xúa trong cõy R
2.6. So sỏnh cỏc cấu trỳc dữ liệu
Trong chương này ta đó khảo sỏt 4 loại cấu trỳc dữ liệu: cõy k-d, cõy tứ phõn điểm, cõy tứ phõn MX và cõy R. Mỗi chỳng đều cú ưu điểm và nhược điểm nhất định.
- Cõy tứ phõn điểm rất dễ cài đặt. Tuy nhiờn, cõy tứ phõn điểm cú k nỳt thỡ cú thể cú độ cao là k, như vậy làm tăng độ phức tạp cho chốn và tỡm kiếm (nú cú thể là O(k)). Hơn nữa mỗi so sỏnh đũi hỏi so sỏnh hai tọa độ.Việc xúa nỳt trong cõy loại này là khỏ khú khăn. vỡ việc tỡm kiếm nỳt ứng viờn thay thế cho nỳt đang xúa thụng thường là khụng đơn giản. Cuối cựng truy vấn khoảng trong cõy này cần O(2n), n là tổng số bản ghi trong cõy.
- Cõy k-d rất dễ cài đặt. Tuy nhiờn, cõy k-d chứa k nỳt cú thể cú độ cao k, do vậy chốn và tỡm kiếm cú thể phức tạp. Trong thực tế đường dẫn từ gốc tới lỏ của cõy loại này dài hơn trong cõy tứ phõn điểm bởi vỡ cõy này là cõy nhị phõn. Độ phức tạp tồi nhất của tỡm kiếm dải trong cõy k-d là:
k kxn O 1 1 . Khi k=2, thỡ độ phức tạp cũn O 2 n như cõy tứ phõn điểm.
- Cõy tứ phõn MX đảm bảo cú độ cao nhất là O(n), trong đú vựng được biểu diễn cú (2n
loại này cần thời gian là O(n). Tỡm kiếm dải của cõy này rất hiệu quả - O(N+2h ), trong đú N là tổng số điểm kết quả truy vấn và h là độ cao của cõy.
- Tương tự với cõy R. Tuy nhiờn, cõy R cú thể cú nhiều chữ nhật lưu trong cựng nỳt, nú phự hợp với xõm nhập đĩa từ bằng giảm độ cao của cõy.
- Một bất lợi của cõy R là cỏc chữ nhật bao kết hợp với cỏc nỳt khỏc nhau cú thể phủ lờn nhau. Như vậy, việc tỡm kiếm trong cõy R thay vỡ đi theo một vết như cỏc cõy khỏc, là phải đi theo nhiều vết trong cõy. Trường hợp này lại làm tăng số lần thõm nhập đĩa.
- Tổng thể, cõy R hiệu quả hơn cõy k-d và cõy tứ phõn điểm trong cỏc ứng dụng đũi hỏi dung lượng đĩa rất lớn phải xõm nhập. Tuy nhiờn nếu chỉ số nhỏ thỡ sử dụng cõy tứ phõn MX sẽ hiệu quả hơn.
Chương 3.
CÀI ĐẶT VÀ THỬ NGHIỆM
3.1. Bài toỏn
3.1.1. Phỏt biểu bài toỏn
- Input: + Dữ liệu bản đồ định dạng bằng shapefile, trong đú cú 2 lớp bản đồ: lớp đường và lớp điểm được tổ chức bởi cỏc tệp:
+ 2 tệp dữ liệu mụ tả dữ liệu dạng điểm và dữ liệu dạng đường là: xe_buyt.dbf và diem_chuyen_xe_bus.dbf
+ 2 tệp dữ liệu lưu trữ ID của dữ liệu dạng điểm và dữ liệu dạng đường là: xe_buyt.shx và diem_chuyen_xe_bus.shx
+ 2 tệp dữ liệu mụ tả đầy đủ dữ liệu dạng điểm và dữ liệu dạng đường là: xe_buyt.shp và diem_chuyen_xe_bus.shp
+ Và cỏc tệp khỏc.
Cỏc tệp dữ liệu này lưu trữ dưới dạng tuyến tớnh.
- Output: + Từ cỏc tệp dữ liệu lưu trữ dạng tuyến tớnh lưu trữ sang cấu trỳc cõy tứ phõn điểm.
+ Hiển thị bản đồ từ dữ liệu đó lưu trữ dưới dạng cấu trỳc cõy tứ phõn điểm.
+ So sỏnh giữa kỹ thuật lưu trữ bởi cấu trỳc cõy với kỹ thuật lưu trữ bởi cấu trỳc tuyến tớnh.
3.1.2. Cỏch giải quyết
- Từ tệp .shx (ở dạng nhị phõn) trong dữ liệu shapefile chuyển sang tệp dạng danh sỏch (list) cũng là tệp nhị phõn.
- Từ dữ liệu trong tệp dạng danh sỏch (list) lưu trữ vào cấu trỳc cõy tứ phõn điểm đó trỡnh bày trong chương 2.
- Hiển thị bản đồ sử dụng thư viện SharpMap
- Truy vấn vựng trờn bản đồ để so sỏnh giữa cấu trỳc lưu trữ dạng tuyến tớnh và cấu trỳc lưu trữ dạng cõy. Truy vấn như sau: giả sử người dựng kớch chuột(chọn) vào hai điểm, chẳng hạn A(xA,yA) và B(xB,yB) khi đú những điểm nằm trong hỡnh chữ nhật bao cú gúc dưới bờn trỏi là A và gúc trờn
bờn phải là B được hiển thị bởi một màu khỏc với màu hiện tại của những điểm khụng nằm trong vựng truy vấn
* Mụ hỡnh Use Case của hệ thống:
Hỡnh 3.1. Mụ hỡnh Use Case
- Chuyển đổi cấu trỳc dữ liệu:từ tệp .shx lưu trữ bởi cấu trỳc tuyến tớnh lưu sang cấu trỳc cõy tứ phõn điểm
- Hiển thị: hiển thị bản đồ sử dụng thư viện hỗ trợ SharpMap từ tệp lưu bởi cấu trỳc cõy tứ phõn điểm.
- Truy vấn: truy vấn vựng trờn bản đồ, đối với bản đồ lớp điểm thỡ những điểm nằm trong vựng truy vấn sẽ đổi màu khỏc với màu hiện tại, đối với bản đồ lớp đường những đường giao với vựng truy vấn sẽ đổi màu khỏc với màu hiện hành.
3.2. Cụng cụ xõy dựng chương trỡnh
- Tệp dữ liệu định dạng Shapefile - Thư viện hiển thị bản đồ SharpMap
- Ngụn ngữ lập trỡnh Microsoft Visual C#.NET
3.3. Dữ liệu xõy dựng trong chương trỡnh
Dữ liệu của ứng dụng là bản đồ đó được số húa do phũng Hệ Thụng Tin Địa Lý - Viện Cụng Nghệ Thụng Tin - Viện Khoa học và Cụng nghệ Việt Nam cung cấp. Nguồn dữ liệu thụ này gồm cỏc lớp bản đồ được thiết kế bằng Shapefile với cỏc tệp .shp, .dbf, .shx và cỏc tệp khỏc.
Chuyển đổi cấu trỳc dữ liệu
Người sử dụng
Hiển thị
3.4. Thiết kế đặc tả chức năng
3.4.1. Chuyển đổi dữ liệu từ cấu trỳc tuyến tớnh sang cấu trỳc cõy
- Từ tệp .shx (ở dạng nhị phõn) trong dữ liệu shapefile lưu sang cấu trỳc danh sỏch (list) cũng là tệp nhị phõn.
- Từ tệp cú cấu trỳc danh sỏch (list) lưu vào cấu trỳc cõy tứ phõn điểm
3.4.2. Lưu trữ sang cấu trỳc cõy
- Từ dữ liệu trong tệp danh sỏch dạng nhị phõn lưu trữ vào cấu trỳc cõy tứ phõn điểm đó trỡnh bày trong chương 2.
3.4.3. Hiển thị bản đồ
Hiển thị bản đồ tổng thể: cho phộp bản đồ hiển thị dạng tổng thể trờn toàn bộ cửa sổ chớnh của chương trỡnh.
Thờm lớp bản đồ: chức năng này nhằm thờm lớp bản đồ để hiển thị.
Xoỏ lớp bản đồ: chức năng này nhằm xoỏ lớp bản đồ đang hiển thị.
Hiển thị chuẩn vựng bản đồ: chức năng này hển thị lại vựng ban đầu khi ta phúng to hay thu nhỏ bản đồ.
Phúng to, thu nhỏ bản đồ: chức năng này nhằm phúng to hay thu nhỏ phần khụng gian hiển thị của bản đồ.
Di chuyển bản đồ: chức năng này dựng di chuyển bản đồ lờn trờn, xuống dưới, sang trỏi, sang phải.
Chọn một đối tượng bản đồ: cho phộp người sử dụng chọn một đối tượng trờn bản đồ.
Chọn một vựng trờn bản đồ: cho phộp người sử dụng lựa chọn một vựng hoặc tất cả cỏc đối tượng trong vựng đú theo lựa chọn của người sử dụng.
Hiển thị cỏc lớp bản đồ: cho phộp người dựng mở cửa sổ lớp bản đồ để bật hoặc tắt cỏc lớp thụng tin.
3.4.4. Truy vấn trờn bản đồ
- Nếu sử dụng chỉ trờn lớp dữ liệu điểm khi người dựng kớch chuột chọn vựng truy vấn thỡ những điểm dữ liệu thuộc vựng đó chọn đổi màu và hiển thị thụng tin cỏc điểm dữ liệu trong vựng truy vấn.
- Nếu sử dụng chỉ trờn lớp dữ liệu đường thỡ những đường giao nhau với vựng được chọn sẽ đổi màu và hiển thị thụng tin cỏc đường giao nhau với vựng truy vấn.
3.5. Cài đặt và thử nghiệm
3.5.1. Cài đặt chương trỡnh
- Chương trỡnh được viết trờn ngụn ngữ C#.NET, chạy trờn hệ điều hành Window XP, mỏy tớnh tốc độ 2GHz, bộ nhớ 512MB RAM.
3.5.2. Kết quả thử nghiệm
Chương trỡnh “Lưu trữ và hiển thị bản đồ sử dụng cõy tứ phõn điểm” chạy trờn mụi trường WinXP bước đầu cú những kết quả:
* Giao diện của chương trỡnh khi demo (hỡnh 3.1)
Hỡnh 3.2. Giao diện chớnh của chương trỡnh
* Mụ tả cỏc thanh tỏc vụ trờn giao diện:
- Thanh tiờu đề cửa sổ chương trỡnh gồm: bờn trỏi ghi tiờu đề của chương trỡnh, bờn phải gồm cú cỏc nỳt đúng cửa sổ chương trỡnh, phúng to, thu nhỏ cửa sổ chương trỡnh.
+ File: gồm: open, convert, close và exit
Open: mở tệp dữ liệu để hiển thị bản đồ, trong chương trỡnh trước khi mở tệp ta phải chọn mục convert để chuyển dữ liệu từ dạng tuyến tớnh sang sạng cõy.
Convert: chuyển dữ liệu từ cấu trỳc tuyến tớnh sang cấu trỳc cõy. Khi chọn mục này chương trỡnh tự động chuyển đổi dữ liệu, khi chuyển đổi xong xuất hiện thụng bỏo là dữ liệu đó được chuyển đổi.
Close: đúng tất cả cỏc lớp dữ liệu đang hiển thị. Exit: thoỏt khỏi chương trỡnh demo
+ Help: trợ giỳp.
- Thanh cụng cụ của chương trỡnh gồm:
Nỳt lệnh Chức năng Thờm lớp bản đồ Xoỏ lớp bản đồ Hiển thị chuẩn Thu nhỏ bản đồ Phúng to bản đồ Di chuyển bản đồ Truy vấn bản đồ Bảng 3.1. Cỏc nỳt lệnh trờn thanh cụng cụ + Thờm lớp bản đồ: người dựng tuỳ chọn thờm những lớp bản đồ cần hiển thị.
+ Xoỏ lớp bản đồ: người dựng tuỳ chọn xoỏ bớt lớp bản đồ đang hiển thị. + Truy vấn trờn bản đồ: người dựng kộo chuột chọn một vựng bất kỳ trờn bản đồ, những điểm dữ liệu nằm trong vựng được chọn đổi màu khỏc với màu hiện
tại. Nếu truy vấn trờn bản đồ lớp đường thỡ những đường giao nhau với vựng chọn sẽ đổi màu.
* Giao diện hiển thị tổng thể của bản đồ (hỡnh 3.2)
Hỡnh 3.3. Bảng đồ sau khi hiển thị cả lớp đường và lớp điểm. * Giao diện hiển thị lớp điểm của bản đồ (hỡnh 3.3) * Giao diện hiển thị lớp điểm của bản đồ (hỡnh 3.3)
* Giao diện hiển thị truy vấn vựng của bản đồ lớp điểm (hỡnh 3.4)
Hỡnh 3.5. Truy vấn vựng trờn bản đồ lớp điểm
* Giao diện thể hiện kết quả của truy vấn vựng trờn bản đồ lớp điểm (hỡnh 3.5)
* Giao diện truy vấn vựng trờn bản đồ của lớp đường (hỡnh 3.6)
Hỡnh 3.7. Truy vấn vựng trờn bản đồ tổng thể
* Giao diện thể hiện kết quả của truy vấn vựng trờn bản đồ tổng thể (hỡnh 3.7)
3.6. Nhận xột kết quả đạt được
Chương trỡnh đó được cài đặt và chạy thử nghiệm trờn cơ sở dữ liệu của bản đồ mạng lưới tuyến xe buýt Hà Nội. Chương trỡnh cài đặt một thuật toỏn lưu trữ cõy tứ phõn điểm (Point Quadtree).
Chương trỡnh cú thể thực hiện được trờn những cơ sở dữ liệu khỏc nhưng phải định dạng Shapefile. Bước đầu đỏp ứng được những yờu cầu cần thiết về lưu trữ dữ liệu dạng cõy, hiển thị và truy vấn trờn bản đồ thực tế.
Tuy nhiờn cũng cũn một số hạn chế chưa hiển thị được chiều của đường đi trờn bản đồ (do thời gian khụng cho phộp và yờu cầu đề tài khụng cần thiết), trong tương lai em sẽ khắc phục một số hạn chế cũn tồn tại.
KẾT LUẬN
GIS là một lĩnh vực ứng dụng rất rộng, hầu như mọi chuyờn ngành đều cú dớnh dỏn đến tọa độ địa lý thỡ ắt cú dựng đến GIS. Hiện nay ở nước ta GIS đó được sử dụng khỏ phổ biến. Tuy nhiờn cần phải sử dụng đỳng và trỏnh lóng phớ, chẳng hạn khụng nờn dựng cỏc hệ CAD để quản lý thụng tin địa lý, hoặc khụng nờn chọn cỏc hệ GIS cú khả năng mở kộm và ớt phổ dụng... Muốn dựng GIS tốt, thỡ việc tỡm hiểu giải phỏp Quản trị CSDL của cỏc hệ GIS là hết sức quan trọng và chủ chốt để cú thể sử dụng đỳng, cú giải phỏp hợp lý về chi phớ, đỏp ứng vừa đủ nhu cầu và thuận tiện phỏt triển mở rộng cho cỏc chuyờn gia khụng chuyờn tin muốn sử dụng GIS cho cụng việc chuyờn mụn. Việc tỡm hiểu này cũng là bước đầu hết sức căn bản và cần thiết cho sự phỏt triển ứng dụng phần mềm cú những giải phỏp đỳng đắn khi muốn phỏt triển một hệ thống phần mềm GIS cho riờng mỡnh.
Xuất phỏt từ thực tế đú Luận văn nhằm tỡm hiểu tổng quan về hệ thống thụng tin địa lý và cơ sở dữ liệu khụng gian, cỏc kỹ thuật lưu trữ dữ liệu khụng gian và ứng dụng của chỳng. Cụ thể luận văn đó đạt được cỏc kết quả chớnh sau:
Trỡnh bày tổng quan về hệ thống thụng tin địa lý và cơ sở dữ liệu khụng gian.
Hệ thống húa cỏc kỹ thuật chỉ mục và tỡm kiếm trong CSDL khụng gian. Trỡnh bày một số ứng dụng của cỏc kỹ thuật chỉ mục và tỡm kiếm trong
CSDL khụng gian và cài đặt kỹ thuật cõy tứ phõn điểm (Point Quadtree). Một số vấn đề cũn tồn tại trong luận văn là chưa đỏnh giỏ được hiệu suất lưu trữ của những kỹ thuật đó nờu.