第四章:数据采集与预处理
各位同学,今天我们来聊聊土地资源评估中最“苦”也最“关键”的一步——数据采集与预处理。
说实话,我做了十几年土地资源管理,见过太多项目在后期分析时翻车。翻来覆去查原因,最后发现:数据源头就出了问题。你想想看,地基没打好,楼盖得再漂亮也是白搭。
所以这一章,我会把我在一线踩过的坑、积累的经验,毫无保留地分享给你。
4.1 遥感数据源:选对“眼睛”
遥感数据,说白了就是给土地拍“CT”。但不同“CT机”拍出来的东西,精度和用途天差地别。
我个人习惯把遥感数据源分成三类:
- 高分辨率影像(如WorldView、GeoEye):空间分辨率优于1米。适合做地块边界勾绘、违章建筑识别。我记得2018年在浙江做耕地确权,就是用WorldView-3的数据,0.3米分辨率,连田埂上的小水沟都看得清清楚楚。
- 中分辨率影像(如Landsat、Sentinel-2):10-30米分辨率。适合做植被覆盖度、土地利用分类。我建议做区域级评估时优先选Sentinel-2,免费且重访周期短。
- 雷达数据(如Sentinel-1、ALOS PALSAR):不受云雨影响。我在云南山区做滑坡风险评估时,光学影像根本拍不到,全靠雷达数据“穿透”云层。
核心原则:数据源的选择不是越贵越好,而是“够用就好”。你评估一块农田,用0.3米分辨率就是浪费;但你要查城市违建,30米分辨率就是瞎子。
4.2 实地调查方法:别只盯着屏幕
遥感数据再牛,也替代不了实地调查。为什么?因为卫星看不到地下的土壤结构,也闻不到污染物的气味。
我常用的实地调查方法有:
- 样点布设:采用分层随机抽样。比如评估一个县的耕地质量,先按土壤类型分层,再在每层内随机布点。我曾经在东北做过一个项目,布了200个样点,结果发现其中30个点落在水塘里——嗯,这就是没提前看遥感图的后果。
- GPS+平板采集:现在都用移动GIS了。我习惯用ArcGIS Field Maps或QField,现场拍照、填属性、定位一气呵成。注意:一定要提前下载离线底图,山区没信号是常态。
- 土壤采样:表层土(0-20cm)用土钻,深层土(20-60cm)用剖面法。每个样点取3-5个分样混合,四分法缩分。我见过有人图省事只取一个点,结果数据偏差大到离谱。
我的小技巧:实地调查前,先在室内用遥感影像做“预判”。把疑似问题地块标出来,到现场重点核查。这样效率能提升50%以上。
4.3 数据质量控制:别让垃圾数据进模型
数据质量控制,说白了就是“清洗数据”。我见过太多人拿到数据就直接跑模型,结果输出一堆“垃圾”。
质量控制我一般分三步走:
- 完整性检查:有没有缺失值?比如某个样点的土壤pH值没填,是仪器故障还是人为遗漏?我建议用Python的pandas库快速统计缺失率,超过5%就要追查原因。
- 一致性检查:不同来源的数据是否矛盾?比如遥感解译的林地面积和实地调查的林地面积差20%以上,那肯定有一方错了。我曾经遇到一个项目,两个部门提供的同一地块面积差了30%,最后发现是坐标系没统一。
- 异常值检测:用箱线图或Z-score方法。比如土壤重金属含量突然出现一个“天价”值,可能是采样污染或录入错误。我的习惯是:异常值先标记,不急着删除,回头去现场复核。
避坑指南:我曾经接手过一个项目,前期的数据质量控制形同虚设。结果模型跑出来,某地块的耕地质量等级是“最优”,但实地一看,那是一片盐碱地。嗯,从那以后,我再也不敢跳过质控环节了。
4.4 数据标准化与归一化处理
不同数据源的量纲不同,比如土壤有机质含量是百分比,而坡度是度数。直接放一起分析,就像把苹果和橘子称重比大小——没意义。
标准化和归一化,就是把这些数据“拉到同一个起跑线上”。
我常用的方法:
| 方法 | 公式 | 适用场景 |
|---|---|---|
| Min-Max归一化 | X' = (X - Xmin) / (Xmax - Xmin) | 数据分布较均匀,无极端值 |
| Z-score标准化 | X' = (X - μ) / σ | 数据近似正态分布,有异常值 |
| 小数定标标准化 | X' = X / 10^k | 数据范围跨度大,如人口密度 |
举个例子。我在做全国耕地质量评估时,土壤pH值范围是4.5-8.5,而有机质含量是0.5%-5%。直接用原始数据,pH值的微小变化会被有机质的大幅波动淹没。归一化后,两个指标都在0-1之间,权重分配才合理。
代码实现也很简单:
# Python示例:Min-Max归一化
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
data = pd.read_csv('soil_data.csv')
scaler = MinMaxScaler()
data_normalized = scaler.fit_transform(data[['pH', 'organic_matter']])
注意:归一化后,数据的分布形态会改变。比如原始数据是偏态分布,归一化后还是偏态分布。如果你后续要用线性模型,建议先做对数变换再归一化。
知识体系总览
下面这张图,是我自己总结的数据采集与预处理全流程。你可以把它当作“操作手册”来用。
这张图你看懂了吗?从上到下,数据从“原材料”变成“合格品”,每一步都不能少。我当年刚入行时,总觉得预处理是浪费时间,后来被现实狠狠教育了一回——嗯,从那以后,我老老实实按这个流程走。
最后说一句:数据采集和预处理,占整个项目60%以上的时间。别嫌烦,这一步做扎实了,后面的分析就是水到渠成的事。