
PHỤ LỤC – MySQL với phần mở rộng hỗ trợ cho OpenGIS
152
Một GeometryCollection là 1 tập gồm 1 hoặc nhiều đối tượng của bất kì
lớp nào.
Các thành phần trong 1 Geometry Collection phải có cùng 1 hệ thống
điểm.
Lớp MultiPoint
Một MultiPoint là tập hợp các Point. Các điểm này có thể được nối với
nhau theo bất kì thứ tự nào
Ví dụ về MultiPoint: Trong bản đồ thế giới, 1 MultiPoint có thể mô tả 1
tập hợp các hòn đảo nhỏ
Lớp MultiCurve: MultiCurve là 1 tập hợp các đối tượng Curve.
Lớp MultiLineString:
MultiLineString là 1 MultiCurve với các thành phần là các LineString
Ví dụ về MultiLineString: Trong bản đồ, MultiLineString có thể dùng để
biểu diễn 1 hệ thống sông ngòi hoặc 1 hệ thống đường cao tốc.
Lớp MultiSurface: MultiSurface là 1 GeometryCollection với các thành phần
là các đối tượng Surface.
Lớp MultiPolygon
MultiPolygon là 1 MultiSurface với các đối tượng là các Polygon.
Ví dụ về MultiPolygon: Trong bản đồ thì MultiPolygon có thể dùng để
biểu diễn 1 hệ thống các ao hồ.
Các Polygon của 1 MultiPolygon không được phép có các thuộc tính
interior giao nhau .
Định dạng dữ liệu không gian trong MySQL
Phần này mô tả các định dạng dữ liệu không gian được dùng để thể hiện các
đối tượng địa lý trong các câu truy vấn.

PHỤ LỤC – MySQL với phần mở rộng hỗ trợ cho OpenGIS
153
Các loại định dạng này gồm:
Định dạng Well-Known Text (WKT)
Định dạng Well-Known Binary (WKB)
Các đối tượng địa lý được lưu trữ bên trong MySQL với định dạng khác với
2 loại trên.
Định dạng Well-Known Text (WKT)
Loại định dạng này được dùng để truyển các dữ liệu của đối tượng dưới dạng
các chuỗi ASCII
Ví dụ về việc sử dụng WKT để mô tả đối tượng như sau:
Một điểm: POINT(15 20)
Chú ý là không có dấu phẩy ngăn cách giữa các thành phần của 1 điếm
Một LineString gồm có 4 điểm: LINESTRING(0 0, 10 10, 20 25, 50 60)
Chú ý là giữa các điểm có dấu phẩy ngăn cách
Một Polygon với 1 vòng exterior và 1 vòng interior :
POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))
Một MultiPoint gồm 3 điểm: MULTIPOINT(0 0, 20 20, 60 60)
Một MultiLineString với 2 thành phần LineString
MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
Một MultiPolygon với 2 thành phần Polygon
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7
5,7 7,5 7, 5 5)))
Một GeometryCollection với 2 Point và 1 LineString
GEOMETRYCOLLECTION(POINT(10 10),POINT(30
30),LINESTRING(15 15,20 20))

PHỤ LỤC – MySQL với phần mở rộng hỗ trợ cho OpenGIS
154
Định dạng Well-Known Binary (WKB)
Loại định dạng này được định nghĩa trong đặc tả của OpenGIS.
Nó cũng được định nghĩa trong ISO ``SQL/MM Part 3: Spatial''
WKB được dùng để trao đổi dữ liệu của các đối tượng dưới dạng chuỗi
binary.
WKB sử dụng 1 số nguyên không dấu 1 byte, dấu nguyên không dấu 4 byte,
số thực 8 byte (theo định dạng IEEE 754).
Ví dụ như 1 giá trị WKB tương ứng với WKT POINT(1 1) gồm có 21 byte
liên tiếp như dưới đây (mỗi byte được mô tả bằng 2 con số thập lục phân):
0101000000000000000000F03F000000000000F03F
Chuỗi byte này có thể được tách ra thành các phần nhau:
Trật tự byte : 01
Loại WKB : 01000000
X : 000000000000F03F
Y : 000000000000F03F
Các thành phần này có ý nghĩa như sau:
• Trật tự byte có thể là 0 hoặc là 1 dùng để thể hiện cách lưu trữ là little-
endian hay big-endian.
• Giá trị “loại WKB” là mã dùng để chỉ loại đối tượng địa lý,gốm có các
giá trị từ 1 đến 7 tương ứng với các loại đối tượng Point,
LineString, Polygon, MultiPoint, MultiLineString,
MultiPolygon, và GeometryCollection.
• Hai thành phần X và Y là các số thập phân dùng để thể hiện 2 giá trị X
và Y của đối tượng Point.

