PostGIS扩展与空间查询
学习使用PostGIS扩展进行地理空间数据存储与分析 · 难度:入门 · +15XP
PostGIS简介
PostGIS是PostgreSQL的空间扩展,支持地理对象存储、空间索引和空间函数。
安装与启用
-- 创建扩展
CREATE EXTENSION postgis;
-- 验证安装
SELECT postgis_full_version();
空间数据类型
- GEOMETRY:通用几何类型
- GEOGRAPHY:地理坐标类型(考虑地球曲率)
创建空间表
CREATE TABLE locations (
id SERIAL PRIMARY KEY,
name TEXT,
geom GEOMETRY(Point, 4326)
);
-- 插入空间数据
INSERT INTO locations (name, geom)
VALUES ('北京天安门', ST_GeomFromText('POINT(116.397 39.908)', 4326));
空间查询示例
-- 查找附近地点
SELECT name, ST_Distance(geom, ST_GeomFromText('POINT(116.4 39.9)', 4326)) AS dist
FROM locations
ORDER BY geom <-> ST_GeomFromText('POINT(116.4 39.9)', 4326)
LIMIT 5;空间索引
CREATE INDEX idx_locations_geom
ON locations USING GIST (geom);练习提示
创建一张城市表,插入3个城市坐标,使用ST_Distance计算城市间距离。