Google Earth Engine(GEE)——LandScan人口数据集

简介: Google Earth Engine(GEE)——LandScan人口数据集

LandScan人口数据

LandScan计划于1997年在橡树岭国家实验室(ORNL)启动,以满足为后果评估改进人口估计的需要。例如,全球范围内的自然和人为灾害使大量的人口处于危险之中,而且往往没有什么预先警告。开发高分辨的估计值是至关重要的,这样他们就可以对多个地理范围内的事件进行评估。自1998年以来,这一直是一个年度产品。

在为LandScan Global开发的建模方法的基础上,利用美国更高质量的数据,我们在2004年的LandScan USA的第一个版本中提高了空间和时间分辨率。创建LandScan USA的目的是为了捕捉人口的昼夜变化,这对各种分析和行动(包括应急准备和响应)至关重要。2016年,最初的LandScan USA模型被重新设计,以纳入地理空间技术的进步、机器学习方法和新的输入数据源。从那时起,我们每年都对基础模型进行改进,并每年发布一个新版本的数据集。

在LandScan USA首次启动的时候,ORNL也在机器学习和计算机视觉方面进行了开拓性的工作,特别是为了识别高空图像中明显的人为信号。这项工作最终实现了从高分辨率图像中快速、大规模地检测人类住区,并成为早期开发美国以外地区改进的分辨率人口分布的努力的基础,被称为Landscan HD。LandScan HD模型采用了多模式数据融合、空间数据科学、大数据资源和卫星图像利用的混合物。第一个国家尺度的LandScan HD数据集创建于2014年,此后不断有新的国家尺度数据集被开发出来。

免责声明:数据集的全部或部分描述是由作者或其作品提供的。

论文引用:

Sims, K., Reith, A., Bright, E., McKee, J., & Rose, A. (2022). LandScan Global 2021 [Data set]. Oak Ridge National Laboratory. https://doi.org/10. 48690/1527702

Weber, E., Moehl, J., Weston, S., Rose, A., Brelsford, C., & Hauser, T. (2022). LandScan USA 2021 [Data set]. Oak Ridge National Laboratory. https:// doi.org/10.48690/1527701

GEE 中的代码连接:

Earth Engine Snippet: LANDSCAN GLOBAL

var landscan_global = ee.ImageCollection("projects/sat-io/open-datasets/ORNL/LANDSCAN_GLOBAL");
var popcount_intervals =
'<RasterSymbolizer>' +
' <ColorMap type="intervals" extended="false" >' +
    '<ColorMapEntry color="#CCCCCC" quantity="0" label="No Data"/>' +
    '<ColorMapEntry color="#FFFFBE" quantity="5" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FEFF73" quantity="25" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FEFF2C" quantity="50" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FFAA27" quantity="100" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FF6625" quantity="500" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FF0023" quantity="2500" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#CC001A" quantity="5000" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#730009" quantity="185000" label="Population Count (Estimate)"/>' +
  '</ColorMap>' +
'</RasterSymbolizer>';
// Define a dictionary which will be used to make legend and visualize image on map
var dict = {
  "names": [
    "0",
    "1-5",
    "6-25",
    "26-50",
    "51-100",
    "101-500",
    "501-2500",
    "2501-5000",
    "5001-185000"
  ],
  "colors": [
    "#CCCCCC",
    "#FFFFBE",
    "#FEFF73",
    "#FEFF2C",
    "#FFAA27",
    "#FF6625",
    "#FF0023",
    "#CC001A",
    "#730009"
  ]};
  
  // Create a panel to hold the legend widget
var legend = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});
// Function to generate the legend
function addCategoricalLegend(panel, dict, title) {
  
  // Create and add the legend title.
  var legendTitle = ui.Label({
    value: title,
    style: {
      fontWeight: 'bold',
      fontSize: '18px',
      margin: '0 0 4px 0',
      padding: '0'
    }
  });
  panel.add(legendTitle);
  
  var loading = ui.Label('Loading legend...', {margin: '2px 0 4px 0'});
  panel.add(loading);
  
  // Creates and styles 1 row of the legend.
  var makeRow = function(color, name) {
    // Create the label that is actually the colored box.
    var colorBox = ui.Label({
      style: {
        backgroundColor: color,
        // Use padding to give the box height and width.
        padding: '8px',
        margin: '0 0 4px 0'
      }
    });
  
    // Create the label filled with the description text.
    var description = ui.Label({
      value: name,
      style: {margin: '0 0 4px 6px'}
    });
  
    return ui.Panel({
      widgets: [colorBox, description],
      layout: ui.Panel.Layout.Flow('horizontal')
    });
  };
  
  // Get the list of palette colors and class names from the image.
  var palette = dict['colors'];
  var names = dict['names'];
  loading.style().set('shown', false);
  
  for (var i = 0; i < names.length; i++) {
    panel.add(makeRow(palette[i], names[i]));
  }
  
  Map.add(panel);
}
addCategoricalLegend(legend, dict, 'Population Count(estimate)');
Map.addLayer(landscan_global.sort('system:time_start').first().sldStyle(popcount_intervals), {}, 'Population Count Estimate 2000');
Map.addLayer(landscan_global.sort('system:time_start',false).first().sldStyle(popcount_intervals), {}, 'Population Count Estimate 2021');

