• PIE-Engine 教程:水稻面积提取2—监督分类(宿迁市)


    这里是第二部分计算水稻提取,这里采用的是监督分类。这里我们将上一次影像的的波段加载出来,然后将其已经选择好的样本点进行分析,这里我们主要用到随机样本点的产生,然后按照7/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

    randomColumn(columnName,seed,distribution)将矢量集合产生一列随机数

    向FeatureCollection中添加一列确定性伪随机数。

    方法参数:

    - featureCollection(FeatureCollection)

    FeatureCollection实例

    - columnName(String)

    新增列的名称,默认为 'random'

    - seed(Long)

    随机种子,默认为0

    - distribution(String)

    生成随机数的分布类型。赋值为'uniform' 、'normal'之一

    返回值:FeatureCollection

    pie.Classifier.svm(options)

    SVM分类方法分类器

    方法参数:

    - Classifier(Classifier)

    监督分类分类器实例

    - options(Object)

    参数对象

    返回值:Classifier

    pie.Classifier.rTrees(options)

    随机森林分类方法分类器

    方法参数:

    - Classifier(Classifier)

    监督分类分类器实例

    - options(Object)

    参数对象

    返回值:Classifier

    代码:

    1. /**
    2. * @Name : 基于 PIE Engine Studio 的水稻自动提取
    3. * @Author : 武汉大学VHR队
    4. * @Desc : 淮安市水稻提取 - 进行监督分类
    5. * @Source : 航天宏图第四届 “航天宏图杯”PIE软件二次开发大赛云开发组三等奖获奖作品
    6. */
    7. //2.进行监督分类
    8. var area = pie.Geometry.Polygon([
    9. [
    10. [
    11. 118.19042604840365,
    12. 32.717477656827796
    13. ],
    14. [
    15. 119.67193792508522,
    16. 32.717477656827796
    17. ],
    18. [
    19. 119.67193792508522,
    20. 34.12687250105918
    21. ],
    22. [
    23. 118.19042604840365,
    24. 34.12687250105918
    25. ],
    26. [
    27. 118.19042604840365,
    28. 32.717477656827796
    29. ]
    30. ]
    31. ], null);
    32. //选择淮安市矢量
    33. var roi = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY").filter(pie.Filter.eq('name', '淮安市')).first().geometry()
    34. Map.centerObject(roi, 8)
    35. Map.addLayer(roi)
    36. //导入用于分类影像并勾选波段
    37. var bands = ["B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9"]
    38. var l8Image = pie.Image('user/pieadmin/saas/06/l8Image_1320')
    39. .select(bands);
    40. //合并样本点并采样
    41. var sample = pie.FeatureCollection('user/pieadmin/saas/06/sample');
    42. var sampleFeatureCollection = l8Image.sampleRegions(sample, ["type"], 30);
    43. sampleFeatureCollection = sampleFeatureCollection.randomColumn('random');
    44. //训练样本按0.7比例划分
    45. var trainingFeatures = sampleFeatureCollection.filter(pie.Filter.lte("random", 0.7));
    46. var testingFeatures = sampleFeatureCollection.filter(pie.Filter.gt("random", 0.7));
    47. //随机森林或支持向量机分类
    48. var classifier = pie.Classifier.svm().train(trainingFeatures, "type", bands); //支持向量机
    49. //var classifier = pie.Classifier.rtrees().train(trainingFeatures, "type", bands); //随机森林
    50. // 影像分类,并加载显示
    51. var imageA = l8Image.classify(classifier, "classifyA");
    52. var visParam = {
    53. min: 1,
    54. max: 4,
    55. palette: 'EAF2F5,000032,1F3600,FAFFC8'
    56. };
    57. Map.addLayer(imageA, visParam, "ClassifyImage");
    58. // 添加图例
    59. var data = {
    60. title: "淮安市水稻分类",
    61. colors: ['#EAF2F5', '#000032', '#1F3600', '#FAFFC8'],
    62. labels: ["水稻", "其他植被", "城镇", "水体"],
    63. step: 1
    64. };
    65. var style = {
    66. bottom: "10px",
    67. right: "450px",
    68. width: "350px",
    69. height: "70px"
    70. };
    71. var legend = ui.Legend(data, style);
    72. Map.addUI(legend);
    73. //导出随机森林或支持向量机分类结果
    74. Export.image({
    75. image: imageA,
    76. description: "svmImage",
    77. assetId: "svm",
    78. region: area,
    79. scale: 30
    80. });

    结果:

     这个图的结果不太好,因为这里我们看到白色作为水稻的区域并不是太符合常理,一般绿色更好,水体面积一般是绿色,而这里用的是黄色,市区一般不透水层应该用红色。

  • 相关阅读:
    【C++】十大排序算法之 插入排序 & 希尔排序
    基于WPSOffice+Pywpsrpc构建Docker镜像,实现文档转换和在线预览服务
    Linux音频调试示例
    c# Enumerable<T>的GroupJoin方法和Join的用法和区别
    【​毕业季·进击的技术er​】--分享自己的经历与经验
    (面试)谈谈我对C++面向对象特性的理解
    第六十二 CSP的常见问题 - CSP进程是否消耗许可证?,我如何编译CSP页面
    Ubuntu 使用 nginx 搭建 https 文件服务器
    【明年找到好工作】:面试题打卡第四天
    感谢CSDN十二年的默默陪伴
  • 原文地址:https://blog.csdn.net/qq_31988139/article/details/127038637