查看原文
其他

【教程】利用GEE进行遥感影像分类【随机森林分类】

Ai尚研修 2023-09-06

Part1简介

在本模块中,我们将讨论以下概念:

  1. 监督和非监督图像分类之间的区别。

  2. Google Earth Engine 提供的各种分类算法的定义和应用。

  3. 如何使用 randomForest 设置和运行分类,以 aspen 存在和不存在作为示例数据集。

Part2背景

图像分类
人类自然倾向于将空间信息组织成组。从上面,我们识别出常见的地貌,如湖泊和河流、建筑物和道路、森林和沙漠。我们将这种具有相似特征的对象分组称为“图像分类”。但在全球范围内手动对对象进行分类和赋值将是一项无休止的任务。值得庆幸的是,使用遥感数据将不同的景观特征划分为分类类别已成为过去 40 年生态研究的主要内容。从农业发展和土地覆盖变化,到造林实践和污染监测,所有领域都进行了分类。

非监督与监督分类
的图像分类方法可以分为两类。首先,非监督分类涉及将潜在的预测变量应用于地理区域,并要求预测算法或先验回归系数来完成图像分类的工作。第二个,监督分类,需要创建独立的训练数据:概率模型可以用来发现观察条件和一组预测变量之间的关联的信息。

Google 地球引擎分类
器 在 Google 地球引擎ee.Classifier()功能的可用选项中,有几个属于“机器学习”的一般类别。算法函数从提供给它们的数据中“学习”,并根据学习到的信息进行预测。这些分类器特别擅长从大量遥感预测变量和(通常是高度非线性的)训练数据之间的关系构建统计模型。然后可以在大空间范围内应用这些模型,以生成地图输出形式的预测。近年来,分类和回归树 (CART)和 randomForest 等分类器已从计算机科学和统计学界引入生态研究。

randomForest
在 Google Earth Engine 中可用于监督分类的一种常用算法是 randomForest ( Breiman, 2001)。简而言之,随机森林 (RF) 模型是通过获取训练数据的随机子集(即现场测量、气象站记录)并将它们拟合到决策树中预测变量的随机子集(即遥感数据)而构建的。虽然没有一棵树能完美地捕捉训练数据和预测数据之间的统计关系,但树木的汇编,森林,讲述了一个更完整的故事。如果这听起来很复杂,请不要担心!分类器将在幕后完成所有艰苦的工作。但在使用强大的工具(如 RF)时,我们有责任了解它接收到的信息类型。就像人体一样,如果您为训练数据和预测器提供低质量的射频信息,您的输出将反映该质量。所以,了解你的数据!

Part3Google Earth Engine 图像分类工作流程

在本模块中,我们将介绍 Google 地球引擎中的示例建模工作流程。我们将看到如何设置我们的初始数据集,构建潜在预测器列表,运行我们的 RF 分类器,将结果模型应用于更大的空间范围,并评估我们的 RF 模型的准确性。在此示例中,我们将使用 RF 对白杨林进行分类,白杨林提供多种生态系统服务,从木材产品库存到美国科罗拉多州西部生物多样性丰富的野生动物栖息地。

3.1设置我们的图像

至此,我们之前的模块已经涵盖了加载数据(模块 1)、过滤数据(模块 2)和创建基本云遮罩(模块 5)所需的大部分概念。下面代码中的一个小区别是,我们的云遮罩需要针对 Landsat 8 进行调整。运行下面的代码将我们的基础数据集限制为秋季图像,以捕捉白杨独特的黄色树叶。

