1. 空间数据整合概述

1.1 空间数据到底是什么?

聊空间数据整合之前,得先搞清楚什么叫“空间数据”。说白了,就是带地理位置的数字信息。你想想看,经纬度、地址、行政区划边界、遥感影像——这些都算。我最早做城市规划项目时,甲方给了一堆Excel里的坐标点,说这是“空间数据”。我当时就懵了:坐标没有投影信息,跟裸奔有啥区别?

空间数据在计算机里通常存成矢量和栅格两大类:

  • 矢量:点、线、面,用坐标序列表示。比如建筑物轮廓、道路网络。
  • 栅格:像元矩阵,每个格子存一个值。比如卫星影像、高程模型。

还有个绕不开的东西——坐标系。同一个位置,WGS84 和 CGCS2000 的坐标可能差几十米。我记得有次做灾害评估,用了两套不同坐标系的数据叠加,结果房屋和道路跑到河对岸去了。幸亏发现得早,不然报告就变成“跨界选址”了。

小经验:拿到外部数据后,我第一步永远是用 gdalinfo 或 QGIS 属性窗口看一眼坐标参考系统(CRS)。少看一步,后面可能白干几天。

1.2 为什么要做整合?

整合的意义其实就一条:让多源数据能放在同一张地图里讲故事。你想想看,国土部门的卫片执法数据、住建局的宗地数据、环保局的水质监测站——各管各的,彼此坐标不一样,字段命名不一样,甚至存储格式都不一样。如果不整合,分析人员得手动调坐标、转格式、梳字段,一个月出不来一张像样的图。

我做过的整合项目里,最典型的价值体现在这几个方面:

  • 消除数据孤岛:不同部门的数据能互相叠加、互查。
  • 提升分析精度:整合后可以做空间叠置分析、缓冲区分析,比单源数据靠谱得多。
  • 支撑重复性研究:整合规范后,同样的数据流程可以复现给同行,这也是咱们这门课“复现与发表”的底层。

一句话:整合不是“把文件拖到一起”,而是建立一套从格式、坐标到语义都统一的数据桥梁。

1.3 整合路上的“坑”

项目做多了,我踩过的坑可以写一本书。这里列几个最常见的:

挑战 典型表现 我遇到过的实例
格式不兼容 Shapefile vs GeoJSON vs 个人地理数据库 甲方给了个 ArcGIS 个人地理数据库,我这边 Linux 环境打不开,折腾了一天才转换完
坐标参考打架 WGS84 经纬度 vs 投影坐标(UTM) 叠加时偏移几百米,检查发现一个用了度,一个用了米,没做同态投影
数据质量参差 属性字段空值、几何拓扑错误、重复要素 某省河流数据里有 2000 条自相交线,叠加上去直接崩了 QGIS
语义异构 同样“用地类型”,A 表叫 LAND_USE,B 表叫 landuse 合表时字段名对不上,手工写了半小时映射脚本

为什么会这样?放十年前大家各管各的系统,没统一标准。现在虽然有了 OGC 规范,但落地时执行力度差得远。嗯,这里要注意——别指望数据源自己会规规矩矩,整合工作的一半精力其实花在“打扫卫生”上。

1.4 我的避坑工具箱

这几年我摸索出一套比较稳的做法。没啥神秘,就是把流程拆成四个阶段:

  1. 勘查摸底:拿到所有数据源,先列个清单,包括格式、大小、坐标系、字段名。我会用 Python 写个小脚本自动扫描一遍。
  2. 预处理流水线:统一坐标系(用 ogr2ogr 批转)、修复几何错误(用 ST_MakeValid)、清洗字段(重命名、填充空值)。
  3. 集成建库:把清洗后的数据加载到一个空间数据库(PostGIS / GeoPackage),建空间索引。
  4. 校验与文档:写检查脚本验证数据完整性和一致性,同时生成整合报告(什么数据、用了什么变换、舍入了多少误差)。

举个我常用的命令行例子,把 Shapefile 转成 GeoJSON 并重定义 CRS:

ogr2ogr -f "GeoJSON" output.geojson input.shp -t_srs "EPSG:4326" -lco COORDINATE_PRECISION=6

这条命令我几乎每个项目都用。你想想看,一行代码搞定转换+投影+精度控制,省下来多少手动操作的时间。

避坑指南:我曾经因为没加 -lco COORDINATE_PRECISION=6,导致坐标被截断到 2 位小数,合表后点位漂了几十米。从那以后我每次都强制设置精度,哪怕数据本来的精度更高。

关于语义异构,我习惯用 YAML 写一个字段映射表:

source:
  - name: "LAND_USE"
    target: "landuse"
    type: string
  - name: "AREA_HA"
    target: "area_ha"
    type: double
  - name: "YEAR"
    target: "year"
    type: integer

然后用 Python 的 pyyaml 读取,自动做重命名字段。这么做的好处是映射关系可复现、可分享,别人看 YAML 文件就能明白你的整合逻辑。

空间数据整合核心知识体系 空间数据整合 空间数据概念 矢量 / 栅格 / 坐标系 CRS & 投影 常见挑战 格式 / 语义 / 拓扑 坐标偏移 / 质量 整合意义 消除孤岛 / 提升精度 复现与发表基础 解决方案 ogr2ogr / PostGIS 字段映射 / 校验脚本 输出:可复现的整合数据

这张图把整章的核心逻辑串起来了。你注意看,四个方向分别对应概念、挑战、意义、解决方案,最后汇聚到“可复现的整合数据”——也就是我们这门课最终要交付的东西。

我的习惯:每次做整合前,先拿张纸(或者画 SVG)把这张图过一遍,确保四个维度的东西都考虑到了。缺一个维度,后面大概率要返工。