本文主要分享GEE提供边缘检测函数——‘CannyEdgeDetector’
利用NDVI检测植被边缘
//加载Landsat5大气层反射率书籍,计算NDVI
var image = ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_031034_20110619');
var ndvi = image.normalizedDifference(['B4','B3']);
// 利用GEE提供边缘检测算法
// 0.7为阈值,如果梯度幅度高于此阈值则仅将像素视为边缘检测对象。
var canny = ee.Algorithms.CannyEdgeDetector(ndvi, 0.7);
// 保留所探测的边缘
canny = canny.updateMask(canny);
Map.setCenter(-101.05259, 37.93418, 13);
//加载影像
Map.addLayer(ndvi, {min: 0, max: 1}, 'Landsat NDVI');
Map.addLayer(canny, {min: 0, max: 1, palette: 'FF0000'}, 'Canny Edges');
代码运行结果
不好意思这还是本人是第一次知道美国农田区是圆形的,主要是为了其指针式灌溉
接下来修改代码看一下我们大中国的农田区,密集的矩形农田
var image = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_122034_20160310');
var ndvi = image.normalizedDifference(['B5','B4']);
var canny = ee.Algorithms.CannyEdgeDetector(ndvi, 0);
canny = canny.updateMask(canny);
Map.setCenter(116.99,37.9, 13);
//Map.addLayer(image,{bands:['B5','B4','B3'],min:1,max:3000})
Map.addLayer(ndvi, {min: 0, max: 1}, 'Landsat NDVI');
Map.addLayer(canny, {min: 0, max: 1, palette: 'FF0000'}, 'Canny Edges');
实例代码运行结果