使用下面的代码启动一个新脚本,您的地图窗格应该会生成下面的图像。

  1. // Import and filter Landsat 8 surface reflectance data.

  2. var LS8_SR1 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')

  3. .filterDate('2015-08-01', '2015-11-01') //new date

  4. .filter(ee.Filter.eq('WRS_PATH', 35))

  5. .filter(ee.Filter.eq('WRS_ROW', 33))

  6. .filterMetadata('CLOUD_COVER', 'less_than', 20);


  7. // Create true color visualization parameters

  8. // to take an initial look at the study area.

  9. var visTrueColor = {bands: ["B4","B3","B2"], max:2742, min:0};

  10. Map.addLayer(LS8_SR1, visTrueColor, 'LS8_SR1', false);

  11. Map.centerObject(ee.Geometry.Point(-107.8583, 38.8893), 8);


  12. // Define a cloud mask function specific to Landsat 8.

  13. var maskClouds = function(image){

  14. var clear = image.select('pixel_qa').bitwiseAnd(2).neq(0);

  15. return image.updateMask(clear);

  16. };


  17. // Apply the cloud mask function to the previously filtered image

  18. // collection and calculate the median.

  19. var LS8_SR2 = LS8_SR1

  20. .map(maskClouds)

  21. .median();

  22. Map.addLayer(LS8_SR2, visTrueColor, 'LS8_SR2 - masked')

 可视化我们最初的美国科罗拉多州西部 Landsat 中值图像,去除了云层。

3.2制作预测列表

现在我们可以开始构建我们的预测器列表。您可能会阅读有关可以处理“高维”预测器列表的分类算法。这仅仅意味着可以包含大量潜在的解释变量。基于我们正在研究的生态系统的现有知识,我们可以选择一组初始变量,我们假设这些变量可以解释和预测景观中白杨的存在。将以下代码附加到您的脚本将构建一个多波段图像,其中包含我们所需的所有预测变量,包括一些与植被相关的光谱指数。打印predictors对象应该会在代码下方显示控制台输出。

  1. // First define individual bands as variables.

  2. var red = LS8_SR2.select('B4').rename("red")

  3. var green= LS8_SR2.select('B3').rename("green")

  4. var blue = LS8_SR2.select('B2').rename("blue")

  5. var nir = LS8_SR2.select('B5').rename("nir")

  6. var swir1 = LS8_SR2.select('B6').rename("swir1")

  7. var swir2 = LS8_SR2.select('B7').rename("swir2")


  8. // Then, calculate three different vegetation indices: NDVI, NDWI, and TCB.

  9. var ndvi = nir.subtract(red).divide(nir.add(red)).rename('ndvi');

  10. var ndwi = green.subtract(nir).divide(green.add(nir)).rename('ndwi');

  11. var TCB = LS8_SR2.expression(

  12. "0.3029 * B2 + 0.2786 * B3 + 0.4733 * B4 + 0.5599 * B5 + 0.508 * B6 + 0.1872 * B7" , {

  13. 'B2': blue,

  14. 'B3': green,

  15. 'B4': red,

  16. 'B5': nir,

  17. 'B6': swir1,

  18. 'B7': swir1

  19. }).rename("TCB");


  20. // Combine the predictors into a single image.

  21. var predictors = nir

  22. .addBands(blue)

  23. .addBands(green)

  24. .addBands(red)

  25. .addBands(swir1)

  26. .addBands(swir2)

  27. .addBands(ndvi)

  28. .addBands(TCB)

  29. .addBands(ndwi)


  30. print('predictors: ', predictors);


来自对象的打印语句的文本predictors,列出了每个波段以及相应的预测器名称。
 

3.3加载训练数据

要将值提取到点,我们必须首先导入我们的点数据集。幸运的是,我们已经准备好使用特定的 FeatureCollection ID 直接调用它。这些点表示白杨树存在和不存在的区域,因此我们将变量命名为PA。导入的训练数据可能要复杂得多,但为了我们的目的,一个简单的二元分类就可以解决问题。一旦我们加载我们的训练数据,我们将需要在每个点从我们的预测器中提取值。

将下面的代码添加到我们现有的脚本中,我们可以看到我们的训练数据已经加载完毕。随意根据您的个人喜好调整颜色,但结果应类似于下图所示。

  1. var PA = ee.FeatureCollection('users/GDPE-GEE/Module7_PresAbs');

  2. Map.addLayer(PA.style({color: 'red', pointSize: 3, width: 1, fillColor: 'white'}),{}, 'Merged_Presence_Absence');


  3. var samples = predictors.sampleRegions({

  4. collection: PA,

  5. properties: ['presence'],

  6. scale: 30 });

