Tích hợp dữ liệu GIS với hệ quản trị CSDL Oracle (Oracle

Một phần của tài liệu Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet (Trang 37 - 45)

Oracle Spatial là một sản phẩm của Oracle cho phép lu trữ dữ liệu không gian theo cả hai mô hinh quan hệ (Relational Model) và mô hình quan hệ - đối tợng (Object – Relational Model). Dữ liệu không gian đợc lu trữ dới dạng bảng và có thể đi kèm với các trờng thuộc tính khác.

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

III.1 Các phần tử dữ liệu

Phần tử (element) : là thành phần cơ bản xây dựng nên các đối tợng hình học

(geometries) bao gồm các kiểu khác nhau nh điểm (point), xâu đờng (line strings) và đa giác (polygon).

Dữ liệu điểm gồm một thành phần toạ độ, dữ liệu đờng gồm hai thành phần toạ độ (đờng thẳng) hoặc 3 thành phần toạ độ (đờng cong), xâu đờng gồm nhiều phần tử đờng, và dữ liệu đa giác gồm nhiều thành phần toạ độ theo chiều kim đồng hồ hoặc ngợc chiều kim đồng hồ.

Hình học (geometry) : Đối tợng hình học đợc biểu diễn bằng một tập có thứ tự

các phần tử nguyên thủy. Nó có thể gồm chỉ một phần tử hoặc một tập đồng nhất hoặc không đồng nhất của các phần tử. Tập đồng nhất là tập các phần tử cùng kiểu (ví dụ đều là điểm hoặc đều là đa giác) còn tập không đồng nhất thì ngợc lại các phần tử có thể khác kiểu nhau.

Lớp (layer) : Lớp là một tập có thể không đồng nhất của các đối tợng hình học

có cùng một tập thuộc tính. Trong GIS có thể biểu diễn các lớp về địa hình, lớp mạng lới đờng xá, cầu …

III.2 Mô hình truy vấn

Mô hình truy vấn đợc thực hiện theo mô hình hai lớp nhằm giải quyết các câu hỏi và phép kết nối không gian. Đây là mô hình thực hiện thông qua hai thao tác lọc khác nhau có thứ tự . Sơ đồ biểu diễn nh sau :

• Màng lọc thứ nhất cho phép chọn ra một tập các bản ghi ứng cử viên thông qua phép so sánh xấp xỉ hình học và chuyển cho màng lọc thứ hai. Mục đích của màng lọc này là rút gọn độ phức tạp tính toán cho màng lọc sau và do có chi phí tính toán thấp nên thực hiện rất nhanh.

Màng lọc thứ nhất sử dụng chỉ số không gian dựa trên cây tứ phân .

• Màng lọc thứ hai sẽ thực hiện các phép tính chính xác lên các đối tợng hình học và trả về tập kết quả cho câu hỏi. Màng lọc này có chi phí tính toán cao nhng đợc

Đỗ Đức Thảo -Tin Pháp K41 Trang 38

Tập lớn dữ liệu vào Tập ứng cử viên nhỏ hơn Màng lọc thứ hai Màng lọc thứ nhất Tập kết quả Tập kết quả

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

thực hiện trên một tập dữ liệu từ màng lọc thứ nhất chứ không phải là toàn bộ tập dữ liệu. Còn màng lọc thứ hai sử dụng hàm SDO_GEOM.RELATE() để đánh giá các quan hệ hình học.

Đôi khi không cần thực hiện đầy đủ cả hai màng lọc này, vì một số thao tác không cần một tập kết quả chính xác nhng cần có tốc độ nhanh nh phép Zoom trong ứng dụng bản đồ.

III.3 Các phơng pháp đánh chỉ số không gian

Đây là phơng pháp đánh chỉ số không gian dựa trên cây tứ phân, nhằm mục đích xấp xỉ các đối tợng hình học bằng các ô có kích thớc xác định (cố định hoặc biến đổi). Dựa trên kích thớc của ô, có hai phơng pháp đánh chỉ số là chỉ số xác định (Fixed Index) và chỉ số hỗn hợp (Hybrid Index).

Sơ đồ minh hoạ các phơng pháp chỉ số (SDO_LEVEL=2):

Fixed Indexing : đầu vào là tham số n=SDO_LEVEL cho biết số ô trên mỗi

chiều là 2n ô. Đầu tiên toàn bộ không gian toạ độ (giới hạn bởi các cận) đợc chia đôi theo mỗi chiều tạo thành 4 ô con. Tiếp theo mỗi ô trong 4 ô con này lại tiếp tục đợc chia thành 4 ô con khác. Quá trình phân hoạch dừng khi số lần phân chia đạt tới SDO_LEVEL. Mỗi ô đã đợc phân chia sẽ đợc gán cho một giá trị chỉ số duy nhất.

Hybrid Indexing : đầu vào ngoài SDO_LEVEL còn có SDO_MAXLEVEL và

SDO_NUMTILES. Đầu tiên Fixed Indexing sẽ đợc thực hiện. Sau đó nếu ô nào tiếp xúc với 2 geometry trở lên hoặc khi số ô bao phủ toàn bộ geometry đó còn nhỏ hơn tham số SDO_NUMTILES thì sẽ tiếp tục đợc chia 4. Và quá trình đó cứ tiếp tục cho tới khi hoặc số lần phân chia đã lớn hơn SDO_MAXLEVEL hoặc

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

khi toàn bộ geometry đã đợc bao phủ bởi các ô mà số ô là lớn hơn SDO_NUMTILES.

Tuy rằng mỗi phơng pháp đều có u và nhợc điểm riêng. Nhng phơng pháp chỉ số xác định thờng đợc sử dụng cho mô hình quan hệ còn phơng pháp chỉ số hỗn hợp thực hiện tốt cho mô hình quan hệ - đối tợng. Hai mô hình này sẽ đợc đề cập ở các mục sau.

III.4 Các quan hệ không gian (adsbygoogle = window.adsbygoogle || []).push({});

Các phơng pháp màng lọc sử dụng các quan hệ không gian giữa các thực thể trong CSDL. Các quan hệ này đợc dựa trên topology và khoảng cách. Khoảng cách giữa hai đối tợng không gian là khoảng cách nhỏ nhất giữa hai điểm bất kỳ giữa chúng. Các quan hệ về topology có thể đợc định danh bằng các tên sau :

• DISJOINT – Tách rời nhau.

• TOUCH – Chỉ giao nhau phần biên.

• OVERLAPBDYDISJOINT – Bên trong của một đối tợng giao với đờng biên và bên trong của một đối tợng khác nhng hai đờng biên không giao nhau. Ví dụ :

• OVERLAPBDYINTERSECT – Biên và bên trong của hai đối tợng là giao nhau.

• EQUAL – Hai đối tợng có cùng đờng biên và phía trong .

• CONTAINS – Đờng biên và bên trong của một đối tợng là nằm hoàn toàn bên trong một đối tợng khác.

• COVERS – Bên trong của một đối tợng là nằm hoàn toàn bên trong của một đối tợng khác nhng đờng biên của chúng giao nhau. Ví dụ:

• INSIDE – Ngợc lại với CONTAINS.

• COVEREDBY – Ngợc với COVERS.

• ANYINTERACT – Các đối tợng là không tách rời nhau.

III.5 Các mô hình dữ liệu

Oracle Spatial hỗ trợ 2 mô hình dữ liệu là mô hình quan hệ và mô hình quan hệ -

đối tợng.

III.5.1 Mô hình quan hệ - đối tợng (Object Relational Model)

a. Cấu trúc dữ liệu hình học

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

Dữ liệu hình học đợc lu trữ trong một cột của bảng (table) nh các dữ liệu khác nhng có kiểu là SDO_GEOMETRY. Tên bảng có thể tự đặt nhng phải có khoá chính cho bảng đó.

Kiểu SDO_GEOMETRY đã đợc định nghĩa sẵn nh sau :

CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER,

SDO_SRID NUMBER,

SDO_POINT SDO_POINT_TYPE,

SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);

