• Vue中使用Kriging.js做克里金插值图


    这个,我完全是照抄大佬的

    参考链接:https://blog.csdn.net/weixin_40184249/article/details/90521127

    addKriging() {
          let _this = this
          let params = {
            mapCenter: [107.249894, 29.99305],
            krigingModel: 'exponential', //model还可选'gaussian','spherical'
            krigingSigma2: 0,
            krigingAlpha: 226,
            canvasAlpha: 0.75, //canvas图层透明度
            colors: [
              '#00A600',
              '#01A600',
              '#03A700',
              '#04A700',
              '#05A800',
              '#07A800',
              '#08A900',
              '#09A900',
              '#0BAA00',
              '#0CAA00',
              '#0DAB00',
              '#0FAB00',
              '#10AC00',
              '#12AC00',
              '#13AD00',
              '#14AD00',
              '#16AE00',
              '#17AE00',
              '#19AF00',
              '#1AAF00',
              '#1CB000',
              '#1DB000',
              '#1FB100',
              '#20B100',
              '#22B200',
              '#23B200',
              '#25B300',
              '#26B300',
              '#28B400',
              '#29B400',
              '#2BB500',
              '#2CB500',
              '#2EB600',
              '#2FB600',
              '#31B700',
              '#33B700',
              '#34B800',
              '#36B800',
              '#37B900',
              '#39B900',
              '#3BBA00',
              '#3CBA00',
              '#3EBB00',
              '#3FBB00',
              '#41BC00',
              '#43BC00',
              '#44BD00',
              '#46BD00',
              '#48BE00',
              '#49BE00',
              '#4BBF00',
              '#4DBF00',
              '#4FC000',
              '#50C000',
              '#52C100',
              '#54C100',
              '#55C200',
              '#57C200',
              '#59C300',
              '#5BC300',
              '#5DC400',
              '#5EC400',
              '#60C500',
              '#62C500',
              '#64C600',
              '#66C600',
              '#67C700',
              '#69C700',
              '#6BC800',
              '#6DC800',
              '#6FC900',
              '#71C900',
              '#72CA00',
              '#74CA00',
              '#76CB00',
              '#78CB00',
              '#7ACC00',
              '#7CCC00',
              '#7ECD00',
              '#80CD00',
              '#82CE00',
              '#84CE00',
              '#86CF00',
              '#88CF00',
              '#8AD000',
              '#8BD000',
              '#8DD100',
              '#8FD100',
              '#91D200',
              '#93D200',
              '#95D300',
              '#97D300',
              '#9AD400',
              '#9CD400',
              '#9ED500',
              '#A0D500',
              '#A2D600',
              '#A4D600',
              '#A6D700',
              '#A8D700',
              '#AAD800',
              '#ACD800',
              '#AED900',
              '#B0D900',
              '#B2DA00',
              '#B5DA00',
              '#B7DB00',
              '#B9DB00',
              '#BBDC00',
              '#BDDC00',
              '#BFDD00',
              '#C2DD00',
              '#C4DE00',
              '#C6DE00',
              '#C8DF00',
              '#CADF00',
              '#CDE000',
              '#CFE000',
              '#D1E100',
              '#D3E100',
              '#D6E200',
              '#D8E200',
              '#DAE300',
              '#DCE300',
              '#DFE400',
              '#E1E400',
              '#E3E500',
              '#E6E600',
              '#E6E402',
              '#E6E204',
              '#E6E105',
              '#E6DF07',
              '#E6DD09',
              '#E6DC0B',
              '#E6DA0D',
              '#E6D90E',
              '#E6D710',
              '#E6D612',
              '#E7D414',
              '#E7D316',
              '#E7D217',
              '#E7D019',
              '#E7CF1B',
              '#E7CE1D',
              '#E7CD1F',
              '#E7CB21',
              '#E7CA22',
              '#E7C924',
              '#E8C826',
              '#E8C728',
              '#E8C62A',
              '#E8C52B',
              '#E8C42D',
              '#E8C32F',
              '#E8C231',
              '#E8C133',
              '#E8C035',
              '#E8BF36',
              '#E9BE38',
              '#E9BD3A',
              '#E9BC3C',
              '#E9BB3E',
              '#E9BB40',
              '#E9BA42',
              '#E9B943',
              '#E9B945',
              '#E9B847',
              '#E9B749',
              '#EAB74B',
              '#EAB64D',
              '#EAB64F',
              '#EAB550',
              '#EAB552',
              '#EAB454',
              '#EAB456',
              '#EAB358',
              '#EAB35A',
              '#EAB35C',
              '#EBB25D',
              '#EBB25F',
              '#EBB261',
              '#EBB263',
              '#EBB165',
              '#EBB167',
              '#EBB169',
              '#EBB16B',
              '#EBB16C',
              '#EBB16E',
              '#ECB170',
              '#ECB172',
              '#ECB174',
              '#ECB176',
              '#ECB178',
              '#ECB17A',
              '#ECB17C',
              '#ECB17E',
              '#ECB27F',
              '#ECB281',
              '#EDB283',
              '#EDB285',
              '#EDB387',
              '#EDB389',
              '#EDB38B',
              '#EDB48D',
              '#EDB48F',
              '#EDB591',
              '#EDB593',
              '#EDB694',
              '#EEB696',
              '#EEB798',
              '#EEB89A',
              '#EEB89C',
              '#EEB99E',
              '#EEBAA0',
              '#EEBAA2',
              '#EEBBA4',
              '#EEBCA6',
              '#EEBDA8',
              '#EFBEAA',
              '#EFBEAC',
              '#EFBFAD',
              '#EFC0AF',
              '#EFC1B1',
              '#EFC2B3',
              '#EFC3B5',
              '#EFC4B7',
              '#EFC5B9',
              '#EFC7BB',
              '#F0C8BD',
              '#F0C9BF',
              '#F0CAC1',
              '#F0CBC3',
              '#F0CDC5',
              '#F0CEC7',
              '#F0CFC9',
              '#F0D1CB',
              '#F0D2CD',
              '#F0D3CF',
              '#F1D5D1',
              '#F1D6D3',
              '#F1D8D5',
              '#F1D9D7',
              '#F1DBD8',
              '#F1DDDA',
              '#F1DEDC',
              '#F1E0DE',
              '#F1E2E0',
              '#F1E3E2',
              '#F2E5E4',
              '#F2E7E6',
              '#F2E9E8',
              '#F2EBEA',
              '#F2ECEC',
              '#F2EEEE',
              '#F2F0F0',
              '#F2F2F2',
            ],
          }
        // 裁切边界 let coord = [ [ [117.315375, 40.181212], [117.367916, 40.135762], [116.751758, 40.002595], [116.754136, 39.870341], [116.913383, 39.804999], [116.901858, 39.680614], [116.788145, 39.56255], [116.535646, 39.590346], [116.392103, 39.491124], [116.4293, 39.433841], [116.387072, 39.417336], [116.237232, 39.476253], [116.172242, 39.578854], [115.728745, 39.479123], [115.610225, 39.588658], [115.508537, 39.59137], [115.416399, 39.733407], [115.416624, 39.776734], [115.550565, 39.772964], [115.408433, 40.015829], [115.85422, 40.144999], [115.922315, 40.216777], [115.708758, 40.499032], [115.89819, 40.585919], [116.03778, 40.577909], [116.208725, 40.741562], [116.454984, 40.739689], [116.297615, 40.910402], [116.43816, 40.870116], [116.405424, 40.94854], [116.537137, 40.9661], [116.621495, 41.057333], [116.703349, 40.853574], [116.93405, 40.675155], [117.454502, 40.647216], [117.387854, 40.533274], [117.166811, 40.503979], [117.164198, 40.373887], [117.315375, 40.181212], ], ]
        // 数据源 var data = { features: [ { attributes: { FID: 0, id: 1, name: 'Beijing US Embassy', x: 116.468, y: 39.954999999999998, z: 46, xu: 454558.72859999997, yu: 4422898.159, }, geometry: { x: 116.468, y: 39.954999999999998, }, }, { attributes: { FID: 1, id: 2, name: 'Temple of Heaven', x: 116.407, y: 39.886000000000003, z: 36, xu: 449297.45990000002, yu: 4415272.716, }, geometry: { x: 116.407, y: 39.886000000000003, }, }, { attributes: { FID: 2, id: 3, name: 'Haidian Beijing Botanical Garden', x: 116.20699999999999, y: 40.002000000000002, z: 40, xu: 432311.35320000001, yu: 4428280.3169999998, }, geometry: { x: 116.20699999999999, y: 40.002000000000002, }, }, { attributes: { FID: 3, id: 4, name: 'Chaoyang Olympic Sports Center116.397', x: 116.39700000000001, y: 39.981999999999999, z: 43, xu: 448514.42090000003, yu: 4425933.4840000002, }, geometry: { x: 116.39700000000001, y: 39.981999999999999, }, }, { attributes: { FID: 4, id: 5, name: 'Chaoyang Agricultural Exhibition Hall', x: 116.461, y: 39.936999999999998, z: 52, xu: 453948.74660000001, yu: 4420903.926, }, geometry: { x: 116.461, y: 39.936999999999998, }, }, { attributes: { FID: 5, id: 6, name: 'Liangxiang', x: 116.136, y: 39.741999999999997, z: 123, xu: 425971.88909999997, yu: 4399479.2439999999, }, geometry: { x: 116.136, y: 39.741999999999997, }, }, { attributes: { FID: 6, id: 7, name: 'Fengtai Yungang', x: 116.146, y: 39.823999999999998, z: 85, xu: 426915.51539999997, yu: 4408572.0729999999, }, geometry: { x: 116.146, y: 39.823999999999998, }, }, { attributes: { FID: 7, id: 8, name: 'Shunyi New Town', x: 116.655, y: 40.127000000000002, z: 154, xu: 470605.50309999997, yu: 4441910.1670000004, }, geometry: { x: 116.655, y: 40.127000000000002, }, }, { attributes: { FID: 8, id: 12, name: 'Donggaocun Zhen', x: 117.12, y: 40.100000000000001, z: 172, xu: 510228.20750000002, yu: 4438863.2359999996, }, geometry: { x: 117.12, y: 40.100000000000001, }, }, { attributes: { FID: 9, id: 13, name: 'Tongzhou New Town', x: 116.663, y: 39.886000000000003, z: 216, xu: 471185.97159999999, yu: 4415158.7980000004, }, geometry: { x: 116.663, y: 39.886000000000003, }, }, { attributes: { FID: 10, id: 14, name: 'Huangcunzhen', x: 116.404, y: 39.718000000000004, z: 226, xu: 448916.78909999999, yu: 4396628.5209999997, }, geometry: { x: 116.404, y: 39.718000000000004, }, }, { attributes: { FID: 11, id: 15, name: 'BDA', x: 116.506, y: 39.795000000000002, z: 216, xu: 457706.38530000002, yu: 4405121.3250000002, }, geometry: { x: 116.506, y: 39.795000000000002, }, }, { attributes: { FID: 12, id: 16, name: 'Yufazhen', x: 116.3, y: 39.520000000000003, z: 204, xu: 439831.65490000002, yu: 4374718.0180000002, }, geometry: { x: 116.3, y: 39.520000000000003, }, }, { attributes: { FID: 13, id: 17, name: 'Yongledianzhen', x: 116.783, y: 39.712000000000003, z: 198, xu: 481399.35399999999, yu: 4395815.3370000003, }, geometry: { x: 116.783, y: 39.712000000000003, }, }, { attributes: { FID: 14, id: 18, name: 'Xianghe EPA', x: 117.009, y: 39.765999999999998, z: 204, xu: 500770.85320000001, yu: 4401786.0719999997, }, geometry: { x: 117.009, y: 39.765999999999998, }, }, { attributes: { FID: 15, id: 19, name: 'Badaling Northwest', x: 115.988, y: 40.365000000000002, z: 46, xu: 414076.95390000002, yu: 4468761.409, }, geometry: { x: 115.988, y: 40.365000000000002, }, }, { attributes: { FID: 16, id: 20, name: 'East Fourth Ring Road', x: 116.483, y: 39.939, z: 181, xu: 455829.68479999999, yu: 4421114.7860000003, }, geometry: { x: 116.483, y: 39.939, }, }, { attributes: { FID: 17, id: 21, name: 'Yanqing town', x: 115.97199999999999, y: 40.453000000000003, z: 59, xu: 412832.08510000003, yu: 4478545.159, }, geometry: { x: 115.97199999999999, y: 40.453000000000003, }, }, { attributes: { FID: 18, id: 22, name: 'Miyun Reservoir', x: 116.911, y: 40.499000000000002, z: 63, xu: 492458.57429999998, yu: 4483147.5360000003, }, geometry: { x: 116.911, y: 40.499000000000002, }, }, { attributes: { FID: 19, id: 23, name: 'Haidian Wanliu', x: 116.28700000000001, y: 39.987000000000002, z: 180, xu: 439126.71720000001, yu: 4426557.75, }, geometry: { x: 116.28700000000001, y: 39.987000000000002, }, }, { attributes: { FID: 20, id: 24, name: 'Yongdingmen Inner St', x: 116.39400000000001, y: 39.875999999999998, z: 196, xu: 448178.40250000003, yu: 4414170.284, }, geometry: { x: 116.39400000000001, y: 39.875999999999998, }, }, { attributes: { FID: 21, id: 25, name: 'Jianshe Road', x: 117.304, y: 39.719000000000001, z: 55, xu: 526055.42509999999, yu: 4396613.8959999997, }, geometry: { x: 117.304, y: 39.719000000000001, }, }, { attributes: { FID: 22, id: 26, name: 'Ligong, Chengde', x: 117.938, y: 41.011000000000003, z: 70, xu: 578874.61600000004, yu: 4540401.8559999997, }, geometry: { x: 117.938, y: 41.011000000000003, }, }, { attributes: { FID: 23, id: 27, name: 'Fengning County City Hall', x: 116.652, y: 41.215000000000003, z: 59, xu: 470827.95390000002, yu: 4562682.9199999999, }, geometry: { x: 116.652, y: 41.215000000000003, }, }, { attributes: { FID: 24, id: 28, name: 'Xiahuayuan EPA', x: 115.29600000000001, y: 40.508000000000003, z: 61, xu: 355627.29269999999, yu: 4485537.4510000004, }, geometry: { x: 115.29600000000001, y: 40.508000000000003, }, }, { attributes: { FID: 25, id: 29, name: 'Yuxian Secondary School', x: 114.596, y: 39.845999999999997, z: 61, xu: 294324.1188, yu: 4413430.4780000001, }, geometry: { x: 114.596, y: 39.845999999999997, }, }, { attributes: { FID: 26, id: 30, name: 'Zhouzhou Monitoring Stations', x: 116.03400000000001, y: 39.491999999999997, z: 80, xu: 416933.99089999998, yu: 4371822.0190000003, }, geometry: { x: 116.03400000000001, y: 39.491999999999997, }, }, { attributes: { FID: 27, id: 31, name: 'Guan Party School, Langfang', x: 116.30500000000001, y: 39.445, z: 70, xu: 440197.23119999998, yu: 4366391.0480000004, }, geometry: { x: 116.30500000000001, y: 39.445, }, }, { attributes: { FID: 28, id: 32, name: 'Guyuan County welfare', x: 115.681, y: 41.667999999999999, z: 63, xu: 390196.44390000001, yu: 4613756.0429999996, }, geometry: { x: 115.681, y: 41.667999999999999, }, }, ], } let WFSVectorSource = new VectorSource() let WFSVectorLayer = new LayerVec({ source: WFSVectorSource, }) _this.map.addLayer(WFSVectorLayer) for (let i = 0; i
    < data.features.length; i++) { let feature = new Feature({ geometry: new Point([data.features[i].attributes.x, data.features[i].attributes.y]), value: data.features[i].attributes.z, }) feature.setStyle( new Style({ image: new Circle({ radius: 6, fill: new Fill({ color: '#00F', }), }), }), ) WFSVectorSource.addFeature(feature) } let clipgeom = new Polygon(coord) //绘制kriging插值图 let drawKriging = function(extent) { let values = [], lngs = [], lats = [] WFSVectorSource.forEachFeature(function(feature) { values.push(feature.getProperties().value) lngs.push(feature.getGeometry().getCoordinates()[0]) lats.push(feature.getGeometry().getCoordinates()[1]) }) if (values.length > 3) { let letiogram = kriging.train( values, lngs, lats, params.krigingModel, params.krigingSigma2, params.krigingAlpha, ) let ex = clipgeom.getExtent() let grid = kriging.grid(coord, letiogram, (ex[2] - ex[0]) / 200) //移除已有图层 if (_this.canvasLayer !== null) { _this.map.removeLayer(_this.canvasLayer) } //创建新图层 _this.canvasLayer = new Image({ source: new ImageCanvas({ canvasFunction: (extent, resolution, pixelRatio, size, projection) => { let canvas = document.createElement('canvas') canvas.width = size[0] canvas.height = size[1] canvas.style.display = 'block' //设置canvas透明度 canvas.getContext('2d').globalAlpha = params.canvasAlpha //使用分层设色渲染 kriging.plot(canvas, grid, [extent[0], extent[2]], [extent[1], extent[3]], params.colors) return canvas }, projection: 'EPSG:4326', }), }) //向map添加图层 _this.map.addLayer(_this.canvasLayer) _this.onKriging = false _this.$message({ type: 'success', message: '开启热力图成功!', }) } else { alert('样点少,无法插值') } } //首次加载,自动渲染一次差值图 let extent = clipgeom.getExtent() drawKriging(extent) },

    这是demo,实际使用过程中,需要在data中定义map,canvasLayer为null,地图为openlayers,需要安装openlayers, npm i ol --save

    Kriging.js地址:https://blog-static.cnblogs.com/files/lyt520/kriging.js

  • 相关阅读:
    iOS开发_微信支付接入报错 +[WXOMTAHelper GUnzip:Out:] in libWeChatSDK.a(MTAHelper.o)
    iOS开发_适配深色模式
    Apple开发_emoji符号含义
    iOS开发_程序闪退的原因以及处理办法
    iOS开发_does not contain bitcode.”的错误解决办法
    Apple开发_限制平板应用运行在mac上窗口的尺寸
    Apple开发_计算一个字符串中包含几个目标子字符串
    OpenCV 简单使用
    效率工具
    win10 安装u8 11.0遇到的问题
  • 原文地址:https://www.cnblogs.com/lyt520/p/14096856.html
Copyright © 2020-2023  润新知