手写GEE中最好用的格网划分函数
GEE上的影像导出时,如果影像覆盖的区域过大或者存储数据量过大,则GEE会对导出的影像进行分块导出,但是系统的导出方法不会按照我们的需求分块导出,这个时候就需要对影像进行分块,划分格网,然后再格网边界导出影像数据,这里提供一种格网导出的方法,可以对任意的区域进行划分,由用户指定行列数目以及边界范围即可完成格网划分。具体的格网划分函数如下所示:
exports.generateGrid = function(xmin, ymin, xmax, ymax,n, m) {
//xmin代表最小经度
//ymin代表最小纬度
//n代表列数
//m 代表行数
var dx=(xmax-xmin)/n
var dy=(ymax-ymin)/m
var xList=[]
var yList=[]
for(var i=0;i<n;i++)
{
xList.push(xmin+dx*i)
}
for(var j=0;j<m;j++)
{
yList.push(ymin+dy*j)
}
print(xList,yList)
//get all the rects
var rectList=ee.List([])
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i==n-1)
{
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]
}
print(coords)
var rect = ee.Algorithms.GeometryConstructors.Rectangle(ee.List(coords)); //生成矩形
rectList=rectList.add(ee.Feature(rect))
}
}
return ee.FeatureCollection(rectList);
}