Google Earth Engine(GEE)使用土地利用数据(modis)上采样Landsat数据提取农田范围

前言

最近因为大创项目,一直在研究GEE平台的一些操作,主要在GEE中利用海量的遥感影像,来实现关于滁州市的农作物种植结构的长时间序列分析。本篇主要利用GEE中发布的土地利用数据(modis)500m分辨率进行上采样到Landsat的30m影像中,提取农田范围,为后续农作物分类提供帮助。

1.导入研究区域

首先在Assets中导入研究区域边界的shp文件,导入到代码中。
在这里插入图片描述

2.选择影像数据

选择MCD12Q1全球土地覆盖产品和Landsat7影像,并按时间进行过滤筛选。

var modisLandcover =  ee.ImageCollection('MODIS/006/MCD12Q1')
    .filterDate('2019-01-01', '2019-12-31')
    .first()
    .select('LC_Type1')
    .subtract(1)       //将波段排序从0开始排列
    .clip(geometry);   //切割出研究区范围

// 设置IGBP分类系统配色方案
var landcoverPalette = '05450a,086a10,54a708,78d203,009900,c6b044,dcd159,' +
 'dade48,fbff13,b6ff05,27ff87,c24f44,a5a5a5,ff6d4c,69fff8,f9ffa4,1c0dff';
//设置土地分类可视化参数
var landcoverVisualization = {palette: landcoverPalette, min: 0, max: 16, format: 'png'};
var l7 = ee.ImageCollection('LANDSAT/LE07/C01/T1')
    .filterBounds(geometry)
    .filterDate('2019-01-01', '2020-01-01');
// 最小云量影像合成
var landsatComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: l7,
  asFloat: true
});

MCD12Q1土地利用数据中LC_Type1的第12个波段表示农田,所以我们后续重点提取bands12属性。
在这里插入图片描述

3.选取研究波段

根据modis数据属性可知,bands12表示农田数据,所以通过编写函数,进行指定波段提取。

//选取农田波段
var mask=function(image,my_type){
  var mask=image.eq(my_type);
  var masked_image=image.updateMask(mask);
  return masked_image;
}
var modismask = mask(modisLandcover,11)  //调用mask函数,筛选出bands12农田数据

4.通过modis上采样到Landsat影像中

首先要创建数据集,在MCD12Q1中随机采样1000个随机点作为数据集,并将数据集通过smileCart方法进行训练,将训练器运用到Landsat影像中。

// 创建训练数据集,采样1000个随机采样点
var training = modisLandcover.addBands(landsatComposite).sample({
  region: geometry,
  scale: 30,
  numPixels: 1000
});

// 利用训练数据集进行训练,选取IGBP分类系统
var classifier = ee.Classifier.smileCart().train({
  features: training,
  classProperty: 'LC_Type1',
});

// 将训练器运用到Landsat影像中
var upsampled = landsatComposite.classify(classifier);

5.输出结果分析

这是modis数据通过波段筛选,筛选出的农田范围。
在这里插入图片描述
这是通过modis数据进行采样,进行训练后的landsat影像中的农田范围。
在这里插入图片描述
结果可以看到通过modis数据500m分辨率进行上采样到landsat影像30m分辨率上,精度有着明显的提高,可以分辨出更细小的农田范围。

6.输出影像存入Assets中

Export.image.toAsset({
  image: result1,
  scale:10,
  maxPixels:5e8,
  region: geometry
});

在这里插入图片描述

总结

提取出了滁州市的农田范围数据,下一步将进行农作物分类,通过modis数据上采样到landsat数据中,提高了后续农作物分类的分辨率问题,只选择了表示农田的bands12,避免了其他数据对农作物分类的干扰。
完整代码:

//选择2001年数据的IGBP分类系统
var modisLandcover =  ee.ImageCollection('MODIS/006/MCD12Q1')
    .filterDate('2019-01-01', '2019-12-31')
    .first()
    .select('LC_Type1')
    .subtract(1)
    .clip(geometry);
