GEE学习笔记 八十六:分类中的特征重要性分析

news2024/11/16 6:59:00

之前在GEE中做随机森林分类时候,很多人都在问如何做特征重要性分析?但是在GEE之前并没有相关API可以做特征重要性分析,最新的API更新后GEE也可以做特征重要性分析了。

1、目前常用的包含特征重要信息分析的分类方法包括:

(1)决策树

ee.Classifier.smileCart(maxNodes, minLeafPopulation)

(2)随机森林

ee.Classifier.smileRandomForest(numberOfTrees, variablesPerSplit, minLeafPopulation, bagFraction, maxNodes, seed)

    这两个方法和之前的分类决策树和随机森林分类方法参数非常类似,只不过调用这两个定义方法在使用explain()方法就可以得到每个分类特征重要性的信息。

2、得到特征重要性的API方法:

 

    也就是之前在分类器中的方法explain,这个方法是最开始就有的,只不过是最近GEE官方加入了特征重要性的分析返回信息,下面通过一个具体例子说明一下如何使用以及具体输出。

具体代码:

  1. var roi =

  2.     /* color: #d63000 */

  3.     /* shown: false */

  4.     /* displayProperties: [

  5.       {

  6.         "type": "rectangle"

  7.       }

  8.     ] */

  9.     ee.Geometry.Polygon(

  10.         [[[114.23790821489501, 36.43657462800738],

  11.           [114.23790821489501, 36.29834769127675],

  12.           [114.49265369829345, 36.29834769127675],

  13.           [114.49265369829345, 36.43657462800738]]], null, false),

  14.     crop =

  15.     /* color: #98ff00 */

  16.     /* shown: false */

  17.     ee.FeatureCollection(

  18.         [ee.Feature(

  19.             ee.Geometry.Point([114.31343922075439, 36.356156419842804]),

  20.             {

  21.               "type": 0,

  22.               "system:index": "0"

  23.             }),

  24.         ee.Feature(

  25.             ee.Geometry.Point([114.31056389269042, 36.35499859187555]),

  26.             {

  27.               "type": 0,

  28.               "system:index": "1"

  29.             }),

  30.         ee.Feature(

  31.             ee.Geometry.Point([114.31236633714843, 36.3529248270982]),

  32.             {

  33.               "type": 0,

  34.               "system:index": "2"

  35.             }),

  36.         ee.Feature(

  37.             ee.Geometry.Point([114.32159313615966, 36.35461840580203]),

  38.             {

  39.               "type": 0,

  40.               "system:index": "3"

  41.             }),

  42.         ee.Feature(

  43.             ee.Geometry.Point([114.32348141130615, 36.35638107103549]),

  44.             {

  45.               "type": 0,

  46.               "system:index": "4"

  47.             }),

  48.         ee.Feature(

  49.             ee.Geometry.Point([114.32936081346679, 36.35589720612248]),

  50.             {

  51.               "type": 0,

  52.               "system:index": "5"

  53.             }),

  54.         ee.Feature(

  55.             ee.Geometry.Point([114.33515438493896, 36.35565527253804]),

  56.             {

  57.               "type": 0,

  58.               "system:index": "6"

  59.             }),

  60.         ee.Feature(

  61.             ee.Geometry.Point([114.33545479234863, 36.35855842592195]),

  62.             {

  63.               "type": 0,

  64.               "system:index": "7"

  65.             }),

  66.         ee.Feature(

  67.             ee.Geometry.Point([114.29468521532226, 36.35679580999553]),

  68.             {

  69.               "type": 0,

  70.               "system:index": "8"

  71.             }),

  72.         ee.Feature(

  73.             ee.Geometry.Point([114.29979214128662, 36.34922647614173]),

  74.             {

  75.               "type": 0,

  76.               "system:index": "9"

  77.             }),

  78.         ee.Feature(

  79.             ee.Geometry.Point([114.28871998247314, 36.3387180531404]),

  80.             {

  81.               "type": 0,

  82.               "system:index": "10"

  83.             }),

  84.         ee.Feature(

  85.             ee.Geometry.Point([114.28279766496826, 36.33833778756726]),

  86.             {

  87.               "type": 0,

  88.               "system:index": "11"

  89.             }),

  90.         ee.Feature(

  91.             ee.Geometry.Point([114.39553627428222, 36.3299369018726]),

  92.             {

  93.               "type": 0,

  94.               "system:index": "12"

  95.             }),

  96.         ee.Feature(

  97.             ee.Geometry.Point([114.39725288805175, 36.32997147527504]),

  98.             {

  99.               "type": 0,

  100.               "system:index": "13"

  101.             }),

  102.         ee.Feature(

  103.             ee.Geometry.Point([114.39712414201904, 36.32796619257241]),

  104.             {

  105.               "type": 0,

  106.               "system:index": "14"

  107.             }),

  108.         ee.Feature(

  109.             ee.Geometry.Point([114.39918407854248, 36.3291762831369]),

  110.             {

  111.               "type": 0,

  112.               "system:index": "15"

  113.             }),

  114.         ee.Feature(

  115.             ee.Geometry.Point([114.39845451769042, 36.3274475765775]),

  116.             {

  117.               "type": 0,

  118.               "system:index": "16"

  119.             }),

  120.         ee.Feature(

  121.             ee.Geometry.Point([114.40467724260498, 36.32900341420687]),

  122.             {

  123.               "type": 0,

  124.               "system:index": "17"

  125.             }),

  126.         ee.Feature(

  127.             ee.Geometry.Point([114.40480598863769, 36.32734385296429]),

  128.             {

  129.               "type": 0,

  130.               "system:index": "18"

  131.             }),

  132.         ee.Feature(

  133.             ee.Geometry.Point([114.38210377153564, 36.33612529650057]),

  134.             {

  135.               "type": 0,

  136.               "system:index": "19"

  137.             }),

  138.         ee.Feature(

  139.             ee.Geometry.Point([114.38034424242187, 36.336194437797644]),

  140.             {

  141.               "type": 0,

  142.               "system:index": "20"

  143.             }),

  144.         ee.Feature(

  145.             ee.Geometry.Point([114.38098797258544, 36.34041194086619]),

  146.             {

  147.               "type": 0,

  148.               "system:index": "21"

  149.             }),

  150.         ee.Feature(

  151.             ee.Geometry.Point([114.38785442766357, 36.337473540724005]),

  152.             {

  153.               "type": 0,

  154.               "system:index": "22"

  155.             }),

  156.         ee.Feature(

  157.             ee.Geometry.Point([114.38532242235351, 36.34227863160822]),

  158.             {

  159.               "type": 0,

  160.               "system:index": "23"

  161.             })]),

  162.     nocrop =

  163.     /* color: #0b4a8b */

  164.     /* shown: false */

  165.     ee.FeatureCollection(

  166.         [ee.Feature(

  167.             ee.Geometry.Point([114.36832794603515, 36.344663782445146]),

  168.             {

  169.               "type": 1,

  170.               "system:index": "0"

  171.             }),

  172.         ee.Feature(

  173.             ee.Geometry.Point([114.37463650163818, 36.345078583829164]),

  174.             {

  175.               "type": 1,

  176.               "system:index": "1"

  177.             }),

  178.         ee.Feature(

  179.             ee.Geometry.Point([114.37742599901367, 36.34576991455905]),

  180.             {

  181.               "type": 1,

  182.               "system:index": "2"

  183.             }),

  184.         ee.Feature(

  185.             ee.Geometry.Point([114.378026813833, 36.34860430638123]),

  186.             {

  187.               "type": 1,

  188.               "system:index": "3"

  189.             }),

  190.         ee.Feature(

  191.             ee.Geometry.Point([114.37386402544189, 36.35009059256129]),

  192.             {

  193.               "type": 1,

  194.               "system:index": "4"

  195.             }),

  196.         ee.Feature(

  197.             ee.Geometry.Point([114.36987289842773, 36.352198996374725]),

  198.             {

  199.               "type": 1,

  200.               "system:index": "5"

  201.             }),

  202.         ee.Feature(

  203.             ee.Geometry.Point([114.37695393022705, 36.351887923993054]),

  204.             {

  205.               "type": 1,

  206.               "system:index": "6"

  207.             }),

  208.         ee.Feature(

  209.             ee.Geometry.Point([114.3797005122583, 36.35392715363849]),

  210.             {

  211.               "type": 1,

  212.               "system:index": "7"

  213.             }),

  214.         ee.Feature(

  215.             ee.Geometry.Point([114.37352070268798, 36.35627738595022]),

  216.             {

  217.               "type": 1,

  218.               "system:index": "8"

  219.             }),

  220.         ee.Feature(

  221.             ee.Geometry.Point([114.31785950121093, 36.34438724696162]),

  222.             {

  223.               "type": 1,

  224.               "system:index": "9"

  225.             }),

  226.         ee.Feature(

  227.             ee.Geometry.Point([114.31657204088378, 36.34345393245458]),

  228.             {

  229.               "type": 1,

  230.               "system:index": "10"

  231.             }),

  232.         ee.Feature(

  233.             ee.Geometry.Point([114.34390911516357, 36.33512274079625]),

  234.             {

  235.               "type": 1,

  236.               "system:index": "11"

  237.             }),

  238.         ee.Feature(

  239.             ee.Geometry.Point([114.35094723161865, 36.33723154988948]),

  240.             {

  241.               "type": 1,

  242.               "system:index": "12"

  243.             }),

  244.         ee.Feature(

  245.             ee.Geometry.Point([114.35309299883056, 36.337058698833104]),

  246.             {

  247.               "type": 1,

  248.               "system:index": "13"

  249.             }),

  250.         ee.Feature(

  251.             ee.Geometry.Point([114.35296425279785, 36.33501902740074]),

  252.             {

  253.               "type": 1,

  254.               "system:index": "14"

  255.             }),

  256.         ee.Feature(

  257.             ee.Geometry.Point([114.41952058729305, 36.35091929703152]),

  258.             {

  259.               "type": 1,

  260.               "system:index": "15"

  261.             }),

  262.         ee.Feature(

  263.             ee.Geometry.Point([114.41966006216182, 36.3516321782695]),

  264.             {

  265.               "type": 1,

  266.               "system:index": "16"

  267.             }),

  268.         ee.Feature(

  269.             ee.Geometry.Point([114.41982099470272, 36.35252219053154]),

  270.             {

  271.               "type": 1,

  272.               "system:index": "17"

  273.             }),

  274.         ee.Feature(

  275.             ee.Geometry.Point([114.42009458002224, 36.35383558809808]),

  276.             {

  277.               "type": 1,

  278.               "system:index": "18"

  279.             }),

  280.         ee.Feature(

  281.             ee.Geometry.Point([114.42027697023525, 36.35499343336394]),

  282.             {

  283.               "type": 1,

  284.               "system:index": "19"

  285.             }),

  286.         ee.Feature(

  287.             ee.Geometry.Point([114.42028233465328, 36.35609509850472]),

  288.             {

  289.               "type": 1,

  290.               "system:index": "20"

  291.             }),

  292.         ee.Feature(

  293.             ee.Geometry.Point([114.42228326257839, 36.35603461533285]),

  294.             {

  295.               "type": 1,

  296.               "system:index": "21"

  297.             }),

  298.         ee.Feature(

  299.             ee.Geometry.Point([114.42357072290554, 36.35606053669799]),

  300.             {

  301.               "type": 1,

  302.               "system:index": "22"

  303.             })]),

  304.     water =

  305.     /* color: #ffc82d */

  306.     /* shown: false */

  307.     ee.FeatureCollection(

  308.         [ee.Feature(

  309.             ee.Geometry.Point([114.3321717685144, 36.3306024371752]),

  310.             {

  311.               "type": 2,

  312.               "system:index": "0"

  313.             }),

  314.         ee.Feature(

  315.             ee.Geometry.Point([114.33210739549804, 36.333592954210076]),

  316.             {

  317.               "type": 2,

  318.               "system:index": "1"

  319.             }),

  320.         ee.Feature(

  321.             ee.Geometry.Point([114.28854832109619, 36.41266166922327]),

  322.             {

  323.               "type": 2,

  324.               "system:index": "2"

  325.             }),

  326.         ee.Feature(

  327.             ee.Geometry.Point([114.29610142168212, 36.40879346635716]),

  328.             {

  329.               "type": 2,

  330.               "system:index": "3"

  331.             }),

  332.         ee.Feature(

  333.             ee.Geometry.Point([114.28580173906494, 36.40547771059803]),

  334.             {

  335.               "type": 2,

  336.               "system:index": "4"

  337.             }),

  338.         ee.Feature(

  339.             ee.Geometry.Point([114.29541477617431, 36.40160915003326]),

  340.             {

  341.               "type": 2,

  342.               "system:index": "5"

  343.             }),

  344.         ee.Feature(

  345.             ee.Geometry.Point([114.3057144587915, 36.40547771059803]),

  346.             {

  347.               "type": 2,

  348.               "system:index": "6"

  349.             }),

  350.         ee.Feature(

  351.             ee.Geometry.Point([114.29953464922119, 36.39829308768715]),

  352.             {

  353.               "type": 2,

  354.               "system:index": "7"

  355.             }),

  356.         ee.Feature(

  357.             ee.Geometry.Point([114.39435610231533, 36.3617846267207]),

  358.             {

  359.               "type": 2,

  360.               "system:index": "8"

  361.             }),

  362.         ee.Feature(

  363.             ee.Geometry.Point([114.39429172929897, 36.361179837099506]),

  364.             {

  365.               "type": 2,

  366.               "system:index": "9"

  367.             }),

  368.         ee.Feature(

  369.             ee.Geometry.Point([114.38845524248256, 36.35940000037548]),

  370.             {

  371.               "type": 2,

  372.               "system:index": "10"

  373.             }),

  374.         ee.Feature(

  375.             ee.Geometry.Point([114.38152441438808, 36.35701530096524]),

  376.             {

  377.               "type": 2,

  378.               "system:index": "11"

  379.             }),

  380.         ee.Feature(

  381.             ee.Geometry.Point([114.38133129533901, 36.35653143999478]),

  382.             {

  383.               "type": 2,

  384.               "system:index": "12"

  385.             }),

  386.         ee.Feature(

  387.             ee.Geometry.Point([114.39965614732876, 36.36371992192421]),

  388.             {

  389.               "type": 2,

  390.               "system:index": "13"

  391.             }),

  392.         ee.Feature(

  393.             ee.Geometry.Point([114.40693029817714, 36.3668473954689]),

  394.             {

  395.               "type": 2,

  396.               "system:index": "14"

  397.             }),

  398.         ee.Feature(

  399.             ee.Geometry.Point([114.41094288286342, 36.36890351124372]),

  400.             {

  401.               "type": 2,

  402.               "system:index": "15"

  403.             }),

  404.         ee.Feature(

  405.             ee.Geometry.Point([114.40238127168789, 36.36840244602017]),

  406.             {

  407.               "type": 2,

  408.               "system:index": "16"

  409.             })]);

  410. //监督分类

  411. Map.centerObject(roi, 11);

  412. Map.addLayer(roi, {color: "red"}, "roi", false);

  413. var sampleData = crop.merge(nocrop).merge(water);

  414. //Landsat8 SR数据去云

  415. function rmCloud(image) {

  416.   var cloudShadowBitMask = (1 << 3);

  417.   var cloudsBitMask = (1 << 5);

  418.   var qa = image.select("pixel_qa");

  419.   var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)

  420.                  .and(qa.bitwiseAnd(cloudsBitMask).eq(0));

  421.   return image.updateMask(mask);

  422. }

  423. //缩放

  424. function scaleImage(image) {

  425.   var time_start = image.get("system:time_start");

  426.   image = image.multiply(0.0001);

  427.   image = image.set("system:time_start", time_start);

  428.   return image;

  429. }

  430. //NDVI

  431. function NDVI(image) {

  432.   return image.addBands(

  433.     image.normalizedDifference(["B5", "B4"])

  434.          .rename("NDVI"));

  435. }

  436. //NDWI

  437. function NDWI(image) {

  438.   return image.addBands(

  439.     image.normalizedDifference(["B3", "B5"])

  440.          .rename("NDWI"));

  441. }

  442. //NDBI

  443. function NDBI(image) {

  444.   return image.addBands(

  445.     image.normalizedDifference(["B6", "B5"])

  446.          .rename("NDBI"));

  447. }

  448. var l8Col = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")

  449.               .filterBounds(roi)

  450.               .filterDate("2018-1-1", "2019-1-1")

  451.               .map(rmCloud)

  452.               .map(scaleImage)

  453.               .map(NDVI)

  454.               .map(NDWI)

  455.               .map(NDBI);

  456. var bands = [

  457.   "B1", "B2", "B3", "B4", "B5", "B6", "B7",

  458.   "NDBI", "NDWI", "NDVI"

  459. ];

  460. var l8Image = l8Col.median()

  461.                    .clip(roi)

  462.                    .select(bands);

  463. var rgbVisParam = {

  464.   min: 0,

  465.   max: 0.3,

  466.   bands: ["B4", "B3", "B2"]

  467. };

  468. Map.addLayer(l8Image, rgbVisParam, "l8Image");

  469. //生成监督分类训练使用的样本数据

  470. var training = l8Image.sampleRegions({

  471.   collection: sampleData,

  472.   properties: ["type"],

  473.   scale: 30

  474. });

  475. //初始化分类器

  476. // var classifier = ee.Classifier.smileCart().train({

  477. //   features: training,

  478. //   classProperty: "type",

  479. //   inputProperties: bands

  480. // });

  481. var classifier = ee.Classifier.smileRandomForest(10).train({

  482.   features: training,

  483.   classProperty: "type",

  484.   inputProperties: bands

  485. });

  486. print(classifier.explain());

  487. //影像数据调用classify利用训练数据训练得到分类结果

  488. var classified = l8Image.classify(classifier);

  489. //训练结果的混淆矩阵

  490. var trainAccuracy = classifier.confusionMatrix();

  491. Map.addLayer(classified, {min:0, max:2, palette: ["green", "orange", "blue"]}, "classify");

