4.2.2.1. Giới thiệu
Bài toán xây dựng vùng đệm đòi hỏi xác định vị trí không gian các điểm trên mặt phẳng cách tập đối tượng không gian không vượt quá khoảng cách .
Hình 4.2. Mô phỏng vùng đệmcủađiểm,đường và vùng
hay các cung. Để biểu diễn và xử lý thao tác trên các cung khá bất tiện nên người ta thường xấp xỉ chúng như các đoạn gấp khúc với một sai số xác định trước.
Hình 4.3. Mô phỏngxấpxỉ các cung tròn bởiđa giác đều
Trong đại đa số các thuật toán xây dựng vùng đệm đầu tiên thực hiện tạo vùng đệm cho từng đối tượng không gian riêng biệt, sau đó sử dụng thuật toán lần lượt hội các vùng riêng biệt để tạo thành kết quả cuối cùng. Do độ phức tạp của thao tác hội hai vùng có đỉnh trong trường hợp xấu nhất là , nên độ phức tạp xây dựng vùng đệm có đoạn, mỗi đoạn có đỉnh trong trường hợp xấu nhất sẽ là và thực tế các chức năng này thực thi rất chậm. Ta có thể áp dụng thuật toán xây dựng lưới tam giác Delaunay ràng buộc để tối ưu quá tŕnh tạo vùng đệm lên rất nhiều.
d
Hình 4.4. Quá trình lấy vùng đệmcủađốitượng polyline với khoảng cách d
4.2.2.2. Thuật toán xây dựng vùng đệmdựa trên lưới tam giác
Bài toán tạo vùng đệm. Cho trước tập hợp các đối tượng không gian cơ bản theo chuẩn OpenGIS (Point, Polyline, Polygon, Multi-Point, Multi-Polyline, Multi- Polygon, Geometry Collection). Cho trước bán kính .
Bước1: Phân rã các đối tượng Multi-Point, Multi-Polyline, Multi-Polygon, Geometry Collection thành tập các đối tượng đơn giản hơn Point, Polyline, Polygon.
Bước 2: Đối với tất cả các đỉnh đầu vào của các đối tượng Point, Polyline và Polygon ta xấp xỉ bằng các đa giác đều quanh nó với bán kính .
Bước 3: Đối với các đoạn thẳng của đối tượng Polyline và ranh giới của Polygon ta xây dựng các khung chữ nhật mà cùng kết hợp với các đa giác đều tạo ra ở bước trước sẽ tạo ra các vùng đệm cho mỗi đoạn thẳng của Polyline và Polygon.
Bước 4: Tất cả các đa giác đều, các khung chữ nhật và các Polygon ban đầu sẽ trở thành dữ liệu vào cho thuật toán xây dựng lưới tam giác Delaunay ràng buộc.
Bước 5: Tất cả các tam giác dù chỉ tham gia vào bất kỳ Polygon nào sẽ được đánh dấu tham gia vùng đệm kết quả. Kết thúc thuật toán.
4.2.2.3. Độ phức tạp thuật toán
Bước phức tạp nhất trong thuật toán tạo vùng đệm là bước xây dựng lưới tam giác Delaunay ràng buộc. Nếu chúng ta xấp xỉ vùng đệm tròn là đa giác đều gồm đoạn thẳng, thì số lượng đỉnh tham gia vào lưới tam giác sẽ là , ở đây – số lượng đỉnh của tập đối tượng không gian. Bởi vậy, độ phức tạp trong trường hợp xấu nhất là , còn độ phức tạp trung bình là .
(a) (b)
Minh họa lấy vùng đệm của nước Anh tạo từ hai đối tượng Polyline gồm 702 điểm và 1155 điểm. Vùng đệm của điểm lần lượt được xấp xỉ đa bằng giác đều với 32 điểm, 64 điểm và 128 điểm. Bán kính vùng đệm r lần lượt là 100, 200 và 500. Thời gian thực thi tính theo đơn vị ms. Thuật toán lấy vùng đệm GEOS lấy từ [80] . Qua bảng so sánh, nhận thấy rằng thuật toán lấy vùng đệm dựa trên lưới TIN có tốc độ vượt trội.
Số lượng điểm trên đường tròn
32 64 128
Các phương pháp lấy vùng đệm Bán kính
vùng đệm r
GEOS TIN GEOS TIN GEOS TIN
100 3042 453 3697 734 5241 1328
200 9001 781 10732 1062 14288 1765
500 14352 2375 15615 3000 18408 4500
Bảng 4.1.Thời gian thực thi thuật toán lấy vùng đệmcủadữ liệunước Anh
Hình 4.7. Lấy vùng đệmcủa đường Hình 4.8. Lấy vùng đệmcủa vùng