GEE影像升尺度(10m->250m)
代码
var ext =
/* color: #d63000 */
/* shown: false */
/* displayProperties: [
{
"type": "rectangle"
}
] */
ee.Geometry.Polygon(
[[[108.74625980473367, 28.562445155322063],
[108.74625980473367, 26.566045171603736],
[111.66862308598367, 26.566045171603736],
[111.66862308598367, 28.562445155322063]]], null, false);
var esa = ee.ImageCollection("ESA/WorldCover/v100").filterBounds(ext)
var esaProjection = ee.Image(esa.first()).projection()
//选择tree树的分类进行加载
var forest = ee.ImageCollection("ESA/WorldCover/v100").filterBounds(ext).mosaic().eq(10);
Map.addLayer(forest.selfMask(), {palette:'00ff00'}, 'forest');
print(forest)
//设定默认的影像的分辨率
var forest = forest.setDefaultProjection(esaProjection)
print(forest)
var modis = ee.Image(ee.ImageCollection('MODIS/MYD11A2').first())
var modisProjection = modis.projection();
print('MODIS projection:', modisProjection);
var modisProjectionAt250 = modisProjection.atScale(250)
var forestMean = forest
.reduceResolution({
reducer: ee.Reducer.mode(),
maxPixels: 1024
})
.reproject({
crs: modisProjectionAt250
});
Map.addLayer(forestMean.selfMask(), {palette:['C5003D']}, 'forestmean');
注释
ee.Geometry.Polygon(
[[[108.74625980473367, 28.562445155322063],
[108.74625980473367, 26.566045171603736],
[111.66862308598367, 26.566045171603736],
[111.66862308598367, 28.562445155322063]]], null, false);
这是一个ee.Geometry.Polygon对象的实例,表示一个四边形区域。该对象由四个点的经纬度坐标组成,可以用于地理信息系统中的空间分析和处理。如果需要计算两个四边形之间的IOU,可以使用shapely.geometry.polygon库中的intersection()和area()方法来计算它们的交集和面积,然后根据IOU的定义计算它们的IOU值。具体实现可以参考引用中的代码示例。
另外,如果需要计算规则矩形框之间的IOU,可以使用引用中提到的两种方法之一,即计算两个矩形框的交集和并集的面积,然后根据IOU的定义计算它们的IOU值
var esa = ee.ImageCollection("ESA/WorldCover/v100").filterBounds(ext)
代码中的ee.ImageCollection(“ESA/WorldCover/v100”)表示获取ESA的WorldCover数据集,.first()表示获取该数据集的第一张图像。var visualization = { bands: [‘Map’], };表示可视化参数,其中bands表示使用哪个波段进行可视化。Map.centerObject(dataset);表示将地图中心设置为数据集的中心
var forest = ee.ImageCollection("ESA/WorldCover/v100").filterBounds(ext).mosaic().eq(10);
代码中的ee.ImageCollection(“ESA/WorldCover/v100”)表示获取ESA/WorldCover/v100图像集合,.filterBounds(ext)表示筛选出在ext范围内的图像,.mosaic()表示将图像集合拼接成一张图像,.eq(10)表示将图像中所有像素值为10的位置设置为1,其余位置设置为0,最终得到一个二值图像,表示森林区域。
Map.addLayer(forest.selfMask(), {palette:'00ff00'}, 'forest');
Map.addLayer(dataset, visualization, “Landcover”);表示将数据集添加到地图中进行可视化。
var modisProjectionAt250 = modisProjection.atScale(250)
建立一个250m分辨率的投影
var forestMean = forest
.reduceResolution({
reducer: ee.Reducer.mode(),
maxPixels: 1024
})
.reproject({
crs: modisProjectionAt250
});
这段代码使用Google Earth Engine API计算了一个名为"forestMean"的变量。首先,它使用reduceResolution()方法将图像的分辨率降低到1024像素,并使用ee.Reducer.mode()方法计算每个像素的众数。然后,它使用reproject()方法将图像投影到名为"modisProjectionAt250"的投影上。最终,"forestMean"变量将是一个在新投影下的降低分辨率的图像,其中每个像素的值是原始图像中对应像素的众数。
备注
在这个例子中,以ESA的2020年土地覆盖数据集按阈值法处理得到森林的10m分辨率分布,,然后用modis的250M分辨率产品制作投影,将10m的每个栅格用众数计算聚合为250m分辨率的一个大栅格。即在这个250m上,表示森林的像元(1)越多,认为250M也表示森林。
这么大一个海南岛,大部分都是森林?所以地区大并不代表经济很发达,土地覆盖类型也很重要。平原地带能够发展城镇化才能提高经济。但是也不能为了钱过度破坏环境去砍树。
参考博文
Google Earth Engine(GEE)——将原始影像进行升尺度计算(以海南省为例)