//选取农作物波段
var mask=function(image,my_type){
  var mask=image.eq(my_type);
  var masked_image=image.updateMask(mask);
  return masked_image;
}
var modismask = mask(modisLandcover,11)
// 设置IGBP分类系统配色方案
var landcoverPalette = '05450a,086a10,54a708,78d203,009900,c6b044,dcd159,' +
 'dade48,fbff13,b6ff05,27ff87,c24f44,a5a5a5,ff6d4c,69fff8,f9ffa4,1c0dff';
//设置土地分类可视化参数
var landcoverVisualization = {palette: landcoverPalette, min: 0, max: 16, format: 'png'};
//显示影像
Map.centerObject(geometry, 9);
Map.addLayer(modismask, landcoverVisualization, 'MODIS landcover');

// 筛选Landsat影像
var l7 = ee.ImageCollection('LANDSAT/LE07/C01/T1')
    .filterBounds(geometry)
    .filterDate('2019-01-01', '2020-01-01');
// 最小云量影像合成
var landsatComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: l7,
  asFloat: true
});
//影像显示
Map.addLayer(landsatComposite, {min: 0, max: 0.3, bands: ['B3','B2','B1']}, 'Landsat composite');

// 创建训练数据集,采样1000个随机采样点包含MCD12Q1与Landsat属性
var training = modisLandcover.addBands(landsatComposite).sample({
  region: geometry,
  scale: 30,
  numPixels: 1000
});

// 利用训练数据集进行训练,选取IGBP分类系统
var classifier = ee.Classifier.smileCart().train({
  features: training,
  classProperty: 'LC_Type1',
});

// 将训练器运用到Landsat影像中
var upsampled = landsatComposite.classify(classifier);
var result = mask(upsampled,11)
var result1 = result.clip(geometry);
// 可视化分类结果
Map.addLayer(result1, landcoverVisualization, 'Upsampled landcover');
// 显示分类区域
Map.addLayer(geometry, {}, 'Training region', false);

Export.image.toAsset({
  image: result1,
  scale:10,
  maxPixels:5e8,
  region: geometry
});
要下载土地利用数据,您可以使用Google Earth EngineGEE)提供的代码。首先,您需要加载土地覆盖数据集并选择您感兴趣的区域。代码示例如下: // Load the land cover data var landCover = ee.Image('USGS/NLCD/NLCD2016'); 接下来,您需要根据需要调整代码的经纬度坐标和其他参数,并将土地覆盖数据集剪切为感兴趣区域。代码示例如下: // Define the region of interest (ROI) using latitude and longitude coordinates var lat1 = 40.0; // Replace with your desired latitude var lon1 = -105.0; // Replace with your desired longitude var lat2 = 40.2; // Replace with your desired latitude var lon2 = -104.8; // Replace with your desired longitude var roi = ee.Geometry.Rectangle(lon1, lat1, lon2, lat2); // Clip the land cover data to the ROI var clippedLandCover = landCover.clip(roi); 然后,您可以将剪切后的土地覆盖数据添加到地图上进行可视化。代码示例如下: // Add the clipped land cover data to the map for visualization Map.addLayer(clippedLandCover, {}, 'Land Cover Data'); 最后,您可以将剪切后的土地覆盖数据导出为GeoTIFF图像进行下载。代码示例如下: // Export the clipped land cover data as a GeoTIFF image Export.image.toDrive({ image: clippedLandCover, description: 'land_cover_data', // Replace with your desired file name scale: 30, // Replace with your desired scale region: roi // Replace with the ROI geometry }); 请根据您的需要替换代码的经纬度坐标、导出名称和其他参数,并运行代码以下载土地利用数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用Google Earth Engine (GEE)下载土地覆盖数据](https://blog.csdn.net/weixin_58851039/article/details/130522162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值