3.5.2.1. Giới thiệu
Trong hệ thống thông tin du lịch, người dùng lưu động rất cần biết các điểm quan tâm (Points Of Interest - POIs) nằm trên đường đi hoạch định trước. Ta có thể cho một ví dụ đơn giản như sau: liệt kê các cây xăng xung quanh theo tuyến đường từ thành phố Hồ Chí Minh ra Hà Nội. Từ bài toán thực tế trên, ta có thể phát biểu bài toán tìm các đối tượng xung quanh tuyến đường hoạch định (Path based Range Query - PRQ) như sau: Cho một tập hợp điểm , cho một tuyến đường hoạch định được mô tả bởi tập điểm và khoảng cách , ta cần tìm tất cả các điểm của tập nằm trong vùng đệm của (
) – ta hoặc có thể nói là tìm tất cả những điểm cách tuyến đường một khoảng nhỏ hơn . Trong phần này, chúng tôi sẽ trình bày tổng quan một số phương pháp đề cập để giải quyết bài toán trên và các cải tiến của mình.
Định nghĩa 4. Tuyến đường hoạch định: có thể xác định bằng nhiều cách và mô tả bởi tập điểm . Nó có thể là đường đi ngắn nhất (hoặc nhanh nhất) giữa hai vị trí xác định, hay tuyến đường với tên xác định…
Định nghĩa 5. Điểm lân cận tuyến đường: là những điểm có khoảng cách nhỏ hơn hoặc bằng khoảng cách so với tuyến đường hoạch định – hoặc ta có thể nói là điểm thuộc vùng đệm .
Bài toán 7: Cho một tập hợp điểm , một điểm truy ấn , và khoảng cách tìm kiếm , khi đó bài toán truy vấn trong phạm vi RQ(p,d) là tìm tất
cả các điểm trong nằm trong phạm vi của điểm , ví dụ: , trong đó là đường tròn tâm là và bán kính
, .
Bài toán 8: Cho một tập hợp điểm , tuyến đường truy vấn gồm điểm và khoảng cách tìm kiếm . Khi đó, bài toán tìm
kiếm xung quanh = , mà là vùng
đệm của tuyến đường trong khoảng cách .
Một phương pháp ngây thơ có thể thực hiện qua 2 công đoạn sau đây: Xác định vùng đệm của tuyến đường hoạnh định .
Kiểm tra từng điểm của có nằm trong vùng đệm hay không. Tốc độ thực thi của thuật toán lấy vùng đệm ở công đoạn thứ nhất là khá chậm khi càng lớn,công đoạn thứ hai đòi hỏi phải vét cạn toàn bộ tập nên cách tiếp cận này không khả thi cho các ứng dụng thực tế khi cả và là rất lớn đến hàng triệu điểm. Chúng tôi sẽ lần lượt trình bày một số cách tiếp cận khác để giải quyết bài toán này.
3.5.2.2. Thuật toán tìm đốitượng xung quanh tuyến đườnghoạchđịnhdựa trên R-Tree (R-PRQ)
3.5.2.2.1. Giớithiệu
Dưới đây đề cập một cách tiếp cận đơn giản là sử dụng cây chỉ mục R-Tree, ta có thể tăng tốc việc xác định các điểm nằm trong vùng đệm mà không cần phải xây dựng vùng đệm của tuyến đường đã cho. Một thuật toán dựa trên cây chỉ mục R- Tree lần đầu tiên được đưa ra bởi H.K. Ng, H W Leong và Ngai Lam Ho đề cập trong công trình [64] . Điểm mấu chốt của thuật toán này là khi ta xử lý xuống sâu trong R-tree, số lượng điểm truy vấn cần xử lý với mỗi nút giảm xuống đáng kể (khi MBR càng nhỏ). Tuy nhiên, thuật toán đó không đáp ứng chính xác nhu cầu tìm kiếm chính xác do quá trình tìm kiếm chỉ thực hiện ở các đỉnh nút của tuyến đường hoạch định và nếu các đỉnh của một đoạn cách xa nhau hơn nhiều so với khoảng
tuyến đường hoạch định với các đỉnh kế tiếp cách nhau khá mịn (khoảng cách đó phải không lớn hơn ).
Tác giả đưa ra thuật toán chính xác giải quyết bài toán thông qua hai bước như sau (đã công bố trong công trình [5] ):
- Dựa trên cấu trúc chỉ mục R-tree lọc thô các điểm trong cơ sở dữ liệu.
- Hậu xử lý loại bỏ các điểm trùng trong quá trình tìm kiếm ở bước trên dựa trên cấu trúc B-tree.
3.5.2.2.2. Thuật toán
Cho đoạn thẳng xác định bởi hai điểm đầu mút . Cho đường tròn , ở đây : tâm đường tròn và : bán kính
Tịnh tiến đoạn thẳng về tọa độ ta có:
, , , (14)
Định nghĩa:
, , , (15)
Tính biểu thức:
(16)
Nếu thì đường tròn sẽ cắt đường thẳng tựa trên , . Với một số kiểm tra bổ sung ta dễ dàng xác định đoạn thẳng , có cắt đường tròn tâm bán kính hay không.
(x1,y1)
(x2,y2)
(x1,y1) (x2,y2) (x1,y1)
(x2,y2) Không cắt Một điểm cắt Hai điểm cắt
(xc,yc) r
d d d r R d
Hình 3.16. Mô phỏngthuật toán R-PRQ xác định các điểmthuộc vùng đệmcủa P
Thuật toán R-PRQ:
Bước 1: Tạo khung chữ nhật chứa tất cả các điểm quan tâm vào cây R-tree.
Bước 2: Ứng với từng đoạn trong đường đi hoạch định ta xét, nếu chưa kết thúc đường đi thì ta tiếp tục qua Bước 3, ngược lại ta chuyển qua Bước 6.
Bước 3: Tạo khung bao chữ nhật cho từng đoạn đường đang xét sau đó nới rộng một đoạn để phù hợp với bán kính tìm kiếm (Hình 3.16).
Bước 4: Kiểm tra xem khung chữ nhật mở rộng đó có phủ lên các đối tượng nào trong R-tree. Lưu các đối tượng trên nếu đường tròn quanh tâm mỗi đối tượng với bán kính d có cắt hay tiếp xúc các đoạn của tuyến đường hoạch định (Hình 3.16).
Bước 5: Tiếp tục quay lại Bước 2.
Bước 6: Trả về các điểm quan tâm đã lưu lại ở bước trên. Kết thúc thuật toán.
3.5.2.2.3. Độphứctạpthuật toán
Độ phức tạp của thuật toán trên phụ thuộc vào sự phân bố các đối tượng trong cơ sở dữ liệu không gian, và độ lớn khoảng cách của .
Giả sử tuyến đường hoạch định có phân đoạn là , số lượng đối tượng trong cơ sở dữ liệu không gian được sắp chỉ mục theo cây R-tree là . Ta xét trường hợp xấu nhất của thuật toán này là mỗi phân đoạn của P đều tìm thấy M đối tượng thì độ phức tạp tổng hợp của thuật toán sẽ là: . Nhưng ở thực tế ứng dụng thì
Vậy ta có thể xem như độ phức tạp thực tế xấp xỉ là . Nhưng để cho cách giải quyết bài toán một cách hoàn thiện nhất, ta nên tìm ra một phương pháp để có thể khắc phục được nhược điểm của R-tree khi ở trường hợp xấu nhất.
3.5.2.3. Thuật toán tìm đốitượng xung quanh tuyến đườnghoạchđịnhdựa trên lưới tam giác (T-PRQ)
3.5.2.3.1. Giớithiệu
Trong mục này tác giả đề cập một hướng tiếp cận mới khá đơn giản nhưng hiệu quả để tìm các đối tượng quan tâm xung quanh tuyến đường hoạch định dựa trên lưới tam giác Delaunay [5] . Thuật toán này bảo đảm tìm chính xác tất cả các đối tượng thỏa điều kiện của bài toán đặt ra và tốc độ thực thi rất nhanh. Hơn nữa, thuật toán này cho phép cập nhật động các đối tượng quan tâm (xóa hay thêm các vị trí mới). Cách tiếp cận mới ưu việt hơn cách lọc sử dụng cây R-Tree trong tình huống khung bao chữ nhật chứa quá nhiều đối tượng không cần thiết như ví dụ trong Hình 3.17.
Hình 3.17. Khung bao mở rộng quanh đoạnthẳngchứahầuhếttậpđiểmđầuvào
3.5.2.3.2. Thuật toán
Bước 1: Với đường đi hoạch định , ta lấy từng cặp điểm trong ra xét (ví dụ , …, ), cho đến khi duyệt qua hết tất cả các cặp điểm thì dừng. Với mỗi cặp điểm ta tìm tất cả các tam giác bị cắt bởi đoạn .
Bước 2: Lưu tất cả các đỉnh của các tam giác bị cắt ở trên vào danh sách đỉnh .
Bước 3: Với mỗi đỉnh trong danh sách ở Bước 2, thực hiện loang tới các đỉnh kề mà đường tròn bán kính d có tâm tại các đỉnh đó còn cắt đoạn .
Bước 4: Các đỉnh thỏa điều kiện của Bước 3 sẽ được lưu vào danh sách đỉnh kết quả trả về. Quay lại Bước 1 cho đến khi tất cả các đoạn thẳng của đã được xét. Kết thúc thuật toán.
Hình 3.18. Mô phỏngthuật toán T-PRQ
3.5.2.3.3. Độphứctạpthuật toán
Độ phức tạp của thuật toán trên phụ thuộc vào Bước 1 và Bước 4. Nếu sử dụng kỹ thuật xác định tam giác chứa điểm q trong thuật toán xây dựng lưới tam giác Delaunay theo phương pháp chèn đỉnh tuần tự ở Chương 2 thì độ phức tạp là cho đoạn thẳng của tìm giao với các tam giác của lưới. Bước 2 và 3 cũng cho độ phức tạp là . Ở Bước 4, với bán kính d không lớn thì số đối tượng tìm được có bậc là và do phải loại bỏ các đối tượng giao ở các đỉnh của tuyến đường bằng cây B-Tree nên độ phức tạp tổng cộng của toàn thuật toán sẽ là .
Thời gian thực thi (s) thuật toán tìm kiếm đối tượng xung quanh tuyến đường hoạch định từ tập 1.000.000 đối tượng ngẫu nhiên trong khoảng (0 -
4.000.000.000)
Số lượng đoạn của tuyến đường bằng 4 [Hình 3.20].
Bán kính tìm kiếm (R) Thuật toánR-PRQ Thuật toánT-PRQ
50.000.000 6.719 0.756 25.000.000 2.562 0.343 12.500.000 1.5000 0.172 6.250.000 0.890 0.094 4.000.000 0.843 0.078 2.000.000 0.829 0.047 1.000.000 0.797 0.032
Bảng 3.6.Thời gian thực thi thuật toán tìm kiếmđốitượng xung quanh tuyến đường hoạchđịnh
Hình 3.19. Biểuđồthời gian thực thi thuật toán tìm kiếmđốitượng xung quanh
tuyếnđườnghoạchđịnh
3.5.2.3.4. Ứngdụngthựctiễn
Thuật toán trình bày trên đã được sử dụng để tìm các vị trí quan tâm dọc tuyến đường xác định trong trang web http://www.vietbando.com. Tốc độ thực thi thực tế của thuật toán hoàn toàn đáp ứng khả năng tra cứu trực tuyến của người dùng.
Hình 3.20. Mô phỏngthuật toán tìm đối tượng xung quanh tuyếnđườnghoạch
định
Hình 3.21. Kếtquảtìmcáccửahàng dọcđườngĐồngKhởivớibánkính 100
mét
3.6. Kết luận
Trong chương này, tác giả đã đã hiện thực sự tích hợp dữ liệu không gian và dữ liệu thuộc tính vào một hệ thống GeoBase duy nhất dựa trên một tập tin hệ thống. Trong hệ thống này, tác giả đã hiện thực cài đặt hai cấu trúc chỉ mục quan trọng là B-tree cho dữ liệu thuộc tính và R-tree cho dữ liệu không gian. Các đối tượng không gian lưu trữ trong GeoBase đều tuân thủ chuẩn OpenGIS kèm theo các phép toán cơ bản của chúng. Hệ quản trị cơ sở dữ liệu không gian GeoBase có khả năng chứa hàng terabyte dữ liệu và có tốc độ truy cập rất nhanh.
Ngoài ra, tác giả cũng đề cập một số khái niệm cơ bản về khai thác dữ liệu, đặc biệt chú trọng đến các vấn đề khai thác dữ liệu không gian. Một số bài toán phân tích không gian nền tảng đã được đề cập đến ở đây như bài toán tìm đối tượng lân cận, bài toán tìm đối tượng theo tuyến đường. Đối với bài toán tìm k-lân cận, tác giả đã mở rộng khả năng tìm kiếm đồng thời hiệu quả cho cả 3 đối tượng không gian cơ bản điểm, đường và vùng. Bài toán tìm đối tượng dọc tuyến là rất quan trọng và theo thông tin đến nay của tác giả thì mới có website www.vietbando.com áp dụng. Với việc chọn lựa mô hình biểu diễn mô hình dữ liệu không gian phù hợp. Hiệu suất thực thi các bài toán mà tác giả hiện thực được cải thiện đáng kể và chúng đã
được vận hành trong các ứng dụng thực tế, đặc biệt là trong các ứng dụng khai thác thông tin trực tuyến. Các nghiên cứu kế tiếp sẽ tập trung vào các hướng sau:
Tích hợp chức năng tra cứu không gian đồng thời với các thông tin ngữ nghĩa bổ sung.
Thực hiện song song hóa một số thuật toán đã nêu ra ở trên. Hỗ trợ khả năng truy vấn cho các chức năng đã cải tiến.
Chương 4. ỨNG DỤNG ĐỂ GIẢI QUYẾT CÁC BÀI TOÁN GIS
4.1. Giới thiệu
Trong chương này, tác giả trình bày một số bài toán GIS cơ bản và nâng cao được sử nhiều trong các ứng dụng. Đối với nhóm bài toán cơ bản, tác giả trình bày hai bài toán khá phổ dụng là bài toán tạo vùng đệm của đối tượng không gian (điểm, đường, vùng) và bài toán hiệu chỉnh dữ liệu không gian. Cả hai bài toán này đều dựa trên lưới tam giác Delaunay. Đối với bài toán tạo vùng đệm, cách tiếp cận sử dụng lưới tam giác Delaunay ràng buộc để xây dựng vùng đệm là rất khác biệt so với truyền thống và tạo ra tốc độ vượt trội so với các cách tiếp cận truyên thống khác như lấy hội liên tục của vùng mỗi phân đoạn. Để hoàn tất thuật toán này thì chúng ta cần giải quyết một bài toán nhỏ là bài toán tạo các vùng từ lưới tam giác. Cho bài toán hiệu chỉnh dữ liệu thì cách tiếp cận sử dụng lưới tam giác Delaunay cho tập điểm kiểm soát là không mới nhưng khả năng xác định nhanh một điểm thuộc tam giác nào trong lưới tạo cho phép khả năng hiệu chỉnh trực tiếp không cần qua công đoạn tiền xử lý. Điều này cho phép chúng ta chồng hàng loạt ảnh vệ tinh với các điểm nắn để làm nền cho quá trình số hóa bản đồ. Đối với nhóm bài toán GIS nâng cao thì các bài toán phân tích mạng tuyến đóng vai trò tối quan trọng. Việc tạo một cách tương đối tự động, nhanh mạng giao thông theo mô hình topology từ tập dữ liệu thô sẽ tiết kiệm rất nhiều chi phí nhân công bỏ ra. Tác giả đã xây dựng thuật toán phân đoạn hóa và thiết lập mạng giao thông dựa trên lưới tam giác Delaunay ràng buộc với tốc độ thực thi rất nhanh. Kết quả này đã được tác giả công bố trong công trình [4] . Nó là tiền đề để thực hiện các bài toán tìm kiếm tối ưu trên mạng giao thông như bài toán tìm đường đi tối ưu (ngắn nhất, nhanh nhất...), tìm k-lân cận theo mạng tuyến...Tác giả đã cải tiến thuật toán tìm đường đi tối ưu dựa theo sự phân cấp kiểu đường và các hạn chế hay ràng buộc thường gặp trong thực tế khi lưu thông. Bài toán tạo lưới bề mặt 3D là một ứng dụng hiệu quả của lưới tam giác Delaunay cho tập điểm độ cao hay lưới bình độ mà tác giả đề cập ở cuối chương.