GEE实战 | LULC获取与处理

  • LULC数据库
    • MCD12Q1.006
    • GlobCover
    • CGLS-LC100 collection 2
    • Copernicus CORINE Land Cover
    • NLCD
      • 映射
      • 单独映射

LULC数据库

  LULC百度百科:LULC(the land-use/land-cover 土地利用和土地覆盖)数据包括城市和建筑区、农田、牧场、林地、水、湿地、荒地、冻土带和终年积雪或终年结冰地带的有关信息。
  GEE提供了大量LULC数据库,搜索相关结果如下:


  点击进去皆有相关介绍和导入方式以及用法示例等。下面简单介绍下前几个数据库导入方式并重点介绍美国的NLCD数据库。

MCD12Q1.006

  MCD12Q1 V6产品按六种不同的分类方案按年间隔(2001-2016年)提供全球土地覆盖类型。它是使用MODIS Terra和Aqua反射数据的监督分类得出的。然后,对受监管的分类进行额外的后处理,这些后处理结合了先前的知识和辅助信息以进一步完善特定的类别。

//MCD12Q1.006
var dataset = ee.ImageCollection('MODIS/006/MCD12Q1');
var igbpLandCover = dataset.select('LC_Type1');
var igbpLandCoverVis = {min: 1.0,max: 17.0,palette: ['05450a', '086a10', '54a708', '78d203', '009900', 'c6b044', 'dcd159','dade48', 'fbff13', 'b6ff05', '27ff87', 'c24f44', 'a5a5a5', 'ff6d4c','69fff8', 'f9ffa4', '1c0dff'],
};
Map.setCenter(6.746, 46.529, 6);
Map.addLayer(igbpLandCover, igbpLandCoverVis, 'IGBP Land Cover');

GlobCover

  GlobCover 2009是基于ENVISAT中分辨率成像光谱仪(MERIS)1B级数据的全球土地覆盖图,该数据以全分辨率模式获取,空间分辨率约为300米。

//GlobCover
var dataset = ee.Image('ESA/GLOBCOVER_L4_200901_200912_V2_3');
var landcover = dataset.select('landcover');
Map.setCenter(-88.6, 26.4, 3);
Map.addLayer(landcover, {}, 'Landcover');

CGLS-LC100 collection 2

  The Copernicus Global Land Service(CGLS)在全球范围内针对陆地表面的状况和演变提供一系列生物地球物理产品。 100 m分辨率的动态土地覆盖图(CGLS-LC100)是CGLS产品组合中的新产品,可提供100 m空间分辨率的全球土地覆盖图。 CGLS土地覆盖产品除了提供了主要的土地覆盖分类,还包括所有基本土地覆盖类别的连续田地层,从而为土地覆盖类型的植被/地面覆盖提供比例估计。这种连续的分类方案可能比标准分类方案更好地描述了异类土地覆盖的区域,因此,可以针对应用进行量身定制(例如森林监测,作物监测,生物多样性和保护,监测非洲的环境和安全,气候模拟等等)。

//Copernicus
var dataset = ee.ImageCollection("COPERNICUS/Landcover/100m/Proba-V/Global");var visualization = {bands: ['discrete_classification'],min: 0.0,max: 200.0,palette: ["032f7e","02740b","02740b","8cf502","8cf502","a4da01","ffbd05","ffbd05","7a5a02","f0ff0f","869b36","6091b4","999999","ff4e4e","ff4e4e","ffffff","feffc0","020202","020202",]
};Map.setCenter(-88.6, 26.4, 1);Map.addLayer(dataset, visualization, "Land Cover");

Copernicus CORINE Land Cover

  Copernicus CORINE Land Cover始于1985年,以标准化欧洲土地数据收集以支持环境政策制定。该项目由欧洲环境局(EEA)在欧盟哥白尼计划的框架内进行协调,并由国家团队实施。时间段为:

  • 1990年asset:1989年至1998年
  • 2000年asset:1999年至2001年
  • 2006年asset:2005年至2007年
  • 2012年asset:2011年至2012年
  • 2018年asset:2017年至2018年
var dataset = ee.Image('COPERNICUS/CORINE/V20/100m/2012');
var landCover = dataset.select('landcover');
Map.setCenter(16.436, 39.825, 6);
Map.addLayer(landCover, {}, 'Land Cover');

