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 我的避坑工具箱
这几年我摸索出一套比较稳的做法。没啥神秘,就是把流程拆成四个阶段:
- 勘查摸底:拿到所有数据源,先列个清单,包括格式、大小、坐标系、字段名。我会用 Python 写个小脚本自动扫描一遍。
- 预处理流水线:统一坐标系(用
ogr2ogr批转)、修复几何错误(用ST_MakeValid)、清洗字段(重命名、填充空值)。 - 集成建库:把清洗后的数据加载到一个空间数据库(PostGIS / GeoPackage),建空间索引。
- 校验与文档:写检查脚本验证数据完整性和一致性,同时生成整合报告(什么数据、用了什么变换、舍入了多少误差)。
举个我常用的命令行例子,把 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 文件就能明白你的整合逻辑。
这张图把整章的核心逻辑串起来了。你注意看,四个方向分别对应概念、挑战、意义、解决方案,最后汇聚到“可复现的整合数据”——也就是我们这门课最终要交付的东西。