代码分析:

(1)这段代码做的是一个简单的监督分类,通过自己标注的样本将影像分成3大类(作物、非作物和水),样本由于是我做测试随机标注的,所以测试精度和分类准确度不高。

(2)和之前的分类代码相比较,这里只是更换了分类方法,比如随机森林我使用的是smileRandomForest方法,参数和之前的方法的参数类似,这里只是简单设置了树的个数为10。

(3)然后对分类器调用explain方法就可以查看特征重要性信息,输出结果如下面所示。

运行结果:

    比如使用ee.Classifier.smileRandomForest()方法做的分类结果,使用explain后的信息如下图:

来源请引用:地理遥感生态网科学数据注册与出版系统。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/349650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础篇:03-SpringCloud工程部署启动

目录 1.工程搭建部署 方案一&#xff1a;完整工程导入 方案二&#xff1a;从零开始搭建 1.工程与module创建 2.数据库导入 3.项目启动 3.1 启动并访问user-service 3.2 启动并访问order-service 4.服务远程调用 时序图说明 服务远程调用实现 注入RestTemplate Res…

自学web前端觉得好难,可能你遇到了这些困境

好多人跟我说上学的时候也学过前端&#xff0c;毕业了想从事web前端开发的工作&#xff0c;但自学起来好难&#xff0c;快要放弃了&#xff0c;所以我总结了一些大家遇到的困境&#xff0c;希望对你会有所帮助。 目录 1. 意志是否坚定 2. 没有找到合适自己的老师 3. 为了找…

