两张图片之间的散点图 Google Earth Engine
Scatter Plot between 2 images Google Earth Engine
我在 Google Earth Engine 中有 2 张高分辨率图像。我想在这两张图片之间绘制散点图。但是我收到一些错误 Missing required arguments to function seriesByRegion(): reducer
。我不知道如何更正此问题(或者这是由于图片造成的)。
首先我导入了几何图形和图像:
var RZSC = ee.Image("users/chandrakant/Max_RZSC_Layer_Trail_3"),
geometry = /* color: #d6cbbb */ee.Geometry.Polygon(
[[[-81.375, -56.125],
[-34.625, -56.125],
[-34.625, 12.625],
[-81.375, 12.625]]]);
然后我将图像可视化
var vizParams = {
bands: ['b1'],
min: 0.0,
max: 1500.0,
palette: ['blue', 'green', 'red']
};
Map.setCenter(6.746, 46.529, 10);
Map.addLayer(RZSC.clip(geometry), vizParams, 'Rootzone Storage Capacity');
Map.centerObject(RZSC);
print('RZSC Projection, crs, and crs_transform:', RZSC.projection());
可视化我的 MODIS 图像
var MODIStc = ee.ImageCollection('MODIS/051/MOD44B')
.filter(ee.Filter.date('2000-01-01', '2017-12-01')).mean();
var percentTreeCover = MODIStc.select('Percent_Tree_Cover');
var percentTreeCoverVis = {
min: 0.0,
max: 100.0,
palette: ['bbe029', '0a9501', '074b03'],
};
Map.setCenter(6.746, 46.529, 2);
Map.addLayer(percentTreeCover.clip(geometry), percentTreeCoverVis, 'Percent Tree Cover');
print('MOD44B Projection, crs, and crs_transform:', percentTreeCover.projection());
\Here I added Water Mask
var waterOcc = ee.Image("JRC/GSW1_0/GlobalSurfaceWater").select('occurrence'),
jrc_data0 = ee.Image("JRC/GSW1_0/Metadata").select('total_obs').lte(0),
waterOccFilled = waterOcc.unmask(0).max(jrc_data0),
waterMask = waterOccFilled.lt(50);
这里我在 250 米处重新投影了图像 (RZSC)
\Here I tried to increase the resolution from 25km to 250m
var RZSC_250m = RZSC.resample('bilinear').reproject({
crs: RZSC.projection().crs(),
scale: 250
});
Map.addLayer(RZSC_250m.clip(geometry).updateMask(waterMask), vizParams, 'RZSC_250m');
print('RZSC_250m Projection, crs, and crs_transform:', RZSC_250m.projection());
在这里尝试了散点图
\Tried to plot scatterplot here (I want just the basic scatter plot between 2 variables)
var chart = ui.Chart.image.seriesByRegion(RZSC, MODIStc,
ee.Reducer.mean(),250, 'nd').setChartType('ScatterChart');
print(chart);
我得到的错误:
Error generating chart: Collection.map, argument 'collection': Invalid type. Expected: FeatureCollection. Actual: Image<[Percent_Tree_Cover]>.
和 Collection.map, argument 'collection': Invalid type. Expected: FeatureCollection. Actual: Image<[Percent_Tree_Cover]>.
附加信息:
另外,不知道为什么,MODIStc
和RZSC_250m
的维度不一样。
对于 MODIStc:
bands: List (1 element)
0: "Percent_Tree_Cover", double ∈ [0, 255], EPSG:4326, 48x73 px
id: Percent_Tree_Cover
crs: EPSG:4326
crs_transform: [1,0,0,0,1,0]
data_type: double ∈ [0, 255]
dimensions: [48,73]
origin: [-82,-59]
对于RZSC_250m:
bands: List (1 element)
0: "b1", float, EPSG:4326, 20818x28371 px
id: b1
crs: EPSG:4326
crs_transform: List (6 elements)
data_type: float
dimensions: [20818,28371]
origin: [-36235,-6107]
此外,当我尝试在 MODIStc 上使用 reproject
时,数据看起来平滑且奇怪(丢失了很多细节)。
如果我没理解错的话,你想要的是一个散点图,其中一个轴表示 RZSC
中的值,另一个轴表示 MODIStc
中的值。此外,图表中的每个点都应在同一像素处包含一对值。
为此,您需要 ui.Chart.feature.byFeature
,而不是您正在使用的 ui.Chart.image.seriesByRegion
。
要使用 ui.Chart.feature.byFeature
,您需要创建一个具有 2 个属性的 FeatureCollection
,一个保存 RZSC
中所有像素的值,另一个保存所有对应的值MODIStc
中的像素。下面是获取此代码的示例代码:
var combined_image = RZSC.addBands(MODIStc)
var region = ee.Geometry.Rectangle(-83, -20, -31, 13)
var sample = combined_image.sampleRegions(region, null, 250)
var chart = ui.Chart.feature.byFeature(sample, 'b1', 'Percent_Tree_Cover')
.setChartType('ScatterChart')
print(chart)
在上面的代码中,我根据您的示例图片创建了代表感兴趣区域(南美洲)的 region
变量。您可能想将其更改为您想要的任何内容(我猜可能是整个世界)。
此外,如果 GEE 抛出任何内存错误(例如 'Collection query aborted after accumulating over 5000 elements' 或 'User memory limit exceeded')
希望这对您有所帮助。
我在 Google Earth Engine 中有 2 张高分辨率图像。我想在这两张图片之间绘制散点图。但是我收到一些错误 Missing required arguments to function seriesByRegion(): reducer
。我不知道如何更正此问题(或者这是由于图片造成的)。
首先我导入了几何图形和图像:
var RZSC = ee.Image("users/chandrakant/Max_RZSC_Layer_Trail_3"),
geometry = /* color: #d6cbbb */ee.Geometry.Polygon(
[[[-81.375, -56.125],
[-34.625, -56.125],
[-34.625, 12.625],
[-81.375, 12.625]]]);
然后我将图像可视化
var vizParams = {
bands: ['b1'],
min: 0.0,
max: 1500.0,
palette: ['blue', 'green', 'red']
};
Map.setCenter(6.746, 46.529, 10);
Map.addLayer(RZSC.clip(geometry), vizParams, 'Rootzone Storage Capacity');
Map.centerObject(RZSC);
print('RZSC Projection, crs, and crs_transform:', RZSC.projection());
可视化我的 MODIS 图像
var MODIStc = ee.ImageCollection('MODIS/051/MOD44B')
.filter(ee.Filter.date('2000-01-01', '2017-12-01')).mean();
var percentTreeCover = MODIStc.select('Percent_Tree_Cover');
var percentTreeCoverVis = {
min: 0.0,
max: 100.0,
palette: ['bbe029', '0a9501', '074b03'],
};
Map.setCenter(6.746, 46.529, 2);
Map.addLayer(percentTreeCover.clip(geometry), percentTreeCoverVis, 'Percent Tree Cover');
print('MOD44B Projection, crs, and crs_transform:', percentTreeCover.projection());
\Here I added Water Mask
var waterOcc = ee.Image("JRC/GSW1_0/GlobalSurfaceWater").select('occurrence'),
jrc_data0 = ee.Image("JRC/GSW1_0/Metadata").select('total_obs').lte(0),
waterOccFilled = waterOcc.unmask(0).max(jrc_data0),
waterMask = waterOccFilled.lt(50);
这里我在 250 米处重新投影了图像 (RZSC)
\Here I tried to increase the resolution from 25km to 250m
var RZSC_250m = RZSC.resample('bilinear').reproject({
crs: RZSC.projection().crs(),
scale: 250
});
Map.addLayer(RZSC_250m.clip(geometry).updateMask(waterMask), vizParams, 'RZSC_250m');
print('RZSC_250m Projection, crs, and crs_transform:', RZSC_250m.projection());
在这里尝试了散点图
\Tried to plot scatterplot here (I want just the basic scatter plot between 2 variables)
var chart = ui.Chart.image.seriesByRegion(RZSC, MODIStc,
ee.Reducer.mean(),250, 'nd').setChartType('ScatterChart');
print(chart);
我得到的错误:
Error generating chart: Collection.map, argument 'collection': Invalid type. Expected: FeatureCollection. Actual: Image<[Percent_Tree_Cover]>.
和 Collection.map, argument 'collection': Invalid type. Expected: FeatureCollection. Actual: Image<[Percent_Tree_Cover]>.
附加信息:
另外,不知道为什么,MODIStc
和RZSC_250m
的维度不一样。
对于 MODIStc:
bands: List (1 element)
0: "Percent_Tree_Cover", double ∈ [0, 255], EPSG:4326, 48x73 px
id: Percent_Tree_Cover
crs: EPSG:4326
crs_transform: [1,0,0,0,1,0]
data_type: double ∈ [0, 255]
dimensions: [48,73]
origin: [-82,-59]
对于RZSC_250m:
bands: List (1 element)
0: "b1", float, EPSG:4326, 20818x28371 px
id: b1
crs: EPSG:4326
crs_transform: List (6 elements)
data_type: float
dimensions: [20818,28371]
origin: [-36235,-6107]
此外,当我尝试在 MODIStc 上使用 reproject
时,数据看起来平滑且奇怪(丢失了很多细节)。
如果我没理解错的话,你想要的是一个散点图,其中一个轴表示 RZSC
中的值,另一个轴表示 MODIStc
中的值。此外,图表中的每个点都应在同一像素处包含一对值。
为此,您需要 ui.Chart.feature.byFeature
,而不是您正在使用的 ui.Chart.image.seriesByRegion
。
要使用 ui.Chart.feature.byFeature
,您需要创建一个具有 2 个属性的 FeatureCollection
,一个保存 RZSC
中所有像素的值,另一个保存所有对应的值MODIStc
中的像素。下面是获取此代码的示例代码:
var combined_image = RZSC.addBands(MODIStc)
var region = ee.Geometry.Rectangle(-83, -20, -31, 13)
var sample = combined_image.sampleRegions(region, null, 250)
var chart = ui.Chart.feature.byFeature(sample, 'b1', 'Percent_Tree_Cover')
.setChartType('ScatterChart')
print(chart)
在上面的代码中,我根据您的示例图片创建了代表感兴趣区域(南美洲)的 region
变量。您可能想将其更改为您想要的任何内容(我猜可能是整个世界)。
此外,如果 GEE 抛出任何内存错误(例如 'Collection query aborted after accumulating over 5000 elements' 或 'User memory limit exceeded')
希望这对您有所帮助。