NLCD

  NLCD(国家土地覆盖数据库)是一个基于Landsat的30米土地覆盖数据库,涵盖8个时间段(1992、2001、2004、2006、2008、2011、2013和2016)。其中, 1992年的图像无法与NLCD的其他时间段直接比较。 该数据集包含八个时期中每个时期的美国大陆图像,以及2001和2011年分别位于阿拉斯加,夏威夷和波多黎各的图像。
  NLCD共有20类,分类如下。更多信息

var dataset = ee.ImageCollection('USGS/NLCD');
var landcover = dataset.select('landcover');
var landcoverVis = {min: 0.0,max: 95.0,palette: ['000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','466b9f','d1def8','000000','000000','000000','000000','000000','000000','000000','000000','dec5c5','d99282','eb0000','ab0000','000000','000000','000000','000000','000000','000000','b3ac9f','000000','000000','000000','000000','000000','000000','000000','000000','000000','68ab5f','1c5f2c','b5c58f','000000','000000','000000','000000','000000','000000','000000','af963c','ccb879','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','000000','dfdfc2','d1d182','a3cc51','82ba9e','000000','000000','000000','000000','000000','000000','dcd939','ab6c28','000000','000000','000000','000000','000000','000000','000000','b8d9eb','000000','000000','000000','000000','6c9fb8'],
};
Map.setCenter(-95, 38, 5);
Map.addLayer(landcover, landcoverVis, 'Landcover');

映射

  从分类图和代码可以看出,多分类对应的像素值并不是连续的。所以有时候为了方便处理,比如训练监督分类模型,最好将其元素值映射为连续的,那么该如何做呢,先上一个简单的例子,根据多分类结果提取水体,这里我们将11和12类都定义为水体。
  通过使用remap函数可以将像素值映射到其他像素值,完成映射、合并等操作。

var LULC = ee.Image("USGS/NLCD/NLCD2016");
var landcover_water= LULC.select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],0).rename('landcover');var wcoverVis = {bands:'landcover',min: 0.0,max: 1.0,palette: ["000000","00ff"],
};Map.addLayer(landcover_water,wcoverVis, 'water');

  结果如图,水体对应像素值为1,非水体为0。可视化中,水体显示为蓝色,非水体为黑色。

  接下来映射为8类地物。同理也可以映射为20类(本数),6类等。

var LULC = ee.Image("USGS/NLCD/NLCD2016");
var landcover_8= LULC.select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[ 0, 0, 1, 1, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7],7).rename('landcover');var c8coverVis = {bands:'landcover',min: 0.0,max: 7.0,palette: ["ff0000","00ff00","0000ff","ffff00","ff00ff","00ffff","ffffff","000000"],
};Map.addLayer(landcover_8,c8coverVis, 'gourndtruth');

  可视化结果如图。

单独映射

  其中,如果不希望映射到一张图上,可以单独映射然后合并。以8分类为例。最后合成仍然是一张图,但是具有8个波段属性。

// var LULC = ee.Image("USGS/NLCD/NLCD2016");
var nlcd_0 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[1,1, 0,0, 0,0, 0,0, 0,0,0,0,0,0,0,0,0,0,0,0],0).rename('LABEL_0')var nlcd_1 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 1,1, 1,1, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0],0).rename('LABEL_1')var nlcd_2 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 0,0, 0,0, 1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0],0).rename('LABEL_2')var nlcd_3 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 0,0, 0,0, 0,1, 1,1, 0,0, 0,0, 0,0, 0,0, 0,0],0).rename('LABEL_3')var nlcd_4 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 0,0, 0,0, 0,0, 0,0, 1,1, 0,0, 0,0, 0,0, 0,0],0).rename('LABEL_4')var nlcd_5 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,1, 1,1, 0,0, 0,0],0).rename('LABEL_5')var nlcd_6 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,1, 0,0],0).rename('LABEL_6')var nlcd_7 = ee.Image('USGS/NLCD/NLCD2016').select('landcover').remap([11,12,21,22,23,24,31,41,42,43,51,52,71,72,73,74,81,82,90,95],[0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,1],0).rename('LABEL_7')// 8类合成LULC
var featureStack = ee.Image.cat([nlcd_0.select('LABEL_0'),nlcd_1.select('LABEL_1'),nlcd_2.select('LABEL_2'),nlcd_3.select('LABEL_3'),nlcd_4.select('LABEL_4'),nlcd_5.select('LABEL_5'),nlcd_6.select('LABEL_6'),nlcd_7.select('LABEL_7')
]).float()// print(featureStack,'featureStack')
var LABEL=['LABEL_0', 'LABEL_1', 'LABEL_2', 'LABEL_3', 'LABEL_4', 'LABEL_5', 'LABEL_6', 'LABEL_7']// 和输入数据合成
var featureStacks = ee.Image.cat([image.select(Bands),featureStack.select(LABEL),
]).float()
// print(featureStacks,'featureStacks')

