Hiện nay có một số hệ quản trị CSDL có hỗ trợ kiểu dữ liệu không gian địa lý như PostgreSQL, SQL Server, Oracle. Do sự giới hạn về nền tảng của SQL Server (chỉ chạy trên Window), chi phí lớn và quản lý phức tạp của Oracle nên PostgreSQL là sự lựa chọn hợp lý. PostgreSQL là 1 hệ quản trị CSDL nguồn mở, chạy trên đa nền tảng, hỗ trợ đa dạng các kiểu dữ liệu, đặc biệt là kiểu geometry cho dữ liệu hình học. Trong vấn
đề xử lý dữ liệu không gian, PostGIS cũng cho thấy sự vượt trội so với SQL Server Spatial và Oracle Spatial [17] [18]. PostGIS đang trở thành 1 tiêu chuẩn trong các ứng dụng GIS ngày nay.
3.4.1.1. Tổ chức và lưu trữ dữ liệu không gian trong PostGIS
PostGIS tuân theo chuẩn của tổ chức OGC nên dữ liệu không gian được định dạng WKT (Well-Known Text), gồm các thông tin về kiểu hình học của đối tượng và các tọa độ của đối tượng. Một cặp tọa độ được phân cách nhau bởi dấu phẩy và giữa các tọa độ phân cách nhau bởi dấu cách. Với đa giác Polygon hoặc Multiline thì có 2 cặp ngoặc dạng “((“, Multiline thì dễ hiểu là có từ 2 đường trở lên, còn với Polygon thì PostGIS cho phép đa giác ngoài đường viền bên ngoài, còn có 1 đa giác con ở trung tâm (quen được biết đến là Polygon dạng bánh donut). MultiPolygon cũng tương tự 2 loại trên nhưng là tập các đa giác Polygon. Ở đây là một số ví dụ về các dạng WKT:
− Point (1 2), MultiPoint (0 0, 2 2)
− Linestring (0 0, 1 1, 2 2), MultiLinestring (0 0, 1 1, 2 2), (2 4, 5 2, 6 4))
− Polygon ((0 0, 1 2, 2 2, 2 1, 0 0)), MultiPolygon ((0 0, 2 2, 4 5, 3 1, 0 0), (1 1, 2 3, 4 5, 3 2, 1 1))
Ngoài ra, tùy theo kiểu dữ liệu của đối tượng không gian là geometry (tọa độ Đề Các) hay geography (tọa độ địa lý), mà PostGIS cung cấp các hàm có thể sử dụng chung hay chỉ có riêng cho từng kiểu dữ liệu. Có thể chuyển kiểu từ geography về dạng
geometry dễ dàng qua toán tử ::geometry, nhưng chuyển ngược lại thì phải đặt tham số
SRID (spatial reference ID - định danh tham chiếu địa lý) cho dữ liệu kiểu geometry để chuyển về dạng geography [19]. Ví dụ chuyển 1 tọa độ điểm từ tọa độ Đề Các sang hệ quy chiếu thế giới WGS 84:
SELECT ST_SetSRID(ST_Point(-123.365556, 48.428611),4326)