SDO_GEOMETRY cho phép lu trữ dữ liệu hình học nh đối tợng điểm, đối tợng xâu đờng, đa giác, tập điểm, tập xâu đờng, tập đa giác và cả tập không đồng nhất của các phần tử.

SDO_GTYPE dùng để nhận biết kiểu Geomery, SDO_SRID để dành sử dụng trong tơng lai, SDO_POINT sử dụng khi đối tợng là một điểm . Còn hai kiểu SDO_ELEM_INFO và SDO_ORDINATE_ARRAY cho phép xác định từng phần tử trong Geometry.

b. Cấu trúc siêu dữ liệu hình học (Geometry Metadata)

Mỗi bảng (table) chứa dữ liệu có kiểu Geometry đợc xem nh là một Layer. Và để xác định kiểu toạ độ, các cận của layer này thì cần phải có một cấu trúc mô tả nó đ- ợc gọi là Geometry Metadata. Tập các Metadata đợc đặt trong một table riêng có tên là SDO_GEOM_METADATA. Oracle Spatial không tạo sẵn cho ta bảng này mà ngời sử dụng phải tự tạo và thêm dữ liệu vào bảng này.

Create Table SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30),

DIMINFO MDSYS.SDO_DIM_ARRAY);

MDSYS.SDO_DIM_ARRAY đã đợc định nghĩa sẵn nh sau : (adsbygoogle = window.adsbygoogle || []).push({});