包含有关白杨林存在和不存在位置信息的点数据。

3.4构建模型

我们的训练数据现在包含为每个点位置记录的反射率值(来自我们的空间数据变量)。这就是我们的 RF 模型将用来了解 aspen 出现和不出现的地方。在我们这样做时,重要的是要了解 Google 地球引擎中的分类器算法应被视为对遥感潜力的初步探索,以增强您的工作。为什么是这样?让我们看一下您可以在 RF 分类器中调整的参数之一numberOfTrees:在这里,我们将这个数字保持在非常低的水平,以便相对快速地加载您的模型结果。将此数字从 10 增加到例如 1000,将导致 Google 地球引擎需要长时间来处理。限制的问题numberOfTrees参数是研究表明,更多的树将生成统计上更稳健的 RF 模型(即 Evans 和 Cushman,2009 年)。正如 George Box 的名言所说,“所有模型都是错误的,但有些是有用的”,知道使用特定系统和算法的注意事项是很好的。

  1. // Using the sampled data, build a randomForest model.

  2. // Using a specific seed (random number) exactly replicates your model each time you run it.

  3. var trainingclassifier = ee.Classifier.smileRandomForest({

  4. numberOfTrees: 10,

  5. seed: 7})

  6. .train({

  7. features: samples,

  8. classProperty: 'presence'});


  9. print(trainingclassifier);

打印trainingclassifer对象后来自控制台选项卡的结果。请注意,我们可以验证我们选择了哪些模型选项,因为这些值是为numberOfTrees和打印的seed

3.5精度评估

在承认 Google Earth Engine 中参数限制的警告之后,在我们使用模型的结果进行任何预测之前,了解我们对模型结果的信任程度仍然是一个好主意。评估分类器准确性的一种方法是查看混淆矩阵。请记住,这只是衡量我们训练数据的准确性!

将以下代码附加到您的脚本并重新运行以生成控制台输出,如下所示。这不是最漂亮的可视化,但它表明这似乎是一个高度准确的白杨存在和缺失模型。

  1. // Print Confusion Matrix and Overall Accuracy.

  2. var confusionMatrix = trainingclassifier.confusionMatrix();

  3. print('Error matrix: ', confusionMatrix);

  4. print('Training overall accuracy: ', confusionMatrix.accuracy());

         


控制台选项卡来自我们的 randomForest 模型,包括混淆矩阵和整体准确度(左)以及混淆矩阵结果的解释图(右)。
 

3.6应用模型

对于可接受的模型精度,没有硬性规定。这将取决于您的数据集、研究领域和文献中设定的期望。话虽如此,我们的模型以非常高的精度生成,因此我们可以相当舒服地使用我们的模型对整个景观进行预测。不管模型的准确性如何,生态知识也可以帮助指导模型结果的解释。树木的预测不应出现在树线以上或峡谷底部的高山植被上。无论您是所在领域的专家还是仅使用常识,始终建议对模型输出进行目视检查。附加最后一段代码以完成建模演练并查看您的预测结果。

  1. // Apply the model to the extent of the loaded predictor image.

  2. var classified = predictors.classify(trainingclassifier);

  3. Map.addLayer(classified, {min:0, max:1, palette:['white', 'blue']}, 'classified')


使用我们的 randomForest 模型对整个景观进行预测的结果。白杨存在以蓝色表示,不存在以白色表示。

Part4结论

在本单元中,我们介绍了 Google 地球引擎中的图像分类。我们讨论了分类方法的一些基本定义和一般特征,包括一种称为 randomForest 的机器学习算法。然后,我们使用 randomForest 来帮助我们通过结合来自遥感预测器和现场数据的信息来生成美国科罗拉多州西部白杨存在和不存在的景观尺度预测。