论文阅读【PAMI_2022】FSGANv2: Improved Subject Agnostic Face Swapping and Reenactment

论文阅读【PAMI_2022】FSGANv2: Improved Subject Agnostic Face Swapping and Reenactment论文的缩写全拼一、摘要&#xff08;问题&#xff0c;贡献&#xff0c;效果&#xff09;二、引言&#xff08;idea&#xff09;三、方法(FSGAN)1.Detection and tracking2.Generator ar…

node学习-3:服务器渲染和客户端渲染

1. 概念 一.服务端渲染&#xff0c;后端嵌套模板&#xff0c;后端渲染模板&#xff0c;SSR&#xff08;后端把页面组装好&#xff09; 做好静态页面&#xff0c;动态效果 把前端代码提供给后端&#xff0c;后端则把静态html以及里面的假数据给删除掉 通过模板进行动态生成h…

8个让你收入翻倍的高质量免费网站

毕业几年了&#xff0c;如果你的月薪不到1w&#xff0c;还是做着重复机械的动作&#xff0c;现在马上往下看&#xff0c;今天分享6个资源网站让你的收入暴增&#xff0c;尤其是最后一个。每天花一个小时&#xff0c;让你工资翻倍&#xff0c;从此在职场横着走&#xff0c;再也不…

GEE学习笔记 八十三:【GEE之Python版教程十三】几何图形

