栅格到点转换:如何转换每个像素?在Google Earth Engine上

问题描述

美好的一天。我正在尝试使用Google Earth Engine将栅格转换为点。我的栅格只有一个波段(簇),并且已被裁剪到我的投资回报率。我知道Google Earth Engine上的reducetoVectors函数,但是据我了解,此函数创建的区域具有相同的相邻值,而我想要创建的区域点,因为有像素

到目前为止,我已经尝试过以下不同的版本:

var vectors = image.reducetoVectors({
  reducer : null,geometry : treat,scale:30,crs :image.projection().getInfo().crs,geometryType : 'centroid',labelProperty : 'null',eightConnected: false,maxPixels: 1e15
});

非常感谢您的帮助。

解决方法

ee.Image.sample为每个像素返回一个点。

var vectors = image.sample({
  region: treat,geometries: true,// if you want points
});

如果未指定scalecrs,它将使用输入图像原始分辨率中的每个像素。如果这样做,它将以给定的比例进行采样。

演示脚本:

var region = ee.Geometry.Polygon(
  [[[-110.00683426856995,40.00274575078824],[-110.00683426856995,39.99948706365032],[-109.99576210975647,40.00274575078824]]],null,false);
var image = ee.Image('CGIAR/SRTM90_V4');
Map.setCenter(-110,40,16);
Map.addLayer(image,{min: 1000,max: 2000},'SRTM');

var vectors = image.sample({
  region: region,});
print(vectors);
Map.addLayer(ee.FeatureCollection([region]).style({"color": "white"}));
Map.addLayer(vectors);

https://code.earthengine.google.com/625a710d6d315bad1c2438c73bde843b