Sample code: https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:population-socioeconomics/LANDSCAN-GLOBAL

 

Earth Engine Snippet: LANDSCAN USA

var landscan_usa_night = ee.ImageCollection("projects/sat-io/open-datasets/ORNL/LANDSCAN_USA_NIGHT");
var landscan_usa_day = ee.ImageCollection("projects/sat-io/open-datasets/ORNL/LANDSCAN_USA_DAY");
var popcount_intervals =
'<RasterSymbolizer>' +
' <ColorMap type="intervals" extended="false" >' +
    '<ColorMapEntry color="#CCCCCC" quantity="0" label="No Data"/>' +
    '<ColorMapEntry color="#FFFFBE" quantity="5" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FEFF73" quantity="25" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FEFF2C" quantity="50" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FFAA27" quantity="100" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FF6625" quantity="500" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FF0023" quantity="2500" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#CC001A" quantity="5000" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#730009" quantity="185000" label="Population Count (Estimate)"/>' +
  '</ColorMap>' +
'</RasterSymbolizer>';
// Define a dictionary which will be used to make legend and visualize image on map
var dict = {
  "names": [
    "0",
    "1-5",
    "6-25",
    "26-50",
    "51-100",
    "101-500",
    "501-2500",
    "2501-5000",
    "5001-185000"
  ],
  "colors": [
    "#CCCCCC",
    "#FFFFBE",
    "#FEFF73",
    "#FEFF2C",
    "#FFAA27",
    "#FF6625",
    "#FF0023",
    "#CC001A",
    "#730009"
  ]};
  
  // Create a panel to hold the legend widget
var legend = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});
// Function to generate the legend
function addCategoricalLegend(panel, dict, title) {
  
  // Create and add the legend title.
  var legendTitle = ui.Label({
    value: title,
    style: {
      fontWeight: 'bold',
      fontSize: '18px',
      margin: '0 0 4px 0',
      padding: '0'
    }
  });
  panel.add(legendTitle);
  
  var loading = ui.Label('Loading legend...', {margin: '2px 0 4px 0'});
  panel.add(loading);
  
  // Creates and styles 1 row of the legend.
  var makeRow = function(color, name) {
    // Create the label that is actually the colored box.
    var colorBox = ui.Label({
      style: {
        backgroundColor: color,
        // Use padding to give the box height and width.
        padding: '8px',
        margin: '0 0 4px 0'
      }
    });
  
    // Create the label filled with the description text.
    var description = ui.Label({
      value: name,
      style: {margin: '0 0 4px 6px'}
    });
  
    return ui.Panel({
      widgets: [colorBox, description],
      layout: ui.Panel.Layout.Flow('horizontal')
    });
  };
  
  // Get the list of palette colors and class names from the image.
  var palette = dict['colors'];
  var names = dict['names'];
  loading.style().set('shown', false);
  
  for (var i = 0; i < names.length; i++) {
    panel.add(makeRow(palette[i], names[i]));
  }
  
  Map.add(panel);
}
addCategoricalLegend(legend, dict, 'Population Count(estimate)');
//Cast to Int 16 & mask no data value
function cast(image){
  var img = image.toInt16()
  return img.mask(img.neq(-32768)).copyProperties(image)
  
}
//Datasets need explicit casting owing to difference in data type from source
landscan_usa_night= landscan_usa_night.map(cast)
landscan_usa_day= landscan_usa_day.map(cast)
Map.addLayer(ee.Image(landscan_usa_night.filterDate('2016-01-01','2016-12-31').median()).sldStyle(popcount_intervals),{},'LANDSCAN USA NIGHT 2016',false)
Map.addLayer(ee.Image(landscan_usa_night.filterDate('2021-01-01','2021-12-31').median()).sldStyle(popcount_intervals),{},'LANDSCAN USA NIGHT 2021',false)
Map.addLayer(ee.Image(landscan_usa_day.filterDate('2016-01-01','2016-12-31').median()).sldStyle(popcount_intervals),{},'LANDSCAN USA DAY 2016',false)
Map.addLayer(ee.Image(landscan_usa_day.filterDate('2021-01-01','2021-12-31').median()).sldStyle(popcount_intervals),{},'LANDSCAN USA DAY 2021',false)