Part5完整代码

  1. // Import and filter Landsat 8 surface reflectance data.

  2. var LS8_SR1 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')

  3. .filterDate('2015-08-01', '2015-11-01') //new date

  4. .filter(ee.Filter.eq('WRS_PATH', 35))

  5. .filter(ee.Filter.eq('WRS_ROW', 33))

  6. .filterMetadata('CLOUD_COVER', 'less_than', 20);


  7. // Create true color visualization parameters

  8. // to take an initial look at the study area.

  9. var visTrueColor = {bands: ["B4","B3","B2"], max:2742, min:0};

  10. Map.addLayer(LS8_SR1, visTrueColor, 'LS8_SR1', false);

  11. Map.centerObject(ee.Geometry.Point(-107.8583, 38.8893), 9);


  12. // Define a cloud mask function specific to Landsat 8.

  13. var maskClouds = function(image){

  14. var clear = image.select('pixel_qa').bitwiseAnd(2).neq(0);

  15. return image.updateMask(clear);

  16. };


  17. // Apply the cloud mask function to the previously filtered image

  18. // collection and calculate the median.

  19. var LS8_SR2 = LS8_SR1

  20. .map(maskClouds)

  21. .median();

  22. Map.addLayer(LS8_SR2, visTrueColor, 'LS8_SR2 - masked');


  23. // First define individual bands as variables.

  24. var red = LS8_SR2.select('B4').rename("red")

  25. var green= LS8_SR2.select('B3').rename("green")

  26. var blue = LS8_SR2.select('B2').rename("blue")

  27. var nir = LS8_SR2.select('B5').rename("nir")

  28. var swir1 = LS8_SR2.select('B6').rename("swir1")

  29. var swir2 = LS8_SR2.select('B7').rename("swir2")


  30. // Then, calculate three different vegetation indices: NDVI, NDWI, and TCB.

  31. var ndvi = nir.subtract(red).divide(nir.add(red)).rename('ndvi');

  32. var ndwi = green.subtract(nir).divide(green.add(nir)).rename('ndwi');

  33. var TCB = LS8_SR2.expression(

  34. "0.3037 * B2 + 0.2793 * B3 + 0.4743 * B4 + 0.5585 * B5 + 0.5082 * B6 + 0.1863 * B7" , {

  35. 'B2': blue,

  36. 'B3': green,

  37. 'B4': red,

  38. 'B5': nir,

  39. 'B6': swir1,

  40. 'B7': swir1

  41. }).rename("TCB");


  42. // Combine the predictors into a single image.

  43. var predictors = nir

  44. .addBands(blue)

  45. .addBands(green)

  46. .addBands(red)

  47. .addBands(swir1)

  48. .addBands(swir2)

  49. .addBands(ndvi)

  50. .addBands(TCB)

  51. .addBands(ndwi)


  52. print('predictors: ', predictors);


  53. // Load the field sampling locations.

  54. var PA = ee.FeatureCollection('users/GDPE-GEE/Module7_PresAbs');

  55. Map.addLayer(PA.style({color: 'red', pointSize: 3, width: 1, fillColor: 'white'}),{}, 'Merged_Presence_Absence');


  56. // Determine the values of each predictor at each training data location.

  57. var samples = predictors.sampleRegions({

  58. collection: PA,

  59. properties: ['presence'],

  60. scale: 30 });


  61. // Using the sampled data, build a randomForest model.

  62. // Using a specific seed (random number) exactly replicates your model each time you run it.

  63. var trainingclassifier = ee.Classifier.smileRandomForest({

  64. numberOfTrees: 10,

  65. seed: 7})

  66. .train({

  67. features: samples,

  68. classProperty: 'presence'});


  69. print(trainingclassifier);


  70. // Print Confusion Matrix and Overall Accuracy.

  71. var confusionMatrix = trainingclassifier.confusionMatrix();

  72. print('Error matrix: ', confusionMatrix);

  73. print('Training overall accuracy: ', confusionMatrix.accuracy());


  74. // Apply the model to the extent of the loaded predictor image.

  75. var classified = predictors.classify(trainingclassifier);

  76. Map.addLayer(classified, {min:0, max:1, palette:['white', 'blue']}, 'classified')

Part6参考文献

Breiman, Leo. “Random Forests.” Machine Learning 45, no. 1 (2001): 5-32. Random Forests | SpringerLink

