基于GEE的VIIRS夜光数据监测上海城市扩展

一、研究背景

随着城市化进程的加快,城市空间不断扩展,夜间灯光遥感数据成为监测城市发展和变化的重要手段。VIIRS卫星夜光数据以其高分辨率和稳定性,广泛应用于城市扩展、人口分布及能源消耗等研究。
本文利用Google Earth Engine平台,基于VIIRS夜光数据监测上海地区2013-2023年间的城市灯光空间变化,并统计面积变化趋势。

二、数据与方法

1. 区域定义及时间范围设置

// ===================== 1. 区域与参数设置 =====================
var region = ee.FeatureCollection("projects/ee-hllutlu2024/assets/SHANGHAI");

Map.centerObject(region, 9);

// 时间设置
var startYear = 2013;
var endYear = 2023;

说明:

  • 使用自己的GEE资产中上海市边界矢量数据定义研究区域。
  • Map.centerObject将地图缩放并定位到上海区域,便于可视化。
  • 设定时间范围为2013年至2023年,分析近11年的城市灯光变化。

2. 加载VIIRS夜光影像

// ===================== 2. 加载VIIRS夜光数据 =====================
var viirs = ee.ImageCollection('NOAA/VIIRS/DNB/MONTHLY_V1/VCMCFG')
               .select('avg_rad');  // 选择平均辐射值波段

说明:

  • 载入NOAA发布的VIIRS月度夜光平均辐射影像集合。
  • 选择avg_rad波段,该波段反映夜间灯光的辐射强度。

3. 生成每年的夜光合成影像

// ===================== 3. 生成年度最大合成影像集合 =====================
var yearlyList = ee.List.sequence(startYear, endYear).map(function(y){
  y = ee.Number(y);
  var start = ee.Date.fromYMD(y, 1, 1);
  var end = ee.Date.fromYMD(y, 12, 31);
  
  var yearly = viirs.filterDate(start, end)
                   .filterBounds(region)
                   .median()
                   .set('year', y);
  return yearly;
});

var yearlyLights = ee.ImageCollection.fromImages(yearlyList);

说明:

  • 通过循环生成每年的时间区间。
  • 筛选该年内覆盖研究区的VIIRS影像。
  • 利用中位数合成减少异常和噪声影响,获得年度代表影像。
  • 给影像设置年份属性,方便后续处理。
  • 组合为影像集合。

4. 利用阈值提取城市灯光区域

// ===================== 4. 灯光阈值提取城市区域 =====================
var threshold = 20; // 夜光强度阈值,需根据实际调整
var extractUrban = function(img) {
  var year = img.get('year');
  var urban = img.gt(threshold).selfMask()
                .clip(region)
                .set('year', year);
  return urban;
};

var urbanAreas = yearlyLights.map(extractUrban);

说明:

  • 设定夜光强度阈值为20,识别夜光亮度较高区域。
  • 利用gt(threshold)进行像素阈值判断,selfMask()屏蔽非城市区域。
  • 裁剪到上海边界内,避免溢出。
  • 保持年份属性。
  • 对所有年度影像进行处理,得到城市灯光二值化影像集合。

5. 地图可视化

// ===================== 5. 可视化 =====================
var visParams = {
  min: 0,
  max: 60,
  palette: ['000000', 'ffff00', 'ff0000']  // 从黑到红的夜光色带
};

var singleYear = yearlyLights.filter(ee.Filter.eq('year', 2023)).first();
Map.addLayer(singleYear.clip(region), visParams, 'VIIRS Nightlight 2023');

var singleUrban = urbanAreas.filter(ee.Filter.eq('year', 2023)).first();
Map.addLayer(singleUrban, {palette: ['00FF00']}, 'Urban Area 2023');

说明:

  • 定义夜光影像色带,颜色从黑色无光到红色高亮。
  • 筛选2023年影像进行展示。
  • 加载原始夜光数据与提取的城市灯光区域。
  • 绿色用于标注城市灯光范围,便于直观识别。

6. 统计城市灯光面积并绘制变化趋势图