Sample code: https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:population-socioeconomics/LANDSCAN-USA

 

Earth Engine Snippet: LANDSCAN HD

var landscan_hd = ee.ImageCollection("projects/sat-io/open-datasets/ORNL/LANDSCAN_HD");
var popcount_intervals =
'<RasterSymbolizer>' +
' <ColorMap type="intervals" extended="false" >' +
    '<ColorMapEntry color="#CCCCCC" quantity="0" label="No Data"/>' +
    '<ColorMapEntry color="#FFFFBE" quantity="5" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FEFF73" quantity="25" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FEFF2C" quantity="50" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FFAA27" quantity="100" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FF6625" quantity="500" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#FF0023" quantity="2500" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#CC001A" quantity="5000" label="Population Count (Estimate)"/>' +
    '<ColorMapEntry color="#730009" quantity="185000" label="Population Count (Estimate)"/>' +
  '</ColorMap>' +
'</RasterSymbolizer>';
// Define a dictionary which will be used to make legend and visualize image on map
var dict = {
  "names": [
    "0",
    "1-5",
    "6-25",
    "26-50",
    "51-100",
    "101-500",
    "501-2500",
    "2501-5000",
    "5001-185000"
  ],
  "colors": [
    "#CCCCCC",
    "#FFFFBE",
    "#FEFF73",
    "#FEFF2C",
    "#FFAA27",
    "#FF6625",
    "#FF0023",
    "#CC001A",
    "#730009"
  ]};
  
  // Create a panel to hold the legend widget
var legend = ui.Panel({
  style: {
    position: 'bottom-left',
    padding: '8px 15px'
  }
});
// Function to generate the legend
function addCategoricalLegend(panel, dict, title) {
  
  // Create and add the legend title.
  var legendTitle = ui.Label({
    value: title,
    style: {
      fontWeight: 'bold',
      fontSize: '18px',
      margin: '0 0 4px 0',
      padding: '0'
    }
  });
  panel.add(legendTitle);
  
  var loading = ui.Label('Loading legend...', {margin: '2px 0 4px 0'});
  panel.add(loading);
  
  // Creates and styles 1 row of the legend.
  var makeRow = function(color, name) {
    // Create the label that is actually the colored box.
    var colorBox = ui.Label({
      style: {
        backgroundColor: color,
        // Use padding to give the box height and width.
        padding: '8px',
        margin: '0 0 4px 0'
      }
    });
  
    // Create the label filled with the description text.
    var description = ui.Label({
      value: name,
      style: {margin: '0 0 4px 6px'}
    });
  
    return ui.Panel({
      widgets: [colorBox, description],
      layout: ui.Panel.Layout.Flow('horizontal')
    });
  };
  
  // Get the list of palette colors and class names from the image.
  var palette = dict['colors'];
  var names = dict['names'];
  loading.style().set('shown', false);
  
  for (var i = 0; i < names.length; i++) {
    panel.add(makeRow(palette[i], names[i]));
  }
  
  Map.add(panel);
}
addCategoricalLegend(legend, dict, 'Population Count(estimate)');
print(landscan_hd.aggregate_array('country'))
Map.addLayer(landscan_hd.mosaic().sldStyle(popcount_intervals), {}, 'Population Count Estimate LANDSCAN HD');

Sample code: https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:population-socioeconomics/LANDSCAN-HD

 

License

These datasets are offered under the Creative Commons Attribution 4.0 International License. Users are free to use, copy, distribute, transmit, and adapt the data for commercial and non-commercial purposes, without restriction, as long as clear attribution of the source is provided.

Created by: Oakridge National Laboratory

Curated in GEE by : Samapriya Roy

keywords: Global Population, Population count, Diurnal population, remote sensing, machine learning

相关文章
|
7月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2691 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
7月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
251 0
|
7月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
141 0
|
7月前
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
662 1
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
7月前
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
370 4
|
7月前
|
机器学习/深度学习 存储 人工智能
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
GEE Colab——初学者福音快速入门 Google Colab(Colaboratory)
255 3
|
7月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
124 0
|
7月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
101 0
|
7月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
165 0
|
7月前
|
编解码
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
88 0