Evans, Jeffrey S., and Samuel A. Cushman. “Gradient Modeling of Conifer Species Using Random Forests.” Landscape Ecology 24, no. 5 (May 2009): 673-83. Gradient modeling of conifer species using random forests | SpringerLink

————————————————

版权声明:本文为CSDN博主「GEE水生态空间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://watergee.blog.csdn.net/article/details/122936138

————————————————

推荐

7、8月份直播课程推荐


网络直播+助学群辅助+导师面对面实践工作交流

(点击课程标题了解课程详情)


环境生态/遥感类
最新导则下:基于遥感解译与GIS技术环境影响评价图件制作实践应用

【五天教学】GEE-Python遥感大数据分析、管理与可视化实践技术应用高级培训

西藏*拉萨专场:遥感、GIS和GPS技术在水文、气象、灾害、生态、环境及卫生等领域中的实践应用培训班

CLM陆面过程模式实践技术应用及进阶培训班

地球系统模式(CESM)实践技术应用及进阶培训班

Meta分析在生态环境领域里的应用培训班

遥感降水与站点数据融合实践技术应用培训班

长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用实践技术培训班

【最新版本】InVEST实践与进阶及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中的具体应用培训班

最新:基于MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧高级进阶培训班

基于R语言BIOMOD2模型的物种分布模拟实践技术应用培训班

环境土壤物理模型HYDRUS1D/2D/3D实践技术应用【六天】系统性学习高级培训班

基于Fragstats的土地利用景观格局分析实践技术应用培训班

ArcGIS在土地利用制备、处理、分析与建模的实践应用培训班

第二期  Python语言在地球科学领域中的应用实践技术应用高级培训班

基于Python长时间序列遥感数据植被物候提取与分析实践应用直播课

语言类
基于R语言的非参数与半参数回归模型实践技术应用培训班
基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习高级应用

【夏令营】针对课题组人员AI培养计划:“开启AI科研之路”

R语言实践课:如何通过数据探索避免常见统计问题

最新基于R语言结构方程模型分析与实践技术应用高级研修班

R语言回归及混合效应(多水平/层次/嵌套)模型及贝叶斯实现实践技术应用研修班

大气科学类

CMIP6数据处理方法与典型案例分析实践技术应用培训

python机器学习与深度学习在气象领域中的实践技术应用高级培训班

大气颗粒物PMF源解析实践技术应用高级培训班

区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境领域实践技术应用培训班

大气污染扩散模型Calpuff实践技术应用培训班

地下水/水文/地质类

基于SWMM及自主开发城市内涝一维二维耦合软件的复杂城市排水系统建模技术及在城市排涝、海绵城市等领域实践应用高级培训班

参会获取:自主开发城市内涝一维二维耦合模拟计算软件,仅提供参会人员使用

全流程各工程类型地下水环境影响评价【一级】方法与MODFLOW Flex建模实践技术应用
岩土工程渗流问题之有限单元法:理论、模块化编程实现、开源程序手把手实操应用培训班

地下水热耦合模拟FEFLOW建模实践技术应用培训班

PHREEQC建模及典型案例解析与高阶拓展应用【反向“编译”、“玩转”后处理技术、GibbsStudio和PhreePlo方法】实践培训班

基于GMTSAR合成孔径雷达干涉测量InSAR数据处理、形变信息提取与分析等实践技术应用

ArcGIS在洪水普查、风险评估及区划中的实践技术应用高级培训班

碳专题

“双碳”目标下资源环境中的可计算一般均衡(CGE)模型实践技术培训班

基于LEAP模型的能源环境发展、碳排放建模预测及不确定性分析实践应用

生命周期模型构建方法与分析及实际案例应用技术培训班


扫码了解课程详情

添加小编微信,海量数据、视频教程免费获取



  免费数据资源(部分数据展示)


Ai尚研修海量资源(数据、课件、书籍、视频教程)一键免费领取

(点击数据标题,直接进入)


