1.2 空间数据模型


1.2 空间数据模型

本节摘要:空间数据有两种组织方式:矢量(点线面)和栅格(像元网格)。本节讲两种模型的特点、适用场景、和存储思路。

你能学到什么

阅读完本节,你应当能够:

  1. 区分矢量模型和栅格模型
  2. 判断场景用哪种模型
  3. 理解矢量数据的几何要素

概念脉络

一、矢量模型

矢量用坐标点表示空间要素:

  • 点(Point):一个坐标,如兴趣点、GPS 点
  • 线(LineString):有序点串,如道路、河流
  • 面(Polygon):闭合线,如行政区、地块
  • 多点/多线/多面:同类要素的集合

矢量数据精确、数据量小、支持拓扑分析,适合离散对象(建筑、道路、边界)。

图 1-2 矢量与栅格数据模型

图 1-2 矢量与栅格数据模型

二、栅格模型

栅格用规则网格的像元表示空间,每个像元有值:

  • 像元(Pixel/Cell):网格单元,值代表属性(如高程、温度、颜色)
  • 分辨率:像元代表的地面尺寸,如 30m 分辨率每像元 30m×30m
  • 波段:多波段栅格(如遥感影像 RGB+近红外)

栅格数据连续、适合影像、高程、温度场等连续分布现象。数据量大,靠金字塔和分块优化。

三、两种模型对比

维度 矢量 栅格
表达 点线面精确 像元网格
数据量
适合 离散对象(建筑/道路) 连续现象(影像/高程)
分析 拓扑、网络分析 叠加、统计、邻域
缩放 无损放大 放大有锯齿

四、矢量数据存储

矢量在数据库里存几何 + 属性:

-- 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)。

六、场景选择

  • 矢量:道路、建筑、行政区、兴趣点、管网——离散对象
  • 栅格:卫星影像、DEM 高程、温度场、土地利用分类——连续现象
  • 混合:很多系统两者都用,矢量管要素,栅格管影像底图

⚠️ 常见坑:拿矢量做遥感影像分析——矢量不存像元值,做不了波段运算。影像用栅格,要素用矢量。

💡 关键直觉:矢量用点线面表达离散对象,精确数据量小;栅格用像元网格表达连续现象,数据量大靠金字塔。道路建筑用矢量,影像高程用栅格。

六、矢量几何的文本表达 WKT

矢量几何在数据库和接口里常用 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 米分辨率同样范围数据量可能大上千倍。工程上常见做法是"按用途分层":全局浏览用低分辨率影像,重点区域用高分辨率影像,通过金字塔自动切换。

八、模型选择的一个真实决策

某管线管理系统要管理城市供水管网。工程师没有照搬教科书,而是做了拆分:管线本体(离散对象)用矢量存,精确到厘米级,支持拓扑查询;管线上方的无人机影像(连续覆盖)用栅格存,用于巡检对比。业务查询走矢量,底图显示走栅格,两类模型各司其职。这个案例的启示是:选择模型不是二选一,而是按数据性质分层——点线面属性清晰的用矢量,面状连续分布的用栅格,系统里两者通常共存。

九、三维数据模型

除了二维的矢量和栅格,还有三类常见三维模型:

  • TIN(不规则三角网):用三角形网格逼近地形曲面,适合 DEM 的精细表达,数据量可控。
  • 体素(Voxel):把三维空间切成立方体网格,适合地质体、污染羽流等体数据。
  • 3D 网格(Mesh):三角面片组成物体表面,倾斜摄影和 BIM 模型都属于这类,后续第 7 章讲 3D Tiles 时会详细展开。

核心回顾

  • 矢量:点/线/面,精确,适合离散对象(建筑/道路/边界),数据量小。
  • 栅格:像元网格,连续,适合影像/高程/温度场,数据量大靠金字塔。
  • 对比:矢量小而精适合拓扑分析,栅格大而连适合叠加统计。
  • 存储:矢量存几何+属性(PostGIS GEOMETRY),栅格存 GeoTIFF 或 raster。
  • 场景:离散用矢量,连续用栅格,系统常两者混合。

第 1 章结束。下一章讲这些数据怎么存储和管理。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U