本节摘要:空间数据有两种组织方式:矢量(点线面)和栅格(像元网格)。本节讲两种模型的特点、适用场景、和存储思路。
阅读完本节,你应当能够:
矢量用坐标点表示空间要素:
矢量数据精确、数据量小、支持拓扑分析,适合离散对象(建筑、道路、边界)。

栅格用规则网格的像元表示空间,每个像元有值:
栅格数据连续、适合影像、高程、温度场等连续分布现象。数据量大,靠金字塔和分块优化。
| 维度 | 矢量 | 栅格 |
|---|---|---|
| 表达 | 点线面精确 | 像元网格 |
| 数据量 | 小 | 大 |
| 适合 | 离散对象(建筑/道路) | 连续现象(影像/高程) |
| 分析 | 拓扑、网络分析 | 叠加、统计、邻域 |
| 缩放 | 无损放大 | 放大有锯齿 |
矢量在数据库里存几何 + 属性:
-- PostGIS 存矢量 CREATE TABLE cities ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(POINT, 4326) -- 几何+坐标系 ); INSERT INTO cities (name, geom) VALUES ('北京', ST_SetSRID(ST_Point(116.4, 39.9), 4326));
栅格用文件(GeoTIFF)或数据库栅格引擎存:
-- PostGIS 栅格 CREATE TABLE elevation (rid serial, rast raster); INSERT INTO elevation (rast) VALUES (ST_AsRaster(...));
栅格常用 GeoTIFF 文件 + 金字塔,或专门的栅格服务(如 GeoServer 发布 WMS)。
⚠️ 常见坑:拿矢量做遥感影像分析——矢量不存像元值,做不了波段运算。影像用栅格,要素用矢量。
💡 关键直觉:矢量用点线面表达离散对象,精确数据量小;栅格用像元网格表达连续现象,数据量大靠金字塔。道路建筑用矢量,影像高程用栅格。
矢量几何在数据库和接口里常用 WKT(Well-Known Text)表示,看懂它就能读懂空间数据:
POINT (116.4 39.9) LINESTRING (116.3 39.8, 116.4 39.9, 116.5 40.0) POLYGON ((116.3 39.8, 116.5 39.8, 116.5 40.0, 116.3 40.0, 116.3 39.8)) MULTIPOLYGON (((...))) -- 多个面组成复杂要素
注意 WKT 里坐标顺序是 X Y(经度 纬度),和 GeoJSON 的经纬度顺序一致。多边形必须闭合:首尾点相同,否则数据库会报错或纠正。在 PostGIS 里可以直接用文本构造几何:
-- 从 WKT 构造几何 SELECT ST_GeomFromText('POINT(116.4 39.9)', 4326); -- 判断两个几何是否相交 SELECT ST_Intersects( ST_GeomFromText('POINT(116.4 39.9)', 4326), ST_GeomFromText('POLYGON((116 39, 117 39, 117 40, 116 40, 116 39))', 4326) );
栅格模型最常被误解的是"波段"。一张遥感影像通常有多个波段:红、绿、蓝是 RGB 三个波段,还有近红外、热红外等。每个像元在每个波段都有一个值,同一位置的像元组成一个像元值向量。做 NDVI(归一化植被指数)计算,用的就是近红外和红两个波段的比值:
-- PostGIS 栅格查询:取某像元在某波段的值 SELECT ST_Value(rast, 1, ST_MakePoint(116.4, 39.9)) AS red_band FROM satellite_image WHERE rid = 1;
分辨率直接决定数据量和分析粒度:30 米分辨率的一景影像覆盖一个县,1 米分辨率同样范围数据量可能大上千倍。工程上常见做法是"按用途分层":全局浏览用低分辨率影像,重点区域用高分辨率影像,通过金字塔自动切换。
某管线管理系统要管理城市供水管网。工程师没有照搬教科书,而是做了拆分:管线本体(离散对象)用矢量存,精确到厘米级,支持拓扑查询;管线上方的无人机影像(连续覆盖)用栅格存,用于巡检对比。业务查询走矢量,底图显示走栅格,两类模型各司其职。这个案例的启示是:选择模型不是二选一,而是按数据性质分层——点线面属性清晰的用矢量,面状连续分布的用栅格,系统里两者通常共存。
除了二维的矢量和栅格,还有三类常见三维模型:
第 1 章结束。下一章讲这些数据怎么存储和管理。