地学领域数据1、【数据分享】30米精度全球地表覆盖分类数据(2000、2010、2020)2、【数据分享】全国分省、市、县、乡镇行政区划矢量图(专业版shp、小白版ppt)免费下载3、【数据分享】中国月度1KM植被指数(NDVI)空间分布数据集4、【数据分享】中国陆地生态系统服务价值空间分布数据集5、【数据分享】中国农田熟制遥感监测数据集6、【数据分享】多个自然资源(大气、土地、水等)面板数据大放送、时间跨度长、地区分布广,快速下载7、【数据分享】中国30米分辨率坡度数据(免费获取)8、【数据分享】最新!全国人口密度数据2000-2020年9、【数据分享】中国GDP空间分布公里网格数据集10、【数据分享】建筑矢量数据shap,26个省级城市建筑轮廓11、【数据分享】中国100万地貌类型空间分布数据12、【数据分享】中国100万植被类型空间分布数据13、【数据分享】中国人口空间分布公里网格数据集14、【数据分享】自然保护区边界矢量数据下载(国家级、省级、县市级)15、【数据分享】全球100万基础地理数据(包含国家行政边界、铁路、道路、线状水系面状水系)16、【数据分享】全国电子地图SHP数据除了常有的省、市、县、乡的图层信息以外,还包括道路、水系、银行、绿地、高速出入口、医疗机构、餐饮、超市等17、【数据分享】6G超大超级详细矢量数据,来源于国内某地图导航基底数据18、【数据分享】全球冰川数据集RGI v3.219、【数据分享】2020年最新全国城市道路数据集20、【数据分享】2021年最新区县级全国行政区划数据21、【数据分享】ArcGIS矢量数据shp格式大放送:自然保护区和森林公园22、【数据分享】青海三江源草地退化空间分布数据集部分数据展示,关注Ai尚研修公众号→数据资源→数据分享,海量数据资源轻松下载!


大气领域数据1、【数据分享】ERA5全球大气再分析数据和MSWEP多源融合降水数据2、【数据分享】MSWEP多源融合降水数据→免费获取3、【数据分享】CMIP6未来气候变化情景数据之一:历史时期月平均气温数据4、【数据分享】CMIP6未来气候变化情景数据之二: 历史时期降水数据集5、【数据分享】CMIP6未来气候变化情景数据之三: 历史时期风速数据集6、【数据分享】CMIP6未来气候变化情景数据之四:服务于降尺度的实测格点化气温数据集7、【数据分享】CMIP6未来气候变化情景数据之五:服务于降尺度的实测格点化降水数据集8、【数据分享】CMIP6未来气候变化情景数据之六:历史时期近地表最高气温数据集9、【数据分享】CMIP6数据分享计划之七:历史时期近地表最低气温数据集10、【数据分享】CMIP6未来气候变化情景数据之八:历史时期向下短波辐射数据集11、【数据分享】中国气象背景数据集12、【数据分享】全行业碳排放核算Excel自动计算表13、【数据分享】碳排放数据集!全国碳排放数据分省、市、县(区)14、【数据分享】1942年至今!全国气象数据:包含气温、气压、露点、风向风速、云量、降水量数据部分数据展示,关注Ai尚研修公众号→数据资源→数据分享,海量数据资源轻松下载!

土利用数据

土地利用数据1、【数据分享】2020年中国土地利用遥感监测数据丨免费下载!2、【数据分享】中国土地利用数据1980-2015 (免费获取)3、【数据分享】土地利用(覆盖)数据下载汇总4、【数据分享】全球1982~2015年逐年长时序动态土地覆盖数据集5、【数据分享】中国土壤侵蚀空间分布数据6、【数据分享】15省《中国土壤分布》土壤分布矢量数据,含使用说明7、【数据分享】世界土壤数据库(HWSD)全球土壤数据下载处理8、【数据分享】AW3D30 DSM(数字地表模型)数据9、【数据分享】2017年10米分辨率全球地表覆盖数据10、【数据分享】中国土壤质地空间分布数据11、【数据分享】中国土地市场网(土地交易数据)部分数据展示,关注Ai尚研修公众号→数据资源→数据分享,海量数据资源轻松下载!