Create Type SDO_DIM_ARRAY as VARRAY(4) of SDO_DIM_ELEMENT;

Create Type SDO_DIM_ELEMENT as OBJECT ( SDO_DIMNAME VARCHAR2(64),

SDO_LB NUMBER NOT NULL, SDO_UB NUMBER NOT NULL, SDO_TOLERANCE NUMBER NOT NULL);

c. Nạp dữ liệu (Loading Process)

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

Để tạo dữ liệu không gian cần phải nạp dữ liệu vào các table có chứa kiểu SDO_GEOMETRY tơng ứng. Có 2 cách nạp dữ liệu :

Bulk loading of data : Tiến trình này thờng sử dụng cho nạp một số lợng lớn dữ liệu vào trong CSDL thông qua trình tiện ích SQL* Loader.

Transactional inserts : Tiến trình này sử dụng để chèn một lợng nhỏ dữ liệu vào trong CSDL thông qua lệnh SQL ‘INSERT’.

d. Đánh chỉ số không gian

Để đánh chỉ số không gian cần thực hiện lệnh CREATE INDEX và việc tạo chỉ số xác định hay chỉ số hỗn hợp đợc thực hiện thông qua 2 tham số vào là SDO_LEVEL và SDO_NUMTILES. Chỉ số sẽ đợc tự động duy trì thông qua các thủ tục INSERT hoặc UPDATE.

ý nghĩa các tham số :

SDO_LEVEL SDO_NUMTILES Thực hiện

Không xác định Không xác định Lỗi

>=1 Không xác định Chỉ số xác định (fixed-size tiles) >=1 >=1 Chỉ số hỗn hợp (hybrid indexing) Không xác định >=1 Không hỗ trợ

Ngoài ra còn một số tham số khác nh SDO_MAXLEVEL, physical storage params, …

e. Một số ví dụ :

1.Tạo một table chứa dữ liệu không gian :

CREATE TABLE Parks (Name varchar2(32),Shape MDSYS.SDO_GEOMETRY)

2.Xây dựng bảng siêu dữ liệu hình học :

CREATE TABLE SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30),

COLUMN_NAME VARCHAR2(30),

DIMINFO MDSYS.SDO_DIM_ARRAY)

INSERT INTO SDO_GEOM_METADATA VALUES( 'Parks','Shape',

MDSYS.SDO_DIM_ARRAY(

MDSYS.SDO_DIM_ELEMENT('X',0,100,0.005), MDSYS.SDO_DIM_ELEMENT('Y',0,100,0.005) ))

3. Tạo dữ liệu bằng lênh INSERT :

INSERT INTO PARKS VALUES(

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet 1,MDSYS.SDO_GEOMETRY(3,NULL,NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,3,1,19,3,3), MDSYS.SDO_ORDINATE_ARRAY(6,15, 10,10, 20,10, 25,15, 25,35, 19,40, 11,40, 6,25, 6,15, 12,15, 15,24) )) 4.Tạo chỉ số (index)

CREATE INDEX PARKS_FIXED ON PARKS(SHAPE) INDEXTYPE IS MDSYS.SPATIAL_INDEX

PARAMETERS('SDO_LEVEL = 8') (adsbygoogle = window.adsbygoogle || []).push({});

III.5.2 Mô hình quan hệ (Relational Model) a. Cấu trúc dữ liệu

Mô hình quan hệ lu trữ dữ liệu không gian của mỗi lớp (layer) trong 4 bảng. Cấu trúc của mỗi bảng là nh sau :

Bảng 1: <layername>_SDOLAYER :

Tên cột Kiểu dữ liệu ý nghĩa

SDO_ORDCNT NUMBER Tổng số toạ độ trên mỗi hàng trong bảng

<layername>_SDOGEOM

SDO_LEVEL NUMBER Số mức đợc phân hoạch

SDO_NUMTILES NUMBER Số ô trên mỗi đối tợng hình học

SDO_MAXLEVEL NUMBER Mức lớn nhất có thể phân hoạch

SDO_COORDSYS VARCHAR Tên hệ thống toạ độ (POSC , OGIS)

Bảng 2 : <layername>_SDODIM (Table hoặc View) :

Tên cột Kiểu dữ liệu ý nghĩa

SDO_DIMNUM NUMBER Chiều mà hàng này tham chiếu (1,2..)

SDO_LB NUMBER Cận dới của chiều này (-90 với vĩ độ)

SDO_UB NUMBER Cận trên của chiều này(90 với vĩ độ)

SDO_TOLERANCE NUMBER Dung sai và phải lớn hơn 0

SDO_DIMNAME VARCHAR Tên chiều (ví dụ x,y hoặc vĩ độ,kinh độ)

Bảng 3 : <layername>_SDOGEOM (Table hoặc View) :

Tên cột Kiểu dữ liệu ý nghĩa

SDO_GID NUMBER Định danh duy nhất cho mỗi Geomtry

SDO_ESEQ NUMBER Đếm mỗi phần tử trong Geometry (Element

SEQence)

SDO_ETYPE NUMBER Kiểu phần tử nguyên thuỷ (1 : kiểu điểm 2 :

xâu đờng, 3 : đa giác, 4 và 5 : không hỗ trợ).

SDO_SEQ NUMBER Số thứ tự bản ghi tạo nên phần tử

SDO_X1 NUMBER Giá trị toạ độ X thứ nhất

SDO_Y1 NUMBER Giá trị toạ Y thứ nhất

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

NUMBER

SDO_Xn NUMBER Giá trị toạ độ X thứ n (adsbygoogle = window.adsbygoogle || []).push({});

SDO_Yn NUMBER Giá trị toạ độ Y thứ n

Số cột lớn nhất trong bảng này là 1000 cột.

Bảng 4 : <layername>_SDOINDEX (Table) :

Tên cột Kiểu dữ liệu ý nghĩa

SDO_GID NUMBER Định danh số cho mỗi Geometry

SDO_CODE RAW ID của ô phủ lên SDO_GID đợc tạo nh

kiểu RAW(255)

SDO_MAXCODE RAW Tăng thêm độ dài mã cho SDO_CODE

SDO_GROUPCODE RAW Biểu diễn chỉ số phân hoạch theo

SDO_LEVEL

SDO_META RAW Không cần thiết cho truy vấn không gian.

Nó cung cấp thông tin để tìm đờng biên của ô.

b. Nạp dữ liệu

Tiến trình nạp dữ liệu cũng chia là 2 cách :

• Bulk loading of data

• Transactional inserts

c. Tạo chỉ số không gian

Để tạo chỉ số không gian trớc hết tạo bảng chỉ số <layername>_SDOINDEX nh sau :

• Với chỉ số xác định (Fixed Indexing)

SQL> create table <layername>_SDOINDEX 2 (

3 SDO_GID number, 4 SDO_CODE raw(255) 5 );

• Với chỉ số hỗn hợp (Hybrid Indexing)

SQL> create table <layername>_SDOINDEX 2 ( 3 SDO_GID number, 4 SDO_CODE raw(255), 5 SDO_GROUPCODE raw(255), 6 SDO_MAXCODE raw(20), 7 SDO_META raw(255), 8 );

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

Để tạo chỉ số ta gọi hàm SDO_ADMIN.POPULATE_INDEX() với các tham số vào là tên của lớp (<layername>_SDOLAYER). Các tham số SDO_LEVEL , SDO_NUMTILES và SDO_MAXLEVEL đợc xác trong bảng này.

Nếu dữ liệu bị xoá hay đợc cập nhật , ta có thể gọi thủ tục SDO_ADMIN.UPDATE_INDEX() để cập nhật chỉ số. Tham số cho thủ tục này là tên lớp và SDO_GID của geometry tơng ứng.

Ví dụ :

Tạo chỉ số cho lớp ROADS : Sdo_admin.populate_index(“ROADS“);

Giả sử một geometry có SDO_GID=1000 đợc thêm vào bảng không gian. Ta cập nhật chỉ số bằng lệnh : sdo_admin.update_index(“ROADS“,1000);

CHƯƠNG III TRUYềN THÔNG MạNG MáY TíNH– (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet (Trang 37 - 45)