在今天的第二篇推文里面,我们介绍使用SampleRegions函数采样的一些弱点,比如速度慢等,具体介绍见第二条推文或者之前推文:
其实,答案很简单,就是将sampleRegions函数替换为sample函数即可,sample的说明如下。不难发现,sample函数能够实现和sampleRegions函数相同的功能,也就是实现从Image里面提取出坐标点对应的像素值,最后组成一个FeatureCollection。
不过需要注意的是,sample函数不会保留样本点的属性信息,因此如果是用于分类等任务时,需要手动在样本中加入属性信息,这个也很简单。参加过课程的同学肯定都懂,只需要使用map操作就可以完成。
接下来,我们就看看sample函数有多快。假设我们有20万条样本数据需要采样,那么此时使用sampleRegions函数会很难,但是使用sample函数里面就能够提取出坐标值。
代码的话,使用下面的代码大家就可以测试.其中point就是自己的矢量数据,可以很大很大的那种。
// 加载一个影像(例如:Landsat 8影像)
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20140318');
// Applies scaling factors.
function applyScaleFactors(image) {
var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true);
}
var imgData = applyScaleFactors(image);
print("image",image);
// var imgBand = ['SR_B7', 'SR_B6', 'SR_B5', 'SR_B4', 'SR_B3', 'SR_B2'];
var imgBand = ['SR_B4', 'SR_B3', 'SR_B2'];
var std_band = ['red','green','blue'];
imgData = imgData.select(imgBand,std_band);
var feaCol_3 = imgData.multiply(1e6).double().sample({
region:points.geometry(),
scale:30,
// projection:'EPSG:32610',
// factor:null,
numPixels:1e13,
// seed:false,
// dropNulls:true,
// tileScale:true,
geometries:true,
// scale:null,
// projection:null,
// factor:null,
// numPixels:null,
// seed:false,
// dropNulls:true,
// tileScale:true,
// geometries:false,
});
print('feaCol_3',feaCol_3.first());
print("feaCol_3 size",feaCol_3.size());
Map.addLayer(feaCol_3,{'color':'yellow'},'feaCol_3',false);
交流合作&科研搭子
想加入交流群的同学可加小编微信让其邀请进群(扫描下方二维码咨询报名或菜单栏“联系我们”选项框都可以找到小编哟)。注意,咨询加群验证信息请备注为“学位-研究方向-学校-加群”格式,否则不予通过。例如,假如你是武汉大学土地利用分类方向的博士研究生,则可以备注“博士-LULC-武大-加群”;假如你是清华水文方向的硕士研究生,则可以备注“硕士-水文-清华-加群”。
如果有帮助,点赞、关注、转发一下呗