我们首先加载我们之前所分类后的结果,然后利用一个函数进行设添加属性,将type的分类分成1,2,3,然后将三者结合在一起,
sampleRegions(collection,properties,scale,projection,tileScale,geometries)
从Image中随机采样,返回结果是一个FeatureCollection,FeatureCollection下的每一个Feature中存储采样点的相应波段的信息
方法参数:
- image(Image)
Image实例。
- collection(FeatureCollection)
样本点,需要包括分类字段
- properties(List)
采样保留字段集合
- scale(Float)
图像采样比例尺
- projection(String)
未启用
- tileScale(Float)
未启用
- geometries(Boolean)
未启用
返回值:Image
errorMatrix(actual,predicted,order)
通过比较FeatureCollection的两列(一列包含实际值,另一列包含预测值),计算FeatureCollection的二维错误矩阵,其中数值从0开始。矩阵的轴0(行)对应于实际值,轴1(列)对应于预测值。
方法参数:
- featureCollection(FeatureCollection)
FeatureCollection实例
- actual(String)
包含实际值的属性的名称。
- predicted(String)
包含预测值的属性的名称。
- order(List)
未启用
返回值:ConfusionMatrix
acc()
混合矩阵的精确度计算结果
方法参数:
- ConfusionMatrix(Object)
混合矩阵对象
返回值:Number
kappa()
返回混合矩阵的kappa系数
方法参数:
- ConfusionMatrix(Object)
混合矩阵对象
返回值:Number
代码:
/** * @Name : 基于 PIE Engine Studio 的水稻自动提取 * @Author : 武汉大学VHR队 * @Desc : 淮安市水稻提取 - 精度评价 * @Source : 航天宏图第四届 “航天宏图杯”PIE软件二次开发大赛云开发组三等奖获奖作品 */ //5.精度评价 //导入验证样本 var isa = pie.FeatureCollection('user/pieadmin/saas/06/ivali_sa'); var forest = pie.FeatureCollection('user/pieadmin/saas/06/vali_forest'); var water = pie.FeatureCollection('user/pieadmin/saas/06/vali_water'); var rice = pie.FeatureCollection('user/pieadmin/saas/06/vali_rice'); //给验证样本添加属性type,1为水稻,2为其他地物 var rice = rice.map(function(feature) { return feature.set("type", "1") }) var forest = forest.map(function(feature) { return feature.set("type", "2") }) var isa = isa.map(function(feature) { return feature.set("type", "2") }) var water = water.map(function(feature) { return feature.set("type", "2") }) var norice = water.merge(forest).merge(isa); var sample = rice.merge(norice); //选择用于淮安市精度评价的图像 var image = pie.Image('user/pieadmin/saas/06/result_0724_acc').select('B1').rename('predict'); //支持向量机结果的路径:'user/pieadmin/saas/06/svmrice_acc' //随机森林结果的路径:'user/pieadmin/saas/06/rfrice_acc' //阈值筛选后最终结果路径:'user/pieadmin/saas/06/result_0724_acc' //获得验证样本 var validation = image.sampleRegions(sample, ["type"], 30); //混淆矩阵计算 var class_11 = validation.filter(pie.Filter.eq('type', 1)).filter(pie.Filter.eq('predict', 1)).size(); var class_12 = validation.filter(pie.Filter.eq('type', 1)).filter(pie.Filter.eq('predict', 2)).size(); var class_21 = validation.filter(pie.Filter.eq('type', 2)).filter(pie.Filter.eq('predict', 1)).size(); var class_22 = validation.filter(pie.Filter.eq('type', 2)).filter(pie.Filter.eq('predict', 2)).size(); var sum = validation.filter(pie.Filter.eq('type', 2).and(pie.Filter.eq('predict', 2))).size() //print(sum) print(class_11); print(class_21); print(class_12); print(sum); //精度评价,输出OA,KAPPA var errorM = validation.errorMatrix("type", "predict"); print(errorM); print(errorM.acc()); print(errorM.kappa());