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, …