PG扩展PostGIS空间数据库
学习PostGIS安装、空间数据类型与常见GIS查询 · 难度:入门 · +15XP
PostGIS概述
PostGIS是PostgreSQL的空间扩展,遵循OGC标准,支持地理空间数据存储、索引和查询。广泛用于GIS、LBS和地理分析系统。
安装与启用
CREATE EXTENSION postgis;
SELECT postgis_full_version();核心数据类型
| 类型 | 说明 |
|---|---|
| GEOMETRY | 通用几何类型(点、线、面等) |
| GEOGRAPHY | 地理坐标系类型(基于WGS84) |
创建空间表
CREATE TABLE locations (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
geom GEOMETRY(Point, 4326)
);
-- 插入数据(使用ST_GeomFromText)
INSERT INTO locations (name, geom)
VALUES ('北京天安门', ST_GeomFromText('POINT(116.397 39.908)', 4326));
空间查询示例
-- 计算距离
SELECT ST_Distance(
(SELECT geom FROM locations WHERE name='北京天安门'),
(SELECT geom FROM locations WHERE name='上海东方明珠')
) / 1000 AS distance_km;
-- 范围查询:查找100公里内的点
SELECT name FROM locations
WHERE ST_DWithin(
geom,
ST_GeomFromText('POINT(116.4 39.9)', 4326),
100000
);
空间索引
CREATE INDEX idx_locations_geom ON locations USING GIST (geom);练习提示
导入一个城市POI数据集,使用ST_Within查找特定多边形内的所有点。