PIE-engine 教程 ——全球夜间灯光指数动画加载含ui.legend图例添加

举报
此星光明 发表于 2022/09/25 07:48:13 2022/09/25
【摘要】 本次我们要使用到的影像时全球夜间灯光数据集,VIIRS_VCMCFG/NIGHTTIME_LIGHTS 新一代对地观测卫星Suomi NPP,搭载的可见光红外成像辐射仪(Visible Infrared Imaging Radiometer Suit,VIIRS),能够获取新的夜间灯光遥感影像(Day/Night Band,DNB波段...

本次我们要使用到的影像时全球夜间灯光数据集,VIIRS_VCMCFG/NIGHTTIME_LIGHTS

新一代对地观测卫星Suomi NPP,搭载的可见光红外成像辐射仪(Visible Infrared Imaging Radiometer Suit,VIIRS),能够获取新的夜间灯光遥感影像(Day/Night Band,DNB波段)。VIIRS_VCMCFG夜光遥感数据的空间分辨率为750m,准确地记录了夜光辐射强度,相比DMSP/OLS能够探测到更微弱的灯光辐射。

时间范围时2012年至今——

波段信息:

名称 单位 值域范围 描述信息
avg_rad nanoWatts/cm2/sr -1.5-340573 平均DNB辐射值
cf_cvg 0-58 平均值中使用的无云观测总数,此波段可用来确定质量下降区域的面积。

date

string

影像时间

本教程需要用到的函数:

代码:


  
  1. //加载全球国家行政区划边界数据
  2. var roi = pie
  3. .FeatureCollection("RESDC/WORLD_COUNTRY_BOUNDARY")
  4. .filter(pie.Filter.eq("fcname", "中国"));
  5. visroi = { color: "ff0000ff", fillColor: "00000000", width: 1 };
  6. Map.addLayer(roi, visroi, "中国", false);
  7. var chn = roi.getAt(0).geometry();
  8. //定位地图中心
  9. Map.centerObject(chn, 3);
  10. //设置夜光数据预览参数及颜色组合
  11. var colors = [
  12. "#000000",
  13. "#4c3300",
  14. "#664401",
  15. "#7f5501",
  16. "#996601",
  17. "#b27702",
  18. "#cc8802",
  19. "#e59902",
  20. "#ffad02",
  21. "#ffaf02",
  22. "#ffb102",
  23. "#ffb302",
  24. "#ffb502",
  25. "#ffb702",
  26. "#ffb902",
  27. "#ffbb02",
  28. "#ffbd02",
  29. "#ffc002",
  30. "#ffc202",
  31. "#ffc402",
  32. "#ffc602",
  33. "#ffc801",
  34. "#ffca01",
  35. "#ffcc01",
  36. "#ffce01",
  37. "#ffd001",
  38. "#ffd201",
  39. "#ffd501",
  40. "#ffd701",
  41. "#ffd901",
  42. "#ffdb01",
  43. "#ffdd01",
  44. "#ffdf01",
  45. "#ffe101",
  46. "#ffe300",
  47. "#ffe500",
  48. "#ffe700",
  49. "#ffea00",
  50. "#ffec00",
  51. "#ffee00",
  52. "#fff000",
  53. "#fff200",
  54. "#fff400",
  55. "#fff600",
  56. "#fff800",
  57. "#fffa00",
  58. "#fffc00",
  59. "#ffff00",
  60. ];
  61. var visParams = {
  62. min: 0,
  63. max: 60,
  64. palette: colors,
  65. };
  66. //定义夜光指数计算函数
  67. function calcNT(night, chn) {
  68. var result = night.reduceRegion(pie.Reducer.mean(), chn, 1);
  69. return result;
  70. }
  71. //循环计算影像的夜光指数
  72. var xSeries = [];
  73. var chnNT = [];
  74. for (var i = 2013; i < 2021; i++) {
  75. var nightLight = pie
  76. .ImageCollection("VIIRS_VCMCFG/NIGHTTIME_LIGHTS")
  77. .filterDate(i + "-01-01", i + "-12-31")
  78. .map(function (image) {
  79. return image.select("avg_rad").divide(1000).rename("a_r");
  80. })
  81. .mean();
  82. Map.addLayer(nightLight, visParams, String(i), true);
  83. var chnresult = calcNT(nightLight, chn);
  84. xSeries.push(String(i));
  85. chnNT.push(chnresult);
  86. }
  87. //动画显示
  88. Map.playLayersAnimation(xSeries, 0.5, 100);
  89. //添加图例
  90. var data = {
  91. title: "夜光指数",
  92. colors: colors,
  93. step: 30,
  94. };
  95. //设定图例位置
  96. var style = {
  97. top: "80%",
  98. left: "40%",
  99. height: "70px",
  100. width: "350px",
  101. };
  102. var legend = ui.Legend(data, style);
  103. Map.addUI(legend);

我这里只节选其中一年的影像进行展示: 

 当然这里我们无法看出时哪一年的影像,我们可以添加一个label来完成相应图层的信息展示:


  
  1. var xSeries = [];
  2. var label = ui.Label("");
  3. label = label.setStyle({
  4. backgroundColor: "white",
  5. });
  6. Map.addUI(label);
  7. Map.playLayersAnimation(xSeries, 1, -1, function (name, index) {
  8. label = label.setValue("中国2000-2020年人口变化:" + name + "年");
  9. });

文章来源: blog.csdn.net,作者:此星光明,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31988139/article/details/126940831

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。