GEE实战 | LULC获取与处理相关推荐

  1. GEE实战2:利用GEE获取流域内的年总降水量【降水量分析】

    GEE实战系列之降水量分析: GEE实战1:利用GEE获取流域内的月均降水量[降水量分析] GEE实战2:利用GEE获取流域内的年总降水量[降水量分析] (持续更新中--) 1.目标 利用GEE,获取 ...

  2. python 获取网页表格数据_python实战4获取tushare数据

    python 4 实战4 获取Tushare数据 阅读之前请注意: 代码都为红色.由于公众号宽度不够,没有特别注明,即使换行都是同一句代码,中间没有换行符.如果是两行代码,会用空行隔开. SQL语句请 ...

  3. GEE实战 | 各种指数分析(植被、水体、建筑)

    GEE实战 | 各种指数分析(植被.水体.建筑) 指数 植被指数(NDVI | SAVI | IVI) 代码 对比 结论 水体指数(NDWI | MNDWI) 代码 对比 结论 建筑指数(NDBI | ...

  4. 牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息

    牛客网数据库SQL实战25-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息 题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999 ...

  5. Redis实战(6)-数据结构Set实战之获取随机乱序唯一的试卷题目

    概述:本系列博文所涉及的相关内容来源于debug亲自录制的实战课程:缓存中间件Redis技术入门与应用场景实战(SpringBoot2.x + 抢红包系统设计与实战),感兴趣的小伙伴可以点击自行前往学 ...

  6. 《数据库SQL实战》获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary

    题目描述 获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary CREATE TABLE salaries ( emp_no int(11) ...

  7. 《数据库SQL实战》获取所有员工当前的manager

    题目:获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'. 结果第一列给出当前员工的emp_no,第二列给出其manage ...

  8. 《数据库SQL实战》获取所有非manager的员工emp_no

    题目:获取所有非manager的员工emp_no CREATE TABLE dept_manager ( dept_no char(4) NOT NULL, emp_no int(11) NOT NU ...

  9. 《数据库SQL实战》获取所有部门当前manager的当前薪水情况

    题目:获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01' CREATE TABLE dept_manag ...

最新文章

  1. iOS开发之绝对布局和相对布局(屏幕适配)
  2. CCF201503-4 网络延时(100分)
  3. python图片二进制流转换成图片_微信如何将图片转换成word文字
  4. python 单一进程实例 实现
  5. sqlserver2008r2修改表不能保存的解决方法
  6. 故宫的“烧脑奇书”又火了!豆瓣9.2分,11种结局,可以玩一年!
  7. confluence启动不起来_汽车上为什么会出现无钥匙启动的功能?存在的意义是什么?...
  8. Linux系统中安装软件的三种方法(二)
  9. 事务注解放到类上面 下面私有方法有效吗_【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)...
  10. 巧用BroadcastReceiver实现开机“自”启动
  11. ECMAScript 5 —— 基本包装类型之String(下)
  12. STM8S103K3和STM8S105K4原理图
  13. 听说你要删库跑路了?这篇Linux脚本请收好
  14. 练习7-9 计算天数(15 分)
  15. vue 实现ps图片编辑_详解vue项目中实现图片裁剪功能
  16. 微带贴片天线的分析方法-传输线模型法
  17. 赞叹AI的力量-TopazLabs 全家桶使用经历
  18. 帆软初级证书 第二部分 数知鸟 答案
  19. pandas一列拆分成多行
  20. 黑客攻防技术宝典(五)

热门文章

  1. 大会倒计时|2020 PostgreSQL亚洲大会-中文分论坛议程安排
  2. 框架64位插间_cad海龙工具箱64位下载
  3. “人不知而不愠”-当别人不理解我们时,怎样保持好心情?
  4. H3C以太网基础实验H3CTE讲师分享
  5. Zookeeper高频面试题36问(附答案)
  6. 玩转微信小程序 之 初步了解微信小程序(2019/04/05)
  7. 转贴-- CISCO CPOS STM配置示例
  8. 贪心算法-数列极差问题(对前篇文章的修改)
  9. 方图智能:精准洞察市场需求 打造细分市场新标杆
  10. 图像中的天空区域检测!