遥感分析中用到的数据主要就是这两大类&#xff1a;矢量数据和栅格数据。在Google Earth Eninge中&#xff0c;它为我们讲这两类数据封装成为了以下几类数据。 下面几节内容我会依次讲解相关内容的详细信息&#xff0c;这一节先讲一下几何图形ee.geometry。 学习任何新的东西首…

设计模式之抽象工厂模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、抽象工厂模式是什么&#xff1f; 抽象工厂模式是一种创建型的软件设计模式&#xff0c;该模式相当于升级版的工厂模式。 如果…

采集知乎评论

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! excel保存效果图: 首先我们找一个评论比较多的帖子,如下图所示有874条评论 点击评论…

算法刷刷刷| 回溯篇| 组合问题大集合

77.组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4], [3,4], [2,3], [1,2], [1,3], [1,4],] import java.util.ArrayList; import java.util.List;clas…

可靠、稳定、安全,龙蜥云原生容器镜像正式发布!

文/云原生 SIG01背景随着云原生的蓬勃发展&#xff0c;越来越多的企业在自己的生产或者测试环境使用云原生技术&#xff0c;而容器镜像正是云原生技术中应用的实际运行环境。一个好的容器运行环境即容器镜像会真正关系到应用的体验、演进和维护。那么选择一个好的容器镜像需要考…

