城市道路网络是城市交通规划、应急管理的重要基础数据。传统道路提取依赖人工数字化或高分辨率影像解译,耗时且难以适应大范围监测需求。本文基于Google Earth Engine(GEE)平台,以某区域为例,使用Sentinel-2卫星影像和Canny边缘检测算法,仅需几行代码即可实现道路网络的自动化提取。整个过程无需本地处理海量数据,从影像加载到结果可视化全程云端完成,为城市道路监测提供高效、可复用的技术方案。
一、技术原理:为什么这样能提取道路?
要理解代码的工作逻辑,首先需要明确两个核心技术点:Sentinel-2影像的特性,以及Canny边缘检测的原理。
1.1 Sentinel-2影像:道路提取的理想数据源
Sentinel-2是欧洲航天局(ESA)发射的高分辨率光学卫星,其数据对道路提取的优势体现在:
- 空间分辨率适中:可见光波段(如B2-B4)和近红外波段(B8)分辨率达10米,既能清晰区分道路与周边地物(如建筑物、植被),又不会因分辨率过高(如亚米级)导致数据量过大、计算复杂。
- 光谱特征明显:道路(尤其是沥青、水泥路面)在近红外波段(B8)反射率较低,与周边植被(近红外反射率高)、建筑物(反射率中等)形成显著差异,为边缘识别提供了光谱基础。
- 免费且覆盖广:Sentinel-2数据全球免费获取,且重访周期仅5天,可满足不同时间节点的道路监测需求。
1.2 Canny边缘检测:捕捉道路的“轮廓”
道路在影像中表现为“条带状”地物,其与周边地物的边界(边缘)是识别的关键。Canny边缘检测算法通过以下步骤精准捕捉这些边缘:
- 去噪预处理:通过高斯滤波(代码中
sigma=1参数)平滑影像,减少噪声对边缘识别的干扰——这一步能避免将树木阴影、路面坑洼误判为边缘。 - 梯度计算:计算影像中每个像元的灰度变化梯度(亮度变化速率),道路与非道路的交界处梯度值会突然增大。
- 阈值筛选:通过
threshold=0.3参数设定梯度阈值,仅保留梯度值超过阈值的像元——这些像元对应“真实边缘”(如道路两侧边界)。 - 边缘连接:将离散的边缘像元连接成连续线条,最终形成道路网络的轮廓。
二、代码分步解析:从数据到道路网络
以下代码基于GEE平台,完整实现从影像加载到道路边缘显示的全流程。以某区域(经纬度范围:121.448°-121.490°E,31.203°-31.235°N)为例,提取2023年道路网络边缘。
1. 定义研究区(确定“在哪里提取”)
// 定义研究区边界(经纬度坐标围成的矩形区域)
var roi = ee.Geometry.Polygon(
[[[121.44827391124954, 31.234970876428836],
[121.44827391124954, 31.203114529882434],
[121.49007345653763, 31.203114529882434],
[121.49007345653763, 31.234970876428836]]], null, false);
代码说明:
- 用
ee.Geometry.Polygon定义矩形研究区(roi),坐标为该区域的经纬度边界(可根据需求替换为目标区域坐标)。 - 最后一个参数
false表示区域为逆时针闭合(确保几何形状正确)。
2. 加载并预处理Sentinel-2影像(准备“原始材料”)
// 加载2023年研究区Sentinel-2影像并预处理
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')

最低0.47元/天 解锁文章
925

被折叠的 条评论
为什么被折叠?



