古村落空心化怎么查?遥感影像如何提取?
你看到的“空村”,卫星早就在偷偷记录了
去年我在浙江参与一个传统村落保护项目时,遇到一个令人揪心的场景:某个明清古村,青石板路还在,马头墙也完整,但白天走在村里,几乎听不到人声——90%的房子门窗紧闭,只有三两位老人坐在祠堂门口晒太阳。当地干部说:“人都去城里打工了,房子空着,塌了都没人修。”

这,就是典型的“空心化”。而更棘手的是——很多地方政府根本不知道哪些村子“空”了、空到什么程度、从什么时候开始空的。 靠人工普查?成本高、周期长、数据滞后。这时候,遥感影像就成了我们的“天眼”。
别被“遥感”两个字吓到。本质上,它就是给地球拍高清照片+视频,只不过相机挂在天上,拍的是光谱,不是美颜。
空心化在遥感图上长什么样?教你一眼识别“鬼村”
很多人以为,空心化=房子没人住=屋顶塌了。错!真正的空心化,在初期往往“外表光鲜”。屋顶完好、院墙整齐,甚至门口还停着返乡过年的车。但如果你会看“细节纹理”和“时间序列”,就能发现端倪:
- 植被入侵庭院:原本硬化的院子或菜地,几年后长出杂草或小灌木——说明无人打理。类比一下:就像你家阳台花盆,一个月不浇水,仙人掌都蔫了。
- 屋顶颜色异常老化:有人居住的房子,屋顶瓦片/铁皮会定期更换或修补,反射率稳定;空置房则因风吹日晒加速褪色、破损,在近红外波段差异明显。
- 夜间灯光消失:用夜光遥感(如NPP-VIIRS)对比春节前后数据,如果节前灯火通明、节后一片漆黑——基本实锤“候鸟式空心”。
我在江西做试点时,就靠这个方法揪出了7个“表面繁荣”的空心村。当地政府一开始还不信:“我们去年才刷了白墙!”——直到我们把2018和2023年的NDVI变化动画放给他们看,院内植被覆盖率从5%飙到60%,他们才哑口无言。
实战教学:用QGIS+Python提取空心化区域(附代码)
理论懂了,怎么落地?下面我拆解一个最小可行流程,工具选免费的QGIS+少量Python脚本,学生党也能跑通。
Step 1:数据准备——找对“时空切片”
- 推荐数据源:
- 高分系列(GF-2/6):2米分辨率,适合看单体建筑,部分区域可免费申请。
- Landsat 8/9 或 Sentinel-2:30米/10米,免费,适合大范围筛查,重点看多时相变化。
- 夜光数据:NASA的 Black Marble(年度合成)或 VIIRS月度产品。
- 时间选择:至少选间隔3年以上的两期影像,避开雨季(云太多)和收割季(农田干扰大)。
Step 2:关键指标计算——让机器替你“数草”
核心思路:量化“人类活动痕迹衰退”。我常用的三个指数:
| 指数 | 作用 | 公式简写 |
|---|---|---|
| NDVI (归一化植被指数) | 检测院落/屋顶植被入侵 | (NIR - Red) / (NIR + Red) |
| NDBI (归一化建筑指数) | 识别建筑材质老化/废弃 | (SWIR - NIR) / (SWIR + NIR) |
| 夜光强度差值 | 捕捉人口流动导致的灯光骤减 | Night_light_t2 - Night_light_t1 |
在QGIS里用“栅格计算器”就能算,比如NDVI:
NDVI = ("B5@1" - "B4@1") / ("B5@1" + "B4@1")
Step 3:变化检测——锁定“退化热点区”
最简单粗暴的方法:做两期NDVI的差值图(ΔNDVI = NDVI_2023 - NDVI_2020)。正值区域(变绿了)大概率是废弃院落。再叠加NDBI下降区域(建筑反射率降低),交叉验证。
嫌手动麻烦?上Python自动化(需安装rasterio和numpy):
import rasterio
import numpy as np
# 读取两期NDVI
with rasterio.open('ndvi_2020.tif') as src1:
ndvi1 = src1.read(1)
with rasterio.open('ndvi_2023.tif') as src2:
ndvi2 = src2.read(1)
# 计算变化量
delta_ndvi = ndvi2 - ndvi1
# 标记显著增长区域(阈值可调)
abandoned_mask = delta_ndvi > 0.2 # 经验阈值,需实地校准
# 输出结果
with rasterio.open('delta_ndvi.tif', 'w', **src1.profile) as dst:
dst.write(delta_ndvi, 1)
跑完后,用QGIS加载结果,红色高亮区就是疑似空心化地块。再叠加上村庄边界矢量,直接导出统计报表。
避坑指南:Dr.Gis踩过的3个大雷
- 别迷信单一指数:某次我只用NDVI,结果把新建的生态停车场误判成“废弃院落”——人家种草皮美化环境呢!一定要结合NDBI和目视解译。
- 分辨率不是越高越好:GF-2虽然清晰,但重访周期长,云覆盖严重。不如用Sentinel-2的10米数据+多时相合成,稳定性更好。
- 地面验证不可省:算法标出的“空心区”,一定要抽样实地拍照。我吃过亏:算法把一片晒谷场当成“荒废空地”,其实村民只是换地方晾稻子了。
结语:技术是尺子,丈量的是乡愁
遥感提取空心化,本质不是冷冰冰的技术活,而是用空间数据为文化保护争取时间窗口。那些被算法标记的红色斑块,背后是一个个离散的家庭和正在消逝的生活记忆。
现在轮到你了:你们家乡有“空心村”吗?你试过用遥感影像分析过类似问题吗?欢迎在评论区贴出你的成果图或踩坑经历——说不定下次教程,我就用你的案例当素材!
-
GIS在多维数据分析中的应用:时空立方体(Space Time Cube)构建 2025-12-07 12:00:03
-
GIS在空间模式分析中的应用:平均最近邻(Average Nearest Neighbor) 2025-12-07 11:00:03
-
GIS在空间分布分析中的应用:标准差椭圆(Standard Deviational Ellipse) 2025-12-07 10:00:03
-
GIS在地统计学中的应用:克里金插值(Kriging)详解 2025-12-07 09:00:03
-
GIS在空间回归分析中的应用:普通最小二乘法(OLS) 2025-12-07 08:00:03
-
GIS在空间统计学中的应用:地理探测器(Geodetector)原理与实践 2025-12-07 07:00:03
-
GIS在空间统计学中的应用:聚类与异常值分析(Anselin Local Moran's I) 2025-12-07 06:00:03
-
GIS在空间统计学中的应用:冷热点分析(Getis-Ord Gi*) 2025-12-07 05:00:03
-
GIS在空间统计学中的应用:空间自相关(Moran's I) 2025-12-07 04:00:03
-
QGIS样式文件怎么保存?SLD格式如何导出? 2025-12-07 03:00:03
-
QGIS坐标系转换失败?自定义投影怎么设? 2025-12-07 02:00:03
-
QGIS处理工具箱在哪?算法流程怎么搭建? 2025-12-07 01:00:03
-
QGIS Web Client怎么装?前端地图如何展示? 2025-12-07 00:00:03
-
QGIS Python控制台怎么用?常用命令有哪些? 2025-12-06 23:00:03
-
SAGA GIS工具在哪?地形分析参数怎么设? 2025-12-06 22:00:03
-
QGIS三维模式怎么开?3D地图场景如何配? 2025-12-06 21:00:03
-
GeoPackage对比Shapefile?数据格式选哪个? 2025-12-06 20:00:03
-
Mergin Maps怎么注册?外业数据如何回传? 2025-12-06 19:00:03
-
QGIS字段计算器怎么用?常用表达式有哪些? 2025-12-06 18:00:03
-
QGIS加载数据太慢?图层渲染性能怎么提? 2025-12-06 17:00:03