Flink实时同步MySQL与Doris数据

参考&#xff1a; 技术解析&#xff5c;Doris Connector 结合 Flink CDC 实现 MySQL 分库分表 Exactly Once 精准接入-阿里云开发者社区 逻辑图&#xff1a; 1. Flink环境&#xff1a; https://flink.apache.org/zh/ 下载flink-1.15.1 wget https://dlcdn.apache.org/flink…

并发编程之synchronized详解

目录 设计同步器的意义 如何解决线程并发安全问题&#xff1f; synchronized原理详解 synchronized底层原理 Monitor监视器锁 什么是monitor&#xff1f; 对象的内存布局 对象头 对象头分析工具 锁的膨胀升级过程 偏向锁 轻量级锁 自旋锁 锁消除 逃逸分析 设…

RabbitMQ学习(七):交换器

〇、前言在之前的内容中&#xff0c;我们创建了一个工作队列。我们假设的是工作队列背后&#xff0c;每个任务都恰好交付给一个消 费者(工作进程)。在今天的内容中&#xff0c;我们将做一些完全不同的事情——我们将消息传达给多个消费者。这种模式 称为 “发布/订阅”。为了说…

横板格斗类游戏实战:核心玩法介绍(一)

第一章讲解了横板格斗类游戏框架主要涉及到的一些模块设计与技术原理&#xff0c;本章节开始讲解横板格斗类游戏的玩法&#xff0c;美术资源与游戏的数值策划。我们以主要的截图为示意图&#xff0c;来把整个横板格斗类游戏的核心玩法和要实现的功能大致列一遍。对啦&#xff0…