// ===================== 6. 绘图(面积统计) =====================
var areaChart = ui.Chart.image.series({
  imageCollection: urbanAreas.map(function(img){
    var pixelArea = ee.Image.pixelArea();
    var areaImage = img.multiply(pixelArea).divide(1e6); // 转换为平方公里
    
    var stats = areaImage.reduceRegion({
      reducer: ee.Reducer.sum(),
      geometry: region,
      scale: 500,
      maxPixels: 1e13
    });
    
    return ee.Image.constant(stats.get('avg_rad')).set('year', img.get('year'));
  }),
  region: region,
  reducer: ee.Reducer.first(),
  scale: 500,
  xProperty: 'year'
}).setOptions({
  title: '上海市城市灯光区域面积变化(km²)',
  hAxis: {title: '年份'},
  vAxis: {title: '灯光区域面积(平方公里)'},
  lineWidth: 3,
  pointSize: 5
});

print(areaChart);

说明:

  • 计算每年灯光区域的像素面积,转化为平方公里单位。
  • 使用reduceRegion求和统计总面积。
  • 生成年度面积序列,用于绘制折线图。
  • 设置图表标题、坐标轴标签,增强图表可读性。
  • 打印图表,结果显示上海近11年夜光区域面积变化趋势。

7. 添加简易图例面板

// ===================== 7. 添加简单图例 =====================

// 创建图例面板
var legend = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});

// 图例标题
var legendTitle = ui.Label({
  value: '图例说明',
  style: {fontWeight: 'bold', fontSize: '16px', margin: '0 0 6px 0'}
});
legend.add(legendTitle);

// 生成颜色方块函数
var makeColorBox = function(color) {
  return ui.Label({
    style: {
      backgroundColor: color,
      padding: '8px',
      margin: '0 0 4px 0',
      width: '20px',
      height: '20px',
      border: '1px solid black'  // 边框便于识别
    }
  });
};

// 生成文字标签函数
var makeLabel = function(text) {
  return ui.Label({
    value: text,
    style: {margin: '0 0 4px 6px'}
  });
};

// 创建图例项面板,水平布局
var legendItem = ui.Panel({
  widgets: [makeColorBox('00FF00'), makeLabel('城市灯光区域')],
  layout: ui.Panel.Layout.Flow('horizontal')
});

legend.add(legendItem);

// 将图例面板添加到地图
Map.add(legend);

说明:

  • 使用ui.Panel创建地图左下角固定位置的图例面板。
  • 添加标题“图例说明”。
  • 绿色方块表示城市灯光提取区域,配文字说明。
  • 颜色块和文字水平排列,界面简洁明了。
  • 图例提升地图可读性和用户体验。

三、结果总结与应用

通过上述流程,我们实现了上海地区基于VIIRS夜光数据的城市灯光区域提取及面积变化趋势分析。结果显示:

  • 2023年上海夜光覆盖区域较大,反映城市空间扩展。

  • 下面三幅图分别为叠加结果、城市区域和夜光数据可视化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 近十年夜光面积呈现增长趋势,客观反映城市化进程。
    在这里插入图片描述

  • 该方法简单高效,适用于多区域、多时段城市扩展监测。

四、未来工作建议

  • 优化阈值选择,结合统计分析提升城市边界提取准确度。
  • 引入土地利用和人口数据,深化多源遥感融合分析。
  • 实现动态变化可视化(动画),更直观展示城市扩展过程。
  • 扩展自动化批处理脚本,提升研究效率。

欢迎大家关注我的公众号:遥感AI实战,进一步交流!

热岛是指城地区由于人为活动所致的高能耗和大量的建筑物、道路等人造热源,导致城内部温度较郊区和乡村地区明显升高的现象。通过Google Earth Engine(GEE)的数据分析,可以对城热岛效应进行全面的监测和评估。 首先,利用GEE遥感影像数据和地表温度监测分析工具,可以实现对城不同区域的地表温度进行监测。通过比对不同时间段的数据,可以发现城相对于郊区和乡村地区的地表温度普遍较高,从而揭示出城热岛效应的分布和程度。 其次,GEE提供的地理信息系统功能可以对城的土地利用、植被覆盖等因素进行空间分析,从而找出对城热岛效应有影响的因素。例如,可以发现城中心区域大量的钢筋混凝土建筑和少量的绿地相比于郊区的绿化率较低,成为导致城热岛效应的重要原因之一。 最后,利用GEE的大数据处理和可视化功能,可以将监测到的城热岛效应数据以图表或热力图等形式展示出来,让决策者和公众更直观地了解城热岛效应的分布和变化趋势,为城热岛问题的治理提供数据支持和科学依据。 总之,基于GEE的城热岛效应监测和评估,可以为城规划和环境保护部门提供科学的数据支持,帮助他们更好地了解城热岛效应的形成机制和影响因素,制定相应的治理措施和政策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥感AI实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值