​(4条消息) GEE:内存超限?将研究区划分成规则的小块运算__养乐多_的博客-CSDN博客​

这篇博文很好,尤其是对于初学者,保存学习之。该博主还有很多博文对于GEE学习很有帮助,大赞一个!

下一步可以研究一下:对分块后的矢量,使用类似于ArcGIS里面的“劈裂”功能,将分块后的矢量数据逐个导出,以方便实现对分块矢量的循环操作。

var roi = table.geometry()

//切割实验区
function gridSplitMN(roi, n, m) {

var coordinateList = roi.bounds().coordinates().flatten();

var xmin = coordinateList.get(0).getInfo();

var ymin = coordinateList.get(1).getInfo();

var xmax = coordinateList.get(4).getInfo();

var ymax = coordinateList.get(5).getInfo();

// Get dx & dy.
var dx = (xmax-xmin)/n;

var dy = (ymax-ymin)/m;

// Generate all the rects.
var gridList=ee.List([]);

var fid = 0;

for(var i=0;i<n;i++)

{
for(var j=0;j<m;j++)

{
if(i==n-1)

{
if(j == m-1)

{
var coords=[xmin+i*dx,ymin+j*dy,xmax,ymax];
}

else {
var coords=[xmin+i*dx,ymin+j*dy,xmax,ymin+(j+1)*dy]
}
}

else if (j==m-1)

{
var coords=[xmin+i*dx,ymin+j*dy,xmin+(i+1)*dx,ymax]
}

else

{
var coords=[xmin+i*dx,ymin+j*dy,xmin+(i+1)*dx,ymin+(j+1)*dy]
}

var rect = ee.Feature(ee.Algorithms.GeometryConstructors.Rectangle(ee.List(coords)));

// Filter.
if(rect.intersects(roi).getInfo()) {

var intersect = rect.intersection(roi);

intersect = intersect.set('grid_id', fid);

fid++;

gridList=gridList.add(intersect);

}
}
}

// Return.
return ee.FeatureCollection(gridList);
}

//将研究区分为4*4=16个格子,选择第11个格子做研究区
roi = gridSplitMN(roi, 4, 4).filterMetadata('grid_id', 'equals', 11).first().geometry();

//设置显示样式:color代表边界颜色;fillcolor代表填充颜色
var styling={color:'red',fillColor:'00000000'}

//JX就是矢量边界
Map.addLayer(table.style(styling),{},"Roi_Boundary")

Map.centerObject(table, 5);

Map.addLayer(roi,{},'roi_Boundary');