问题描述
美好的一天。我正在尝试使用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
});
如果未指定scale
和crs
,它将使用输入图像原始分辨率中的每个像素。如果这样做,它将以给定的比例进行采样。
演示脚本:
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