google earth engine随缘学习(四)研究海岸线变化

好久没更新了,一方面是事真的多,另一方面是自己有多松懈了,今天研究的是填好造陆的变化。本人地理较差,专业问题请大佬多指正!本文主要是记录栅格缓冲区,重分类,消除孤岛等等一些GEE函数操作 。现在开始~ 1.数据的选取
选取数据考虑的是水和陆地的年际变化,于是选取以下数据作为本次的实验数据: 【google earth engine随缘学习(四)研究海岸线变化】google earth engine随缘学习(四)研究海岸线变化
文章图片

下面是数据波段的介绍: google earth engine随缘学习(四)研究海岸线变化
文章图片

这里我把季节性水体和永久性水体都归为海洋(即会把部分滩涂归为海洋,或是把坑塘水田误归为海洋)
2.代码部分

function erode(img, distance) { var d = (img.not().unmask(1) .fastDistanceTransform(256).sqrt() .multiply(ee.Image.pixelArea().sqrt())) return img.updateMask(d.gt(distance)) }function dilate(img, distance) { var d = (img.fastDistanceTransform(256).sqrt() .multiply(ee.Image.pixelArea().sqrt())) return d.lt(distance) }var land = ee.Image("USGS/SRTMGL1_003").unmask(0).gt(0) var landMask = erode(dilate(land, 3000), 10000).mask().eq(1)//这两个函数是用来做栅格的缓冲区 var oceanMask = erode(land.not(), 10000).mask().eq(1)var imageCollection=lt.map(function(img){//这里lt为引用的water classification数据集 img=img.remap([0,1,2,3],[0,0,3,3]).unmask(0).not(); //重分类函数 var waterMask=img; var minwaterSize = 1024; var minlandSize = 60; waterMask =waterMask.where(landMask,1); waterMask =waterMask.where(oceanMask,0); var segmentSize = waterMask.connectedPixelCount(Math.max(minwaterSize,minlandSize),false); //清除孤岛 var minSize = ee.Image(minwaterSize).where(waterMask,minlandSize); waterMask = waterMask.where(segmentSize.lt(minSize),waterMask.not()); return waterMask ; }); var coastline = imageCollection.first().reduceToVectors({ reducer: ee.Reducer.countEvery(), geometry: roi, scale: 200, maxPixels: 1e10 }); var simpleBound = coastline.geometry().simplify(50); var feature = ee.Feature(simpleBound ); var featureCollection = ee.FeatureCollection([feature]); Export.table.toDrive({collection: featureCollection, fileFormat: 'KML'});

上述代码的大致流程就是,先通过DEM数据做反向缓冲区分析,分别计算沿海地区之外的海洋与陆地面积,用来作为以后的掩模数据,消除内陆水系的影响。对影像集的处理上,是先通过重分类大致区分海洋和陆地,再通过掩模消除内陆水系。然后规定海洋和陆地的最大孤岛面积(单位是像元),然后用connectedPixelCount函数计算每个像元连接周围的数量,最后通过where等一系列函数清除孤岛。
最后是矢量化并简化边界,导出矢量文件,在此不表。
原始图像(经过重分类,并对缺失的陆地数据通过ummask()函数补充之后的数据)
处理后的图像: google earth engine随缘学习(四)研究海岸线变化
文章图片

矢量化的海岸线边界(随便截取的一块区域):
这里将季节性的水体直接划分为海洋还是会带来一些误差的~

    推荐阅读