我们首先加载我们之前所分类后的结果,然后利用一个函数进行设添加属性,将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
代码:
代码语言:javascript复制/**
* @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());