Hướng dẫn sử dụng postgis
postgis
là module mở rộng cho PostgreSQL, cung cấp các loại hình học và không gian địa lý cũng như các hàm, cho phép PostgreSQL lưu trữ và truy vấn dữ liệu không gian địa lý. Bài viết này sẽ hướng dẫn chi tiết cách cài đặt và sử dụng postgis
trong ServBay.
Cài đặt postgis
ServBay đã tích hợp sẵn module mở rộng postgis
, bạn chỉ cần kích hoạt nó trong cơ sở dữ liệu của mình. Dưới đây là các bước để kích hoạt postgis
:
Kết nối đến cơ sở dữ liệu PostgreSQL:
bashpsql -U your_username -d your_database
1Tạo mở rộng:
sqlCREATE EXTENSION postgis;
1Kiểm tra cài đặt:
sql\dx
1
Cấu hình postgis
Sau khi kích hoạt postgis
, bạn có thể tạo và quản lý các loại dữ liệu không gian địa lý, sử dụng các hàm không gian địa lý khác nhau để thao tác.
Tạo bảng không gian địa lý
Dưới đây là một ví dụ về cách tạo một bảng chứa dữ liệu không gian địa lý.
Tạo bảng:
sqlCREATE TABLE locations ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(Point, 4326) );
1
2
3
4
5Chèn dữ liệu mẫu:
sqlINSERT INTO locations (name, geom) VALUES ('Location A', ST_GeomFromText('POINT(116.4074 39.9042)', 4326)), ('Location B', ST_GeomFromText('POINT(121.4737 31.2304)', 4326));
1
2
3
Tạo chỉ mục không gian địa lý
Để cải thiện hiệu suất truy vấn, nên tạo chỉ mục cho cột không gian địa lý.
- Tạo chỉ mục GIST:sql
CREATE INDEX idx_geom ON locations USING GIST (geom);
1
Sử dụng postgis để truy vấn không gian địa lý
Dưới đây là một số ví dụ truy vấn không gian địa lý thông dụng.
Truy vấn khoảng cách
- Truy vấn khoảng cách giữa hai điểm:sql
SELECT ST_Distance( ST_GeomFromText('POINT(116.4074 39.9042)', 4326), ST_GeomFromText('POINT(121.4737 31.2304)', 4326) );
1
2
3
4
Truy vấn quan hệ bao chứa
- Truy vấn liệu một điểm có nằm trong khu vực cụ thể không:sql
SELECT name FROM locations WHERE ST_Contains( ST_GeomFromText('POLYGON((116.0 39.0, 117.0 39.0, 117.0 40.0, 116.0 40.0, 116.0 39.0))', 4326), geom );
1
2
3
4
5
Truy vấn lân cận
- Truy vấn các địa điểm gần một điểm cụ thể:sql
SELECT name FROM locations ORDER BY geom <-> ST_GeomFromText('POINT(116.4074 39.9042)', 4326) LIMIT 5;
1
2
3
Sử dụng postgis để phân tích không gian địa lý
postgis
cung cấp nhiều hàm phân tích không gian địa lý phong phú, dưới đây là một số tính năng phân tích thông dụng.
Phân tích vùng đệm
- Tạo vùng đệm:sql
SELECT ST_Buffer(geom, 0.01) FROM locations WHERE name = 'Location A';
1
Phân tích giao nhau
- Truy vấn giao nhau của hai đối tượng hình học:sql
SELECT ST_Intersection( ST_GeomFromText('POLYGON((116.0 39.0, 117.0 39.0, 117.0 40.0, 116.0 40.0, 116.0 39.0))', 4326), geom ) FROM locations WHERE name = 'Location A';
1
2
3
4
Phân tích hợp nhất
- Hợp nhất nhiều đối tượng hình học:sql
SELECT ST_Union(geom) FROM locations;
1
Trực quan hóa dữ liệu không gian địa lý
Bạn có thể sử dụng các công cụ GIS khác nhau (như QGIS) hoặc dịch vụ bản đồ web (như Leaflet, OpenLayers) để trực quan hóa dữ liệu không gian địa lý trong postgis
.
Sử dụng QGIS
Kết nối đến cơ sở dữ liệu PostgreSQL:
- Mở QGIS
- Chọn "Data Source Manager" -> "PostGIS"
- Nhập thông tin kết nối cơ sở dữ liệu và kết nối
Tải dữ liệu không gian địa lý:
- Chọn bảng hoặc view cần tải
- Nhấn nút “Add”
Sử dụng Leaflet
- Tạo bản đồ web:html
<!DOCTYPE html> <html> <head> <title>Leaflet PostGIS Example</title> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> </head> <body> <div id="map" style="width: 600px; height: 400px;"></div> <script> var map = L.map('map').setView([39.9042, 116.4074], 10); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); // Add a marker from PostGIS data var marker = L.marker([39.9042, 116.4074]).addTo(map) .bindPopup('Location A') .openPopup(); </script> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Tổng kết
postgis
là một module mở rộng không gian địa lý mạnh mẽ. Với các bước cài đặt và cấu hình đơn giản, bạn có thể triển khai lưu trữ và truy vấn dữ liệu không gian địa lý hiệu quả trong PostgreSQL. ServBay đã tích hợp sẵn module postgis
, bạn chỉ cần làm theo các bước trong bài viết này để cài đặt và cấu hình. Với các tính năng truy vấn và phân tích không gian địa lý, bạn có thể tận dụng tốt dữ liệu không gian địa lý để cung cấp hỗ trợ cơ sở dữ liệu đáng tin cậy cho ứng dụng của mình.