水文领域数据1、【数据分享】全国水系图SHP数据免费下载2、【数据分享】基于DEM提取的中国流域、河网数据免费下载3、【数据分享】1:25万全国三级水系流域数据集(免费下载)4、【数据分享】中国水系数据,包含长江黄河、湖泊、以及一级三级四级五级河流矢量数据5、【数据分享】中国九大流域矢量数据6、【数据分享】超详细,东亚水文流域划分数据,包括流域、子流域、实际面积等7、【数据分享】分省份水系数据8、【数据分享】全国高清水文地质图部分数据展示,关注Ai尚研修公众号→数据资源→数据分享,海量数据资源轻松下载!


  年鉴类数据1、【数据分享】中国低碳年鉴2000-2016(免费下载)2、【数据分享】全Excel!中国科技统计年鉴1991-2019(免费)3、【数据分享】一个横跨35年的数据,1985-2019中国城市统计年鉴4、【数据分享】28年《中国工业统计年鉴》免费下载5、【数据分享】1985-2019年中国农村统计年鉴免费下载!6、【数据分享】中国农业统计资料1949-2019,免费下载 !7、【数据分享】国土资源统计年鉴2005-2017&中国林业统计年鉴1992-20198、【数据分享】中国海洋统计年鉴2000-2017(免费)9、【数据分享】中国环境统计年鉴:1998-2018(免费)10、【数据分享】《中国文化和旅游统计年鉴》又是一个24年的统计年鉴集合11、【数据分享】285城空间权重矩阵&中国城乡建设统计年鉴EXCEL12、【数据分享】中国农村贫困监测报告2008-201913、【数据分享】2006-2020《中国卫生统计年鉴》免费下载14、【数据分享】最新!2000-2020年县域统计年鉴面板数据(免费)15、【数据资源】全网最全!34个省(市、自治区)2001-2020年统计年鉴(免费)16、【数据分享】中国城市统计年鉴1985-2020最新为EXCEL格式!17、【数据分享】海量数据大放送!农村研究数据合集18、【数据分享】最新EXCEL中国统计年鉴2020+经管教材16本+python学习资源部分数据展示,关注Ai尚研修公众号→数据资源→数据分享,海量数据资源轻松下载!


经济类数据1、【数据分享】1990-2020年上市公司微观数据2、【数据分享】中国及省级市场化总指数及方面指数:08-193、【数据分享】给实证研究加点料:1990-2019全球治理数据WGI和城市创新创业指数4、【数据分享】各国制度、地理、文化距离5、【数据分享】400万!人口迁徙大数据2019-20206、【数据分享】科研数据利器之二:中国土地市场网(土地交易数据)7、【数据共享】1.82G中国工业企业数据库1998-20138、【数据分享】208个地级市和31个省、市城乡泰尔指数!部分数据展示,关注Ai尚研修公众号→数据资源→数据分享,海量数据资源轻松下载!


上下滑动查看更多


  超级会员专享  


如何成为超级会员:1、凡参加Ai尚研修收费课程即为超级会员;2、充值3500元即为Ai尚研修超级会员;超级会员特权:1、参加直播与现场课程专享400元会员优惠,同时成为Ai尚研修推广大使,推荐参会分享收益;2、购买Ai尚研修平台导师视频课程(含导师随行长期指导),享受8.5折优惠;3、免费享受Ai尚研修会议平台中会员专享下视频课程;4、长期免费参与每月4期针对地学领域简学实用公开课(优先、无门槛);5、免费参与任何一门课程开设的导师面对面线上答疑交流6、Ai尚研修资源站分享中数据免费下载;7、会员既成为Ai尚研修合作伙伴,可以进行技术文章、视频教程投稿,分享收益红利,同时所在单位可以通过Ai尚研修新媒体平台进行合作及招聘推广。
扫描下方二维码,关注我们Ai尚研修客服公众号


END



声明: 本号旨在传播、传递、交流,对相关文章内容观点保持中立态度。涉及内容如有侵权或其他问题,请与本号联系,第一时间做出撤回。


END


Ai尚研修丨专注科研领域

技术推广,人才招聘推荐,科研活动服务

科研技术云导师,Easy  Scientific  Research

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存