QGIS中进行批量坡向计算

QGIS中进行坡向计算1. 坡向计算中的Z因子&#xff08;垂直单位与水平单位的比值&#xff09;2. 坡向计算步骤坡度计算的姊妹篇–坡向计算来了 1. 坡向计算中的Z因子&#xff08;垂直单位与水平单位的比值&#xff09; z 因子是一个转换因子&#xff0c;当输入表面的垂直坐标&…

BFC到底是什么?如何理解

BFC到底是什么&#xff1f; BFC全称&#xff1a;Block Formatting Context&#xff0c; 名为“块级格式化上下文”。 W3C官方解释&#xff1a;BFC 它决定了元素如何对其内容进行定位&#xff0c;以及与其他元素的关系和相互作用&#xff0c;当涉及到可视化布局时&#xff0c;B…

IMU调试方案

1.IMU 型号 QMI8658C IMU英文数据手册 参照连线与数据手册使用 类似的惯导模块开发https://www.cnblogs.com/rockyching2009/p/15071669.html 微雪 https://www.waveshare.net/wiki/RP2040-LCD-1.28 micro python &#xff1a;https://docs.micropython.org/en/latest/esp32/t…

ArcGIS API for JavaScript 4.15系列(7)——Dojo中的Ajax请求操作

1、前言 作为重要的前后端交互技术&#xff0c;Ajax被广泛应用于Web项目中。无论是jQuery时代的$.ajax还是Vue时代下的axios&#xff0c;它们都对Ajax做了良好的封装处理。而Dojo也不例外&#xff0c;开发者使用dojo/request模块可以轻松实现Ajax相关操作&#xff0c;下面开始…

UNP 简介

目录 从一个简单的时间获取客户端开始 socket 指定服务器 IP 地址与端口 与服务器建立连接并读取数据 简单的时间获取服务端 Unix 标准 从一个简单的时间获取客户端开始 接下来&#xff0c;将从一个使用 TCP 连接的获取时间的客户端开始。 // 以下代码与 UNP intro/dayt…

后台管理项目重构为vue3.0

目录前言&#xff1a;为什么要重构项目&#xff1f;重构的目的具体案例下载项目一. 为什么要重构后台管理项目二. 安装项目所需的vue3.0 插件三. 具体代码重构四. 在更改中遇到的bug总结前言&#xff1a; 我们平常玩的游戏有时需要更新出新的内容&#xff0c;我们的项目也需要…