PHỤ LỤC – MySQL với phần mở rộng hỗ trợ cho OpenGIS
155
Các giá trị WKB dùng cho các đối tượng phức tạp sẽ có cấu trúc phức tạp,
theo như mô tả của OpenGIS.
Tạo 1 cơ sở dữ liệu trong MySQL dùng cho dữ liệu không gian
Phần này mô tả các loại dữ liệu được dùng để thể hiện các loại dữ liệu không
gian, và các hàm dùng cho việc tạo và truy vần dữ liệu không gian.
Các kiểu dữ liệu không gian trong MySQL:
MySQL có các kiểu dữ liệu tương ứng với các lớp trong OpenGIS. Một vài
kiểu có thể lưu trữ 1 đối tượng địa lý đơn giản
GEOMETRY
POINT
LINESTRING
POLYGON
GEOMETRY có thể lưu trữ bất cứ kiểu dữ liệu địa lý nào. Các kiểu dữ liệu
như: POINT, LINESTRING và POLYGON chỉ chứa các kiểu dữ liệu thuộc
cùng 1 loại nào đó.
Các kiểu dữ liệu khác có thể lưu tập hợp của giá trị sau:
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
GEOMETRYCOLLECTION có thể lưu tập hợp đối tượng của bất cứ kiểu dữ
liệu nào.Các loại tập hợp khác như MULTIPOINT,
MULTILINESTRING,MULTIPOLYGON và GEOMETRYCOLLECTION
chỉ lưu được các đối tượng thuộc các kiểu dữ liệu tương ứng.

PHỤ LỤC – MySQL với phần mở rộng hỗ trợ cho OpenGIS
156
Tạo các giá trị không gian
Phần này mô tả cách dùng các hàm của Well-Known Text và Well-Known
Binary để tạo ra các giá trị không gian theo chuẩn OpenGIS.
Tạo các giá trị địa lý bằng các hàm của WKT
MySQL có các hàm nhận tham số truyền vào thuộc dạng Well-Known Text
và có thể có thêm tham số SRID. Chúng trả về đối tượng địa lý tương ứng.
Hàm GeoFromText() nhận tham số đầu vào là 1 chuỗi WKT của bất kì
loại đối tượng nào.
Hàm GeomFromText(wkt[,srid]) , GeometryFromText(wkt[,srid])
Tạo đối tượng địa lý bất kì với giá trị WKT và SRID truyền vào.
Hàm LineFromText(wkt[,srid]) , LineStringFromText(wkt[,srid])
Tạo đối tượng LINESTRING với giá trị WKT và SRID truyền vào.
HàmMLineFromText(wkt[,srid]),
MultiLineStringFromText(wkt[,srid])
Tạo đối tượng MULTILINESTRING với giá trị WKT và SRID truyền
vào.
Hàm MPointFromText(wkt[,srid]) , MultiPointFromText(wkt[,srid])
Tạo đối tượng MULTIPOINT với giá trị WKT và SRID truyền vào.
Hàm MPolyFromText(wkt[,srid]) , MultiPolygonFromText(wkt[,srid])
Tạo đối tượng MULTIPOLYGON với giá trị WKT và SRID truyền
vào
Hàm PointFromText(wkt[,srid])
Tạo đối tượng POINT với giá trị WKT và SRID truyền vào
Hàm PolyFromText(wkt[,srid]) , PolygonFromText(wkt[,srid])
Tạo đối tượng POLYGON với giá trị WKT và SRID truyền
Tạo đối tượng địa lý sử dụng các hàm của WKB