google earth engine(GEE)进行非监督分类
在GEE非监督分类中,需要考虑的步骤:
1.筛选数据;
2.数据预处理(去云,镶嵌,裁剪等);
3.选择方法进行非监督分类;
4.结果导出;
5.使用arcgis进行分类结果的合并与重分类。
我先提供一个完整的代码,大家都可先看看效果:
gee 非监督分类共享链接:https://code.earthengine.google.com/c644c08bf6611a00d5123bccaf5ee871
下面是每一步具体的代码:
1.筛选数据;
选择landsat8作为数据源,并且制定研究区(我上传的是江苏某市的行政图),筛选研究时间,影像云量:
var startDate = ee.Date('2018-04-01');
var endDate = ee.Date('2018-9-30');
var collection = l8.filterDate(startDate, endDate)//时间过滤.filterBounds(roi)//位置过滤.filter(ee.Filter.lte('CLOUD_COVER',10))//云量过滤;
2.数据预处理(去云,镶嵌,裁剪等);
首先,使用一个去云函数,读取该像素在影像集合的云量,如果超过阈值,则直接去掉该像素值。去云函数要封装好,需要的时候直接调用,这可以保证你在任意的项目中都可以使用:
//去云函数
var remove_cloud=function(collection)//************select purified pixes************/{// 计算每个像元的云分量,定义函数fun_calCloudScorevar fun_calCloudScore = function(image) {return ee.Algorithms.Landsat.simpleCloudScore(ee.Image(image));//simpleCloudScore计算TOA数据每一个像元的云指数};//确定要进行函数运算的数据集以及函数var calCloudScore = ee.ImageCollection(collection).map(fun_calCloudScore);//屏蔽阈值超过10的像素var fun_maskCloud = function(image) {// Create a mask from the cloud score and combine it with the image mask.var mask = image.select(['cloud']).lte(10);//TOA数据经simpleCloudScore计算产生“cloud”属性,“cloud”小于10的像元保留// Apply the mask to the image and display the result.显示云显示云掩膜return image.updateMask(mask);//更新};//确定要进行函数运算的数据集以及函数var maskCloud = ee.ImageCollection(calCloudScore).map(fun_maskCloud);var maskCloud2=maskCloud.mean()print('maskCloud2',maskCloud2 )Map.addLayer(maskCloud,visualParam, 'maskCloud', false);//显示干净像元筛选过的maskCloudMap.addLayer(maskCloud2,visualParam, 'maskCloud2', false);//显示干净像元筛选过的maskCloudreturn maskCloud;}
之后直接对研究区进行去云、镶嵌与裁剪,这个一句话就行了:
var image=remove_cloud(collection).mosaic().clip(roi);
3.选择方法进行非监督分类:
目前gee提供非常多的非监督分类方法,可以根据自己的需求来,在这里我推荐大家使用:非监督分类方法wekaCobweb,wekaKMeans,wekaLVQ。需要注意的是每个方法,设置的必要参数是不一样的,这个一定要在使用前看看gee关于方法的说明,弄清楚哪些是必填项。clusters就是非监督分类结果。
//分类区域边界线
Map.addLayer(ee.Image().paint(roi, 0, 2), {}, 'roi');//分类区域的选择
var training = image.sample({region: roi,scale: 30,numPixels: 5000
});//非监督分类方法选择wekaCobweb,wekaKMeans,wekaLVQ
var clusterer = ee.Clusterer.wekaCobweb({cutoff:0.004}).train(training);var result = image.cluster(clusterer);//加载影像
Map.addLayer(result.randomVisualizer(), {}, 'clusters');
非监督分类结果:
4.结果导出;
导出到google drive里面,再进行下载,进行本地化处理。
//导出
Export.image.toDrive({image:result ,//分类结果description: 'unsupervised_kmeans',//文件名folder: 'unsupervised_kmeans',scale: 30,//分辨率region: roi,//区域maxPixels:34e10//此处值设置大一些,防止溢出});
5.使用arcgis进行分类结果的合并与重分类。
由于我使用的是wekaCobweb分类方法,最后导出了大概100个类别,但是我只需要4个类别,这个时候就对分类结果进行重分类。如果你想减少工作量,可以使用KMeans方法,只导出10类左右。
最后经过重分类,得到我需要的4类结果:
到此,利用GEE进行非监督分类就结束了。需要注意两个问题:1.非监督分类的方法与参数选择,可改变输出数量;
2.得到的结果,最好就行导出,在本地进行后续处理。
希望同行多多交流,谢谢
VX:kitmyfaceplease2;欢迎关注公众号:锐多宝的地理空间;
google earth engine(GEE)进行非监督分类相关推荐
- Google Earth Engine(GEE)——User memory limit exceeded(2)
上一次我们已经知道如何去进行避免这种错误的发生,有关详细内容,如果单单只是解决这个问题我们用到的是limit 和 first,上一次的博客在这里: (207条消息) Google Earth Engi ...
- Google Earth Engine(GEE) 01-中输入提示快捷键Ctrl+space无法使用的问题
Google Earth Engine(GEE) 01-中输入提示快捷键Ctrl+space无法使用的问题 GEE中 Ctrl+space组合键用于代码输入快捷提示,能够提高编码的准确度和速度,但是, ...
- Google Earth Engine(GEE)批量下载代码(以 NDVI数据为例)
下载数据先准备工作(具体细节都能查到):科学上网 谷歌邮箱,谷歌邮箱注册GEE账号. 一:导入需要下载边界shp文件. 标题 找到自己的shp文件,导入除了sbx文件的所有文件. 导入成功 命名ass ...
- 使用Google Earth Engine (GEE)实现MODIS数据批量下载
使用Google Earth Engine GEE实现MODIS数据批量下载 前言 下载数据代码 批量执行run任务 关注公众号,分享GIS知识.ArcGIS教程.SCI论文与科研日常等 前言 上图是 ...
- 基于google earth engine(GEE)下载研究区域影像
基于google earth engine(GEE)下载研究区域影像 当研究需要Landsat数据时,我们可以通过USGS官网或者地理空间数据云平台下载.由于地理空间数据云目前无法下载到较新的数据,可 ...
- Google Earth Engine (GEE) ——卫星影像的监督分类(svm)
问题 GEE 提供哪些机器学习技术? 如何对卫星图像进行监督分类? 如何评估分类器的准确性? 如何手动创建自己的几何图形? 目标 练习查找无云图像和使用手绘几何导入 学习训练和应用分类算法所需的基本功 ...
- Google Earth Engine(GEE)——可视化动态图
代码: var geometry = /* color: #d63000 *//* shown: false *//* displayProperties: [{"type": & ...
- 关于google earth engine(GEE)的一些想法与大胆预测
我接触GEE有两年了,GEE留给我的印象是:无所不能. 不管是从庞大的数据量,还是包含遥感的各类算法:随机森林.SVM.CNN,都让人惊讶. 从GEE的云端操作来看,传统遥感需要几个月做出来的全国ND ...
- google earth engine GEE批量 run下载插件
在Google earth engine中,批量导出文件经常遇到多个文件下载的情况,只能一个个点击RUN.这里介绍一款插件,Open Earth Engine extension .该插件的作者是Ma ...
最新文章
- 2018机器阅读理解技术竞赛,奇点机智获第一名
- Bio-protocol首届生物实验短视频大赛
- MVC (ModelBinder等)技巧
- 在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
- junit5_使用JUnit对ADF应用程序进行单元测试
- 独占一行 html_HTML基础-语义化标签
- Abp + Grpc 如何实现用户会话状态传递
- 0x80070003系统找不到指定路径_Win7系统中gpedit.msc找不到应该如何解决?
- c6x Linux 内核中断分析
- mui 框架:a标签无法跳转 - 解决篇
- vue划入划出事件_基于vue中对鼠标划过事件的处理方式详解
- 实验1 数字图像处理的MATLAB基础,《数字图像处理(实验部分)》实验1_数字图像处理中MATLAB使用基础...
- oracle10gr2安装教程,Solaris10安装Oracle10gR2时的注意事项
- 总结: C++ 中如何把输出结果写入到文件中
- StreamSets sdc rpc 测试
- SPSS如何进行一致性检验(计算kappa值)
- it人才外包可以帮助企业解决这些问题
- UESTC_冬马党 CDOJ 882
- php设置pst时区,PHP时区标识符含义
- RESTful风格的springMVC