Cấu trúc dữ liệu dữ liệu không gian

Một phần của tài liệu Một số vấn đề cơ sở dữ liệu không gian (Trang 49)

Việc định nghĩa ADT không gian cho phép thể hiện tất cả các lược đồ tham chiếu. Nhưng cũng không có nghĩa là nó hoàn toàn đầy đủ cho những ứng dụng phức tạp, đơn giản nó chỉ minh họa làm thế nào các đối tượng địa lý được truy vấn và mở rộng trong môi trường cơ sở dữ liệu.

Khái niệm kiểu dữ liệu không gian trừu tượng liên quan trực tiếp đến sự khác nhau giữa hai khái niệm là mô hình dữ liệu địa lý (geographic data model) và mô hình dữ liệu không gian (spatial data model). Trong hình 3.1 là một ví dụ về kiểu dữ liệu region, biểu diễn một vùng. Mô hình dữ liệu không gian là lớp

dưới cùng, nó cung cấp các cấu trúc dữ liệu cần thiết để biểu diễn một vùng, cũng như các thao tác trên các cấu trúc này.

Tại lớp trên cùng, những chi tiết trên đã bị ẩn đi, chỉ còn lại các đối tượng địa lý. Lúc này region xuất hiện như một kiểu dữ liệu, giống như các kiểu thông dụng float hay string. Một đối tượng địa lý, ví dụ một thành phố, có thể được mô tả bằng các giá trị và được quản lý bởi hệ quản trị cơ sở dữ liệu.

Mô hình dữ liệu địa lý độc lập với mô hình dữ liệu không gian, cho phép ứng dụng lựa chọn bất kì mô hình dữ liệu nào trong số spagetti, network hay

tôpô. Hình 3.2. các đối tượng o1, o2, o3 được lưu với biểu diễn tôpô hoặc là biểu

diễn kiểu spagetti. Các toán tử với hai biểu diễn này là như nhau tạo nên sự

thống nhất đối với người sử dụng.

City Region float string [...] [...] { ... }

Mô hình dữ liệu địa lý

Cấu trúc dữ liệu +

Thao tác Mô hình dữ liệu không gian

Các kiểu dữ liệu cơ bản như điểm, đoạn thẳng, polyline, miền được biểu diễn lần lượt như sau: Point (0-D), Line, polyline (1-D), Region (2-D).

Với các kiểu dữ liệu không gian cơ bản trên, cần xác định các thao tác tương ứng cho chúng. Đây là một yêu cầu không đơn giản. Hơn nữa, kết quả thực hiện các thao tác này phải hoặc là một trong các kiểu nguyên tử (như số thực, số nguyên...) được hỗ trợ bởi hệ quản trị cơ sở dữ liệu hoặc là một trong các kiểu dữ liệu trừu tượng đã định nghĩa. Xét ví dụ sau: Xác định giao của hai đa giác A và B hình 3.3. Mỗi đa giác bao gồm một tập hữu hạn các điểm. Nếu xem giao của hai đa giác là “tập các cả các điểm chung” thì kết quả có thể là:

a) Hai đa giác mà trong đó, mỗi đa giác có thể được biểu diễn như là một đối tượng có kiểu region;

b) Hoặc hai đa giác và một đường;

c) Hoặc hai đa giác, một đường, và một điểm.

Mô hình dữ liệu địa lý

O1 O2 O1 O2 O3

Topological Spagetti

Mô hình dữ liệu không gian

Để đơn giản, ta chấp nhận kết quả là là một tập đa giác (trường hợp b), mặc dù khi đó, kết quả không thật sự chính xác nhưng nó thuộc một trong những kiểu đã được định nghĩa.

Các yêu cầu về mặt chức năng của hệ thống thông tin địa lý và các ứng dụng không gian là rất lớn, thậm chí vượt quá khả năng đáp ứng của cơ sở dữ liệu. Việc xây dựng các cấu trúc dữ liệu và các thao tác tương ứng của chúng sẽ cố gắng đáp ứng tốt nhất các yêu cầu của những ứng dụng GIS thông dụng. Có rất nhiều toán tử được định nghĩa cho những kiểu dữ liệu không gian khác nhau như: Điểm, đọan thẳng, miền, sau đây là các toán tử cơ sở.

 Toán tử chỉ ra các mối quan hệ logic như Đối với miền (Region):

o PointInRegion: region  point bool (Kiểm tra điểm có nằm

trong miền không),

Hình 3.3. Kết quả phép giao A∩B (a) có thể là: (b) hai đa giác, (c) hai đa giác và một đoạn thẳng, (d) hai đa giác, một đoạn thẳng và một

điểm (a) (b) (c) (d) . (b) (c) (d)

o Overlaps: region region bool (Kiểm tra hai miền có giao

nhau không),

o OverLapsRect: region  rectangle bool (Kiểm tra miền có

giao với hình chữ nhật không),

o Meets: region  region bool (Kiểm tra hai miền có kề nhau

không).

Đối với đoạn thẳng (Line):

o PointInLine: line point bool (Kiểm tra điểm có thuộc

đoạn thẳng không),

o OverlapLR: Line region bool (Kiểm tra đoạn thẳng có

giao miền không).

 Các toán tử trả về là kiểu không gian (đối với Region):

o Clipping: region  rectangle region (Tính toán phần giao

của miền và hình chữ nhật),

o Intersection: region  region region (Trả về phần giao của

hai miền).

 Các toán tử không gian trả về giá trị số: Đối với miền (region):

o Area: region  Real (Trả về kích thước của miền),

o Distance: : region  point real (Tính toán khoảng cách giữa

điểm với đường biên miền). Đối với đoạn thẳng (line):

o Length: line  Real (Tính toán độ dài đoạn thẳng).

o RegionUnion: {region}  region (Hợp của các miền và giá trị

trả về cũng là miền).

 Các toán tử phức tạp khác như: overlay, buffering, …

Một phần của tài liệu Một số vấn đề cơ sở dữ liệu không gian (Trang 49)

Tải bản đầy đủ (PDF)

(119 trang)