PostgreSQL:PostGIS 地理信息数据处理详解
PostgreSQL 与 PostGIS 结合,构成了一个功能强大、开源且符合标准的地理空间数据库系统。PostGIS 是 PostgreSQL 的一个扩展,用于存储、查询和分析地理信息(地理空间)数据。以下是对 PostGIS 地理信息数据处理的详解,涵盖核心概念、安装配置、数据类型、函数使用、索引优化、典型应用场景及性能调优等内容。
一、PostGIS 简介
1.1 什么是 PostGIS?
PostGIS 是一个遵循 Open Geospatial Consortium(OGC)标准的空间数据库扩展,为 PostgreSQL 提供了对地理空间数据的支持。它支持二维、三维甚至四维(含时间维度)的几何(Geometry)和地理(Geography)对象,并提供丰富的空间操作函数。
- 官网:https://postgis.net/
- 开源协议:GPLv2+
- 依赖库:GEOS(几何操作)、PROJ(坐标转换)、GDAL(栅格支持)、LibXML2(GML 支持)等
1.2 PostGIS 能做什么?
- 存储点、线、面、多边形、多点等几何对象
- 执行空间关系判断(如相交、包含、邻近)
- 计算距离、面积、长度等度量
- 坐标系转换(WGS84、UTM 等常见坐标系)
二、安装与启用 PostGIS
2.1 安装方式(以 Ubuntu 为例)
在大多数 Linux 发行版中,PostGIS 通常作为 PostgreSQL 的附加包提供。以 Ubuntu 为例,可以通过包管理器直接安装。
sudo apt-get install postgis
2.2 验证安装
安装完成后,可以在数据库中启用扩展来验证。
CREATE EXTENSION postgis;
SELECT PostGIS_Version();
三、核心数据类型
3.1 geometry(几何类型)
基于平面投影坐标系,适用于局部区域或投影后的数据。计算速度快,但不考虑地球曲率。
3.2 geography(地理类型)
基于椭球体模型,适用于全球范围的数据。计算更精确,但开销略大。
3.3 常见几何子类型(OGC 标准)
包括 Point(点)、LineString(线)、Polygon(面)、MultiPoint、MultiLineString、MultiPolygon 以及 GeometryCollection。
四、空间数据表示与输入
4.1 WKT(Well-Known Text)
文本格式的空间数据表示,便于人类阅读和调试。
SELECT ST_GeomFromText('POINT(116.4074 39.9042)', 4326);
4.2 WKB(Well-Known Binary)
二进制格式,传输